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: 20% }
47    .th_description { width: 20% }
48    .th_range { width: 10% }
49    td { font-size: 0.9em; }
50
51    /* hide the first thead, we need it there only to enforce column sizes */
52    .thead_dummy { visibility: hidden; }
53
54    /* Entry flair */
55    .entry_name { color: #333333; padding-left:1.0em; font-size:1.1em; font-family: monospace; vertical-align:top; }
56    .entry_name_deprecated { text-decoration:line-through; }
57
58    /* Entry type flair */
59    .entry_type_name { font-size:1.1em; color: #669900; font-weight: bold;}
60    .entry_type_name_enum:after { color: #669900; font-weight: bold; content:" (enum)" }
61    .entry_type_visibility { font-weight: bolder; padding-left:1em}
62    .entry_type_synthetic { font-weight: bolder; color: #996600; }
63    .entry_type_hwlevel { font-weight: bolder; color: #000066; }
64    .entry_type_deprecated { font-weight: bolder; color: #4D4D4D; }
65    .entry_type_enum_name { font-family: monospace; font-weight: bolder; }
66    .entry_type_enum_notes:before { content:" - " }
67    .entry_type_enum_notes>p:first-child { display:inline; }
68    .entry_type_enum_value:before { content:" = " }
69    .entry_type_enum_value { font-family: monospace; }
70    .entry ul { margin: 0 0 0 0; list-style-position: inside; padding-left: 0.5em; }
71    .entry ul li { padding: 0 0 0 0; margin: 0 0 0 0;}
72    .entry_range_deprecated { font-weight: bolder; }
73
74    /* Entry tags flair */
75    .entry_tags ul { list-style-type: none; }
76
77    /* Entry details (full docs) flair */
78    .entry_details_header { font-weight: bold; background-color: #dddddd;
79      text-align: center; font-size: 1.1em; margin-left: 0em; margin-right: 0em; }
80
81    /* Entry spacer flair */
82    .entry_spacer { background-color: transparent; border-style: none; height: 0.5em; }
83
84    /* TODO: generate abbr element for each tag link? */
85    /* TODO for each x.y.z try to link it to the entry */
86
87  </style>
88
89  <style>
90
91    {
92      /* broken...
93         supposedly there is a bug in chrome that it lays out tables before
94         it knows its being printed, so the page-break-* styles are ignored
95         */
96        tr { page-break-after: always; page-break-inside: avoid; }
97    }
98
99  </style>
100</head>
101
102
103
104<body>
105  <h1>Android Camera HAL3.2 Properties</h1>
106
107
108  <h2>Table of Contents</h2>
109  <ul class="toc">
110    <li><a href="#tag_index" class="toc_section_header">Tags</a></li>
111    <li>
112      <span class="toc_section_header"><a href="#section_colorCorrection">colorCorrection</a></span>
113      <ul class="toc_section">
114        <li>
115          <span class="toc_kind_header">controls</span>
116          <ul class="toc_section">
117            <li
118            ><a href="#controls_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
119            <li
120            ><a href="#controls_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
121            <li
122            ><a href="#controls_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
123            <li
124            ><a href="#controls_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
125          </ul>
126        </li>
127        <li>
128          <span class="toc_kind_header">dynamic</span>
129          <ul class="toc_section">
130            <li
131            ><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
132            <li
133            ><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
134            <li
135            ><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
136            <li
137            ><a href="#dynamic_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
138          </ul>
139        </li>
140        <li>
141          <span class="toc_kind_header">static</span>
142          <ul class="toc_section">
143            <li
144            ><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a></li>
145          </ul>
146        </li>
147      </ul> <!-- toc_section -->
148    </li>
149    <li>
150      <span class="toc_section_header"><a href="#section_control">control</a></span>
151      <ul class="toc_section">
152        <li>
153          <span class="toc_kind_header">controls</span>
154          <ul class="toc_section">
155            <li
156            ><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
157            <li
158            ><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
159            <li
160            ><a href="#controls_android.control.aeLock">android.control.aeLock</a></li>
161            <li
162            ><a href="#controls_android.control.aeMode">android.control.aeMode</a></li>
163            <li
164            ><a href="#controls_android.control.aeRegions">android.control.aeRegions</a></li>
165            <li
166            ><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
167            <li
168            ><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
169            <li
170            ><a href="#controls_android.control.afMode">android.control.afMode</a></li>
171            <li
172            ><a href="#controls_android.control.afRegions">android.control.afRegions</a></li>
173            <li
174            ><a href="#controls_android.control.afTrigger">android.control.afTrigger</a></li>
175            <li
176            ><a href="#controls_android.control.awbLock">android.control.awbLock</a></li>
177            <li
178            ><a href="#controls_android.control.awbMode">android.control.awbMode</a></li>
179            <li
180            ><a href="#controls_android.control.awbRegions">android.control.awbRegions</a></li>
181            <li
182            ><a href="#controls_android.control.captureIntent">android.control.captureIntent</a></li>
183            <li
184            ><a href="#controls_android.control.effectMode">android.control.effectMode</a></li>
185            <li
186            ><a href="#controls_android.control.mode">android.control.mode</a></li>
187            <li
188            ><a href="#controls_android.control.sceneMode">android.control.sceneMode</a></li>
189            <li
190            ><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
191            <li
192            ><a href="#controls_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
193            <li
194            ><a href="#controls_android.control.enableZsl">android.control.enableZsl</a></li>
195          </ul>
196        </li>
197        <li>
198          <span class="toc_kind_header">static</span>
199          <ul class="toc_section">
200            <li
201            ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li>
202            <li
203            ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li>
204            <li
205            ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li>
206            <li
207            ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li>
208            <li
209            ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li>
210            <li
211            ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li>
212            <li
213            ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li>
214            <li
215            ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li>
216            <li
217            ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li>
218            <li
219            ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li>
220            <li
221            ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li>
222            <li
223            ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li>
224            <li
225            ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li>
226            <li
227            ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li>
228            <li
229            ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li>
230            <li
231            ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li>
232            <li
233            ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li>
234            <li
235            ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li>
236            <li
237            ><a href="#static_android.control.availableModes">android.control.availableModes</a></li>
238            <li
239            ><a href="#static_android.control.postRawSensitivityBoostRange">android.control.postRawSensitivityBoostRange</a></li>
240          </ul>
241        </li>
242        <li>
243          <span class="toc_kind_header">dynamic</span>
244          <ul class="toc_section">
245            <li
246                class="toc_deprecated"
247            ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li>
248            <li
249            ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
250            <li
251            ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
252            <li
253            ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li>
254            <li
255            ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li>
256            <li
257            ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li>
258            <li
259            ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
260            <li
261            ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
262            <li
263            ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li>
264            <li
265            ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li>
266            <li
267            ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li>
268            <li
269            ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li>
270            <li
271            ><a href="#dynamic_android.control.afState">android.control.afState</a></li>
272            <li
273                class="toc_deprecated"
274            ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li>
275            <li
276            ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li>
277            <li
278            ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li>
279            <li
280            ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li>
281            <li
282            ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li>
283            <li
284            ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li>
285            <li
286            ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li>
287            <li
288            ><a href="#dynamic_android.control.mode">android.control.mode</a></li>
289            <li
290            ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li>
291            <li
292            ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
293            <li
294            ><a href="#dynamic_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
295            <li
296            ><a href="#dynamic_android.control.enableZsl">android.control.enableZsl</a></li>
297          </ul>
298        </li>
299      </ul> <!-- toc_section -->
300    </li>
301    <li>
302      <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span>
303      <ul class="toc_section">
304        <li>
305          <span class="toc_kind_header">controls</span>
306          <ul class="toc_section">
307            <li
308            ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li>
309          </ul>
310        </li>
311      </ul> <!-- toc_section -->
312    </li>
313    <li>
314      <span class="toc_section_header"><a href="#section_edge">edge</a></span>
315      <ul class="toc_section">
316        <li>
317          <span class="toc_kind_header">controls</span>
318          <ul class="toc_section">
319            <li
320            ><a href="#controls_android.edge.mode">android.edge.mode</a></li>
321            <li
322            ><a href="#controls_android.edge.strength">android.edge.strength</a></li>
323          </ul>
324        </li>
325        <li>
326          <span class="toc_kind_header">static</span>
327          <ul class="toc_section">
328            <li
329            ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li>
330          </ul>
331        </li>
332        <li>
333          <span class="toc_kind_header">dynamic</span>
334          <ul class="toc_section">
335            <li
336            ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li>
337          </ul>
338        </li>
339      </ul> <!-- toc_section -->
340    </li>
341    <li>
342      <span class="toc_section_header"><a href="#section_flash">flash</a></span>
343      <ul class="toc_section">
344        <li>
345          <span class="toc_kind_header">controls</span>
346          <ul class="toc_section">
347            <li
348            ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li>
349            <li
350            ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li>
351            <li
352            ><a href="#controls_android.flash.mode">android.flash.mode</a></li>
353          </ul>
354        </li>
355        <li>
356          <span class="toc_kind_header">static</span>
357          <ul class="toc_section">
358
359            <li
360            ><a href="#static_android.flash.info.available">android.flash.info.available</a></li>
361            <li
362            ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li>
363
364            <li
365            ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li>
366            <li
367            ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li>
368          </ul>
369        </li>
370        <li>
371          <span class="toc_kind_header">dynamic</span>
372          <ul class="toc_section">
373            <li
374            ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li>
375            <li
376            ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li>
377            <li
378            ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li>
379            <li
380            ><a href="#dynamic_android.flash.state">android.flash.state</a></li>
381          </ul>
382        </li>
383      </ul> <!-- toc_section -->
384    </li>
385    <li>
386      <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span>
387      <ul class="toc_section">
388        <li>
389          <span class="toc_kind_header">controls</span>
390          <ul class="toc_section">
391            <li
392            ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li>
393          </ul>
394        </li>
395        <li>
396          <span class="toc_kind_header">static</span>
397          <ul class="toc_section">
398            <li
399            ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li>
400          </ul>
401        </li>
402        <li>
403          <span class="toc_kind_header">dynamic</span>
404          <ul class="toc_section">
405            <li
406            ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li>
407          </ul>
408        </li>
409      </ul> <!-- toc_section -->
410    </li>
411    <li>
412      <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span>
413      <ul class="toc_section">
414        <li>
415          <span class="toc_kind_header">controls</span>
416          <ul class="toc_section">
417            <li
418            ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
419            <li
420            ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
421            <li
422            ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
423            <li
424            ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
425            <li
426            ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li>
427            <li
428            ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li>
429            <li
430            ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
431            <li
432            ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
433          </ul>
434        </li>
435        <li>
436          <span class="toc_kind_header">static</span>
437          <ul class="toc_section">
438            <li
439            ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li>
440            <li
441            ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li>
442          </ul>
443        </li>
444        <li>
445          <span class="toc_kind_header">dynamic</span>
446          <ul class="toc_section">
447            <li
448            ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
449            <li
450            ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
451            <li
452            ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
453            <li
454            ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
455            <li
456            ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li>
457            <li
458            ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li>
459            <li
460            ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li>
461            <li
462            ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
463            <li
464            ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
465          </ul>
466        </li>
467      </ul> <!-- toc_section -->
468    </li>
469    <li>
470      <span class="toc_section_header"><a href="#section_lens">lens</a></span>
471      <ul class="toc_section">
472        <li>
473          <span class="toc_kind_header">controls</span>
474          <ul class="toc_section">
475            <li
476            ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li>
477            <li
478            ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li>
479            <li
480            ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li>
481            <li
482            ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li>
483            <li
484            ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
485          </ul>
486        </li>
487        <li>
488          <span class="toc_kind_header">static</span>
489          <ul class="toc_section">
490
491            <li
492            ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li>
493            <li
494            ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li>
495            <li
496            ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li>
497            <li
498            ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li>
499            <li
500            ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li>
501            <li
502            ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li>
503            <li
504            ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li>
505            <li
506            ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li>
507
508            <li
509            ><a href="#static_android.lens.facing">android.lens.facing</a></li>
510            <li
511            ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li>
512            <li
513            ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
514            <li
515            ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
516            <li
517            ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
518          </ul>
519        </li>
520        <li>
521          <span class="toc_kind_header">dynamic</span>
522          <ul class="toc_section">
523            <li
524            ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li>
525            <li
526            ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li>
527            <li
528            ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li>
529            <li
530            ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li>
531            <li
532            ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li>
533            <li
534            ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
535            <li
536            ><a href="#dynamic_android.lens.state">android.lens.state</a></li>
537            <li
538            ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li>
539            <li
540            ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
541            <li
542            ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
543            <li
544            ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
545          </ul>
546        </li>
547      </ul> <!-- toc_section -->
548    </li>
549    <li>
550      <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span>
551      <ul class="toc_section">
552        <li>
553          <span class="toc_kind_header">controls</span>
554          <ul class="toc_section">
555            <li
556            ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
557            <li
558            ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li>
559          </ul>
560        </li>
561        <li>
562          <span class="toc_kind_header">static</span>
563          <ul class="toc_section">
564            <li
565            ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li>
566          </ul>
567        </li>
568        <li>
569          <span class="toc_kind_header">dynamic</span>
570          <ul class="toc_section">
571            <li
572            ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
573          </ul>
574        </li>
575      </ul> <!-- toc_section -->
576    </li>
577    <li>
578      <span class="toc_section_header"><a href="#section_quirks">quirks</a></span>
579      <ul class="toc_section">
580        <li>
581          <span class="toc_kind_header">static</span>
582          <ul class="toc_section">
583            <li
584                class="toc_deprecated"
585            ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li>
586            <li
587                class="toc_deprecated"
588            ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li>
589            <li
590                class="toc_deprecated"
591            ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li>
592            <li
593                class="toc_deprecated"
594            ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li>
595          </ul>
596        </li>
597        <li>
598          <span class="toc_kind_header">dynamic</span>
599          <ul class="toc_section">
600            <li
601                class="toc_deprecated"
602            ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li>
603          </ul>
604        </li>
605      </ul> <!-- toc_section -->
606    </li>
607    <li>
608      <span class="toc_section_header"><a href="#section_request">request</a></span>
609      <ul class="toc_section">
610        <li>
611          <span class="toc_kind_header">controls</span>
612          <ul class="toc_section">
613            <li
614                class="toc_deprecated"
615            ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li>
616            <li
617            ><a href="#controls_android.request.id">android.request.id</a></li>
618            <li
619                class="toc_deprecated"
620            ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li>
621            <li
622            ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li>
623            <li
624                class="toc_deprecated"
625            ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li>
626            <li
627                class="toc_deprecated"
628            ><a href="#controls_android.request.type">android.request.type</a></li>
629          </ul>
630        </li>
631        <li>
632          <span class="toc_kind_header">static</span>
633          <ul class="toc_section">
634            <li
635            ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li>
636            <li
637            ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li>
638            <li
639            ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li>
640            <li
641            ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li>
642            <li
643                class="toc_deprecated"
644            ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li>
645            <li
646            ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li>
647            <li
648            ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li>
649            <li
650            ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li>
651            <li
652            ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li>
653            <li
654            ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li>
655            <li
656            ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
657            <li
658            ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
659          </ul>
660        </li>
661        <li>
662          <span class="toc_kind_header">dynamic</span>
663          <ul class="toc_section">
664            <li
665                class="toc_deprecated"
666            ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li>
667            <li
668            ><a href="#dynamic_android.request.id">android.request.id</a></li>
669            <li
670            ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li>
671            <li
672                class="toc_deprecated"
673            ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li>
674            <li
675            ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li>
676          </ul>
677        </li>
678      </ul> <!-- toc_section -->
679    </li>
680    <li>
681      <span class="toc_section_header"><a href="#section_scaler">scaler</a></span>
682      <ul class="toc_section">
683        <li>
684          <span class="toc_kind_header">controls</span>
685          <ul class="toc_section">
686            <li
687            ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
688          </ul>
689        </li>
690        <li>
691          <span class="toc_kind_header">static</span>
692          <ul class="toc_section">
693            <li
694                class="toc_deprecated"
695            ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li>
696            <li
697                class="toc_deprecated"
698            ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li>
699            <li
700                class="toc_deprecated"
701            ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li>
702            <li
703            ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li>
704            <li
705                class="toc_deprecated"
706            ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li>
707            <li
708                class="toc_deprecated"
709            ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li>
710            <li
711                class="toc_deprecated"
712            ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li>
713            <li
714                class="toc_deprecated"
715            ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li>
716            <li
717            ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li>
718            <li
719            ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li>
720            <li
721            ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li>
722            <li
723            ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li>
724            <li
725            ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li>
726            <li
727            ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li>
728          </ul>
729        </li>
730        <li>
731          <span class="toc_kind_header">dynamic</span>
732          <ul class="toc_section">
733            <li
734            ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
735          </ul>
736        </li>
737      </ul> <!-- toc_section -->
738    </li>
739    <li>
740      <span class="toc_section_header"><a href="#section_sensor">sensor</a></span>
741      <ul class="toc_section">
742        <li>
743          <span class="toc_kind_header">controls</span>
744          <ul class="toc_section">
745            <li
746            ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
747            <li
748            ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
749            <li
750            ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
751            <li
752            ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
753            <li
754            ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
755          </ul>
756        </li>
757        <li>
758          <span class="toc_kind_header">static</span>
759          <ul class="toc_section">
760
761            <li
762            ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
763            <li
764            ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
765            <li
766            ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
767            <li
768            ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
769            <li
770            ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
771            <li
772            ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li>
773            <li
774            ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li>
775            <li
776            ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li>
777            <li
778            ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li>
779            <li
780            ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li>
781            <li
782            ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li>
783
784            <li
785            ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
786            <li
787            ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
788            <li
789            ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
790            <li
791            ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
792            <li
793            ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
794            <li
795            ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
796            <li
797            ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
798            <li
799            ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
800            <li
801            ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
802            <li
803            ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
804            <li
805            ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
806            <li
807            ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
808            <li
809            ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
810            <li
811            ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
812            <li
813            ><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li>
814            <li
815            ><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li>
816          </ul>
817        </li>
818        <li>
819          <span class="toc_kind_header">dynamic</span>
820          <ul class="toc_section">
821            <li
822            ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
823            <li
824            ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
825            <li
826            ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
827            <li
828            ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
829            <li
830            ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
831            <li
832            ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
833            <li
834            ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
835            <li
836            ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
837            <li
838            ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
839            <li
840            ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
841            <li
842            ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
843            <li
844            ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
845            <li
846            ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
847            <li
848            ><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li>
849            <li
850            ><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li>
851          </ul>
852        </li>
853      </ul> <!-- toc_section -->
854    </li>
855    <li>
856      <span class="toc_section_header"><a href="#section_shading">shading</a></span>
857      <ul class="toc_section">
858        <li>
859          <span class="toc_kind_header">controls</span>
860          <ul class="toc_section">
861            <li
862            ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
863            <li
864            ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
865          </ul>
866        </li>
867        <li>
868          <span class="toc_kind_header">dynamic</span>
869          <ul class="toc_section">
870            <li
871            ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
872          </ul>
873        </li>
874        <li>
875          <span class="toc_kind_header">static</span>
876          <ul class="toc_section">
877            <li
878            ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li>
879          </ul>
880        </li>
881      </ul> <!-- toc_section -->
882    </li>
883    <li>
884      <span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
885      <ul class="toc_section">
886        <li>
887          <span class="toc_kind_header">controls</span>
888          <ul class="toc_section">
889            <li
890            ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
891            <li
892            ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
893            <li
894            ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
895            <li
896            ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
897            <li
898            ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
899          </ul>
900        </li>
901        <li>
902          <span class="toc_kind_header">static</span>
903          <ul class="toc_section">
904
905            <li
906            ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
907            <li
908            ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
909            <li
910            ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
911            <li
912            ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
913            <li
914            ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
915            <li
916            ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
917            <li
918            ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
919            <li
920            ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
921
922          </ul>
923        </li>
924        <li>
925          <span class="toc_kind_header">dynamic</span>
926          <ul class="toc_section">
927            <li
928            ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
929            <li
930            ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
931            <li
932            ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
933            <li
934            ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
935            <li
936            ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
937            <li
938            ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
939            <li
940            ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
941            <li
942            ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
943            <li
944            ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
945            <li
946            ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
947            <li
948            ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
949            <li
950            ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
951            <li
952                class="toc_deprecated"
953            ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
954            <li
955                class="toc_deprecated"
956            ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
957            <li
958            ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
959            <li
960            ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
961            <li
962            ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
963            <li
964            ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
965          </ul>
966        </li>
967      </ul> <!-- toc_section -->
968    </li>
969    <li>
970      <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
971      <ul class="toc_section">
972        <li>
973          <span class="toc_kind_header">controls</span>
974          <ul class="toc_section">
975            <li
976            ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
977            <li
978            ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
979            <li
980            ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
981            <li
982            ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
983            <li
984            ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
985            <li
986            ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li>
987            <li
988            ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
989          </ul>
990        </li>
991        <li>
992          <span class="toc_kind_header">static</span>
993          <ul class="toc_section">
994            <li
995            ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
996            <li
997            ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
998          </ul>
999        </li>
1000        <li>
1001          <span class="toc_kind_header">dynamic</span>
1002          <ul class="toc_section">
1003            <li
1004            ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
1005            <li
1006            ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1007            <li
1008            ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1009            <li
1010            ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
1011            <li
1012            ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
1013            <li
1014            ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li>
1015            <li
1016            ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1017          </ul>
1018        </li>
1019      </ul> <!-- toc_section -->
1020    </li>
1021    <li>
1022      <span class="toc_section_header"><a href="#section_led">led</a></span>
1023      <ul class="toc_section">
1024        <li>
1025          <span class="toc_kind_header">controls</span>
1026          <ul class="toc_section">
1027            <li
1028            ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
1029          </ul>
1030        </li>
1031        <li>
1032          <span class="toc_kind_header">dynamic</span>
1033          <ul class="toc_section">
1034            <li
1035            ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
1036          </ul>
1037        </li>
1038        <li>
1039          <span class="toc_kind_header">static</span>
1040          <ul class="toc_section">
1041            <li
1042            ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
1043          </ul>
1044        </li>
1045      </ul> <!-- toc_section -->
1046    </li>
1047    <li>
1048      <span class="toc_section_header"><a href="#section_info">info</a></span>
1049      <ul class="toc_section">
1050        <li>
1051          <span class="toc_kind_header">static</span>
1052          <ul class="toc_section">
1053            <li
1054            ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
1055          </ul>
1056        </li>
1057      </ul> <!-- toc_section -->
1058    </li>
1059    <li>
1060      <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
1061      <ul class="toc_section">
1062        <li>
1063          <span class="toc_kind_header">controls</span>
1064          <ul class="toc_section">
1065            <li
1066            ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
1067          </ul>
1068        </li>
1069        <li>
1070          <span class="toc_kind_header">dynamic</span>
1071          <ul class="toc_section">
1072            <li
1073            ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
1074          </ul>
1075        </li>
1076      </ul> <!-- toc_section -->
1077    </li>
1078    <li>
1079      <span class="toc_section_header"><a href="#section_sync">sync</a></span>
1080      <ul class="toc_section">
1081        <li>
1082          <span class="toc_kind_header">dynamic</span>
1083          <ul class="toc_section">
1084            <li
1085            ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
1086          </ul>
1087        </li>
1088        <li>
1089          <span class="toc_kind_header">static</span>
1090          <ul class="toc_section">
1091            <li
1092            ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
1093          </ul>
1094        </li>
1095      </ul> <!-- toc_section -->
1096    </li>
1097    <li>
1098      <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span>
1099      <ul class="toc_section">
1100        <li>
1101          <span class="toc_kind_header">controls</span>
1102          <ul class="toc_section">
1103            <li
1104            ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1105          </ul>
1106        </li>
1107        <li>
1108          <span class="toc_kind_header">dynamic</span>
1109          <ul class="toc_section">
1110            <li
1111            ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1112          </ul>
1113        </li>
1114        <li>
1115          <span class="toc_kind_header">static</span>
1116          <ul class="toc_section">
1117            <li
1118            ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li>
1119          </ul>
1120        </li>
1121      </ul> <!-- toc_section -->
1122    </li>
1123    <li>
1124      <span class="toc_section_header"><a href="#section_depth">depth</a></span>
1125      <ul class="toc_section">
1126        <li>
1127          <span class="toc_kind_header">static</span>
1128          <ul class="toc_section">
1129            <li
1130            ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li>
1131            <li
1132            ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li>
1133            <li
1134            ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li>
1135            <li
1136            ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li>
1137            <li
1138            ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li>
1139          </ul>
1140        </li>
1141      </ul> <!-- toc_section -->
1142    </li>
1143  </ul>
1144
1145
1146  <h1>Properties</h1>
1147  <table class="properties">
1148
1149    <thead class="thead_dummy">
1150      <tr>
1151        <th class="th_name">Property Name</th>
1152        <th class="th_type">Type</th>
1153        <th class="th_description">Description</th>
1154        <th class="th_units">Units</th>
1155        <th class="th_range">Range</th>
1156        <th class="th_tags">Tags</th>
1157      </tr>
1158    </thead> <!-- so that the first occurrence of thead is not
1159                         above the first occurrence of tr -->
1160<!-- <namespace name="android"> -->
1161  <tr><td colspan="6" id="section_colorCorrection" class="section">colorCorrection</td></tr>
1162
1163
1164      <tr><td colspan="6" class="kind">controls</td></tr>
1165
1166      <thead class="entries_header">
1167        <tr>
1168          <th class="th_name">Property Name</th>
1169          <th class="th_type">Type</th>
1170          <th class="th_description">Description</th>
1171          <th class="th_units">Units</th>
1172          <th class="th_range">Range</th>
1173          <th class="th_tags">Tags</th>
1174        </tr>
1175      </thead>
1176
1177      <tbody>
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188          <tr class="entry" id="controls_android.colorCorrection.mode">
1189            <td class="entry_name
1190             " rowspan="5">
1191              android.<wbr/>color<wbr/>Correction.<wbr/>mode
1192            </td>
1193            <td class="entry_type">
1194                <span class="entry_type_name entry_type_name_enum">byte</span>
1195
1196              <span class="entry_type_visibility"> [public]</span>
1197
1198
1199              <span class="entry_type_hwlevel">[full] </span>
1200
1201
1202
1203                <ul class="entry_type_enum">
1204                  <li>
1205                    <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1206                    <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1207and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1208<p>All advanced white balance adjustments (not specified
1209by our white balance pipeline) must be disabled.<wbr/></p>
1210<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
1211TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1212this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1213                  </li>
1214                  <li>
1215                    <span class="entry_type_enum_name">FAST</span>
1216                    <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1217capture rate relative to sensor raw output.<wbr/></p>
1218<p>Advanced white balance adjustments above and beyond
1219the specified white balance pipeline may be applied.<wbr/></p>
1220<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
1221the camera device uses the last frame's AWB values
1222(or defaults if AWB has never been run).<wbr/></p></span>
1223                  </li>
1224                  <li>
1225                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1226                    <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1227quality but the capture rate might be reduced (relative to sensor
1228raw output rate)</p>
1229<p>Advanced white balance adjustments above and beyond
1230the specified white balance pipeline may be applied.<wbr/></p>
1231<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
1232the camera device uses the last frame's AWB values
1233(or defaults if AWB has never been run).<wbr/></p></span>
1234                  </li>
1235                </ul>
1236
1237            </td> <!-- entry_type -->
1238
1239            <td class="entry_description">
1240              <p>The mode control selects how the image data is converted from the
1241sensor's native color into linear sRGB color.<wbr/></p>
1242            </td>
1243
1244            <td class="entry_units">
1245            </td>
1246
1247            <td class="entry_range">
1248            </td>
1249
1250            <td class="entry_tags">
1251            </td>
1252
1253          </tr>
1254          <tr class="entries_header">
1255            <th class="th_details" colspan="5">Details</th>
1256          </tr>
1257          <tr class="entry_cont">
1258            <td class="entry_details" colspan="5">
1259              <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
1260control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1261application controls how the color mapping is performed.<wbr/></p>
1262<p>We define the expected processing pipeline below.<wbr/> For consistency
1263across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1264<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1265do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1266<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1267camera device (in the results) and be roughly correct.<wbr/></p>
1268<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1269FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1270as what was produced by the camera device in the earlier frame.<wbr/></p>
1271<p>The expected processing pipeline is as follows:</p>
1272<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1273<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1274gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1275matrix (applied after demosaic).<wbr/></p>
1276<p>The 4-channel white-balance gains are defined as:</p>
1277<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1278</code></pre>
1279<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1280output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1281These may be identical for a given camera device implementation; if
1282the camera device does not support a separate gain for even/<wbr/>odd green
1283channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1284<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1285<p>The matrices for color transforms are defined as a 9-entry vector:</p>
1286<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 ]
1287</code></pre>
1288<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1289to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1290<p>with colors as follows:</p>
1291<pre><code>r' = I0r + I1g + I2b
1292g' = I3r + I4g + I5b
1293b' = I6r + I7g + I8b
1294</code></pre>
1295<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1296values are clipped to fit within the range.<wbr/></p>
1297            </td>
1298          </tr>
1299
1300          <tr class="entries_header">
1301            <th class="th_details" colspan="5">HAL Implementation Details</th>
1302          </tr>
1303          <tr class="entry_cont">
1304            <td class="entry_details" colspan="5">
1305              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1306on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1307That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1308capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1309            </td>
1310          </tr>
1311
1312          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1313           <!-- end of entry -->
1314
1315
1316          <tr class="entry" id="controls_android.colorCorrection.transform">
1317            <td class="entry_name
1318             " rowspan="3">
1319              android.<wbr/>color<wbr/>Correction.<wbr/>transform
1320            </td>
1321            <td class="entry_type">
1322                <span class="entry_type_name">rational</span>
1323                <span class="entry_type_container">x</span>
1324
1325                <span class="entry_type_array">
1326                  3 x 3
1327                </span>
1328              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1329
1330
1331              <span class="entry_type_hwlevel">[full] </span>
1332
1333
1334                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1335
1336
1337            </td> <!-- entry_type -->
1338
1339            <td class="entry_description">
1340              <p>A color transform matrix to use to transform
1341from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1342            </td>
1343
1344            <td class="entry_units">
1345              Unitless scale factors
1346            </td>
1347
1348            <td class="entry_range">
1349            </td>
1350
1351            <td class="entry_tags">
1352            </td>
1353
1354          </tr>
1355          <tr class="entries_header">
1356            <th class="th_details" colspan="5">Details</th>
1357          </tr>
1358          <tr class="entry_cont">
1359            <td class="entry_details" colspan="5">
1360              <p>This matrix is either set by the camera device when the request
1361<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1362directly by the application in the request when the
1363<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1364<p>In the latter case,<wbr/> the camera device may round the matrix to account
1365for precision issues; the final rounded matrix should be reported back
1366in this matrix result metadata.<wbr/> The transform should keep the magnitude
1367of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1368values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1369<p>The valid range of each matrix element varies on different devices,<wbr/> but
1370values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1371            </td>
1372          </tr>
1373
1374
1375          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1376           <!-- end of entry -->
1377
1378
1379          <tr class="entry" id="controls_android.colorCorrection.gains">
1380            <td class="entry_name
1381             " rowspan="5">
1382              android.<wbr/>color<wbr/>Correction.<wbr/>gains
1383            </td>
1384            <td class="entry_type">
1385                <span class="entry_type_name">float</span>
1386                <span class="entry_type_container">x</span>
1387
1388                <span class="entry_type_array">
1389                  4
1390                </span>
1391              <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1392
1393
1394              <span class="entry_type_hwlevel">[full] </span>
1395
1396
1397                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1398
1399
1400            </td> <!-- entry_type -->
1401
1402            <td class="entry_description">
1403              <p>Gains applying to Bayer raw color channels for
1404white-balance.<wbr/></p>
1405            </td>
1406
1407            <td class="entry_units">
1408              Unitless gain factors
1409            </td>
1410
1411            <td class="entry_range">
1412            </td>
1413
1414            <td class="entry_tags">
1415            </td>
1416
1417          </tr>
1418          <tr class="entries_header">
1419            <th class="th_details" colspan="5">Details</th>
1420          </tr>
1421          <tr class="entry_cont">
1422            <td class="entry_details" colspan="5">
1423              <p>These per-channel gains are either set by the camera device
1424when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1425TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1426request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1427TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1428<p>The gains in the result metadata are the gains actually
1429applied by the camera device to the current frame.<wbr/></p>
1430<p>The valid range of gains varies on different devices,<wbr/> but gains
1431between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1432device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1433this can create color artifacts.<wbr/></p>
1434            </td>
1435          </tr>
1436
1437          <tr class="entries_header">
1438            <th class="th_details" colspan="5">HAL Implementation Details</th>
1439          </tr>
1440          <tr class="entry_cont">
1441            <td class="entry_details" colspan="5">
1442              <p>The 4-channel white-balance gains are defined in
1443the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1444for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1445is the gain for green pixels on the odd rows.<wbr/></p>
1446<p>If a HAL does not support a separate gain for even/<wbr/>odd green
1447channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1448<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1449            </td>
1450          </tr>
1451
1452          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1453           <!-- end of entry -->
1454
1455
1456          <tr class="entry" id="controls_android.colorCorrection.aberrationMode">
1457            <td class="entry_name
1458             " rowspan="3">
1459              android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1460            </td>
1461            <td class="entry_type">
1462                <span class="entry_type_name entry_type_name_enum">byte</span>
1463
1464              <span class="entry_type_visibility"> [public]</span>
1465
1466
1467              <span class="entry_type_hwlevel">[legacy] </span>
1468
1469
1470
1471                <ul class="entry_type_enum">
1472                  <li>
1473                    <span class="entry_type_enum_name">OFF</span>
1474                    <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1475                  </li>
1476                  <li>
1477                    <span class="entry_type_enum_name">FAST</span>
1478                    <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1479relative to sensor raw output.<wbr/></p></span>
1480                  </li>
1481                  <li>
1482                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1483                    <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1484reduced (relative to sensor raw output rate)</p></span>
1485                  </li>
1486                </ul>
1487
1488            </td> <!-- entry_type -->
1489
1490            <td class="entry_description">
1491              <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1492            </td>
1493
1494            <td class="entry_units">
1495            </td>
1496
1497            <td class="entry_range">
1498              <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1499            </td>
1500
1501            <td class="entry_tags">
1502            </td>
1503
1504          </tr>
1505          <tr class="entries_header">
1506            <th class="th_details" colspan="5">Details</th>
1507          </tr>
1508          <tr class="entry_cont">
1509            <td class="entry_details" colspan="5">
1510              <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1511can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1512the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1513minimize the chromatic artifacts that may occur along the object boundaries in an
1514image.<wbr/></p>
1515<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1516correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1517use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1518capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1519applying aberration correction.<wbr/></p>
1520<p>LEGACY devices will always be in FAST mode.<wbr/></p>
1521            </td>
1522          </tr>
1523
1524
1525          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1526           <!-- end of entry -->
1527
1528
1529
1530      <!-- end of kind -->
1531      </tbody>
1532      <tr><td colspan="6" class="kind">dynamic</td></tr>
1533
1534      <thead class="entries_header">
1535        <tr>
1536          <th class="th_name">Property Name</th>
1537          <th class="th_type">Type</th>
1538          <th class="th_description">Description</th>
1539          <th class="th_units">Units</th>
1540          <th class="th_range">Range</th>
1541          <th class="th_tags">Tags</th>
1542        </tr>
1543      </thead>
1544
1545      <tbody>
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556          <tr class="entry" id="dynamic_android.colorCorrection.mode">
1557            <td class="entry_name
1558             " rowspan="5">
1559              android.<wbr/>color<wbr/>Correction.<wbr/>mode
1560            </td>
1561            <td class="entry_type">
1562                <span class="entry_type_name entry_type_name_enum">byte</span>
1563
1564              <span class="entry_type_visibility"> [public]</span>
1565
1566
1567              <span class="entry_type_hwlevel">[full] </span>
1568
1569
1570
1571                <ul class="entry_type_enum">
1572                  <li>
1573                    <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1574                    <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1575and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1576<p>All advanced white balance adjustments (not specified
1577by our white balance pipeline) must be disabled.<wbr/></p>
1578<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
1579TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1580this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1581                  </li>
1582                  <li>
1583                    <span class="entry_type_enum_name">FAST</span>
1584                    <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1585capture rate relative to sensor raw output.<wbr/></p>
1586<p>Advanced white balance adjustments above and beyond
1587the specified white balance pipeline may be applied.<wbr/></p>
1588<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
1589the camera device uses the last frame's AWB values
1590(or defaults if AWB has never been run).<wbr/></p></span>
1591                  </li>
1592                  <li>
1593                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1594                    <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1595quality but the capture rate might be reduced (relative to sensor
1596raw output rate)</p>
1597<p>Advanced white balance adjustments above and beyond
1598the specified white balance pipeline may be applied.<wbr/></p>
1599<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
1600the camera device uses the last frame's AWB values
1601(or defaults if AWB has never been run).<wbr/></p></span>
1602                  </li>
1603                </ul>
1604
1605            </td> <!-- entry_type -->
1606
1607            <td class="entry_description">
1608              <p>The mode control selects how the image data is converted from the
1609sensor's native color into linear sRGB color.<wbr/></p>
1610            </td>
1611
1612            <td class="entry_units">
1613            </td>
1614
1615            <td class="entry_range">
1616            </td>
1617
1618            <td class="entry_tags">
1619            </td>
1620
1621          </tr>
1622          <tr class="entries_header">
1623            <th class="th_details" colspan="5">Details</th>
1624          </tr>
1625          <tr class="entry_cont">
1626            <td class="entry_details" colspan="5">
1627              <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
1628control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1629application controls how the color mapping is performed.<wbr/></p>
1630<p>We define the expected processing pipeline below.<wbr/> For consistency
1631across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1632<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1633do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1634<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1635camera device (in the results) and be roughly correct.<wbr/></p>
1636<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1637FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1638as what was produced by the camera device in the earlier frame.<wbr/></p>
1639<p>The expected processing pipeline is as follows:</p>
1640<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1641<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1642gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1643matrix (applied after demosaic).<wbr/></p>
1644<p>The 4-channel white-balance gains are defined as:</p>
1645<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1646</code></pre>
1647<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1648output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1649These may be identical for a given camera device implementation; if
1650the camera device does not support a separate gain for even/<wbr/>odd green
1651channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1652<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1653<p>The matrices for color transforms are defined as a 9-entry vector:</p>
1654<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 ]
1655</code></pre>
1656<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1657to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1658<p>with colors as follows:</p>
1659<pre><code>r' = I0r + I1g + I2b
1660g' = I3r + I4g + I5b
1661b' = I6r + I7g + I8b
1662</code></pre>
1663<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1664values are clipped to fit within the range.<wbr/></p>
1665            </td>
1666          </tr>
1667
1668          <tr class="entries_header">
1669            <th class="th_details" colspan="5">HAL Implementation Details</th>
1670          </tr>
1671          <tr class="entry_cont">
1672            <td class="entry_details" colspan="5">
1673              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1674on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1675That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1676capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1677            </td>
1678          </tr>
1679
1680          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1681           <!-- end of entry -->
1682
1683
1684          <tr class="entry" id="dynamic_android.colorCorrection.transform">
1685            <td class="entry_name
1686             " rowspan="3">
1687              android.<wbr/>color<wbr/>Correction.<wbr/>transform
1688            </td>
1689            <td class="entry_type">
1690                <span class="entry_type_name">rational</span>
1691                <span class="entry_type_container">x</span>
1692
1693                <span class="entry_type_array">
1694                  3 x 3
1695                </span>
1696              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1697
1698
1699              <span class="entry_type_hwlevel">[full] </span>
1700
1701
1702                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1703
1704
1705            </td> <!-- entry_type -->
1706
1707            <td class="entry_description">
1708              <p>A color transform matrix to use to transform
1709from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1710            </td>
1711
1712            <td class="entry_units">
1713              Unitless scale factors
1714            </td>
1715
1716            <td class="entry_range">
1717            </td>
1718
1719            <td class="entry_tags">
1720            </td>
1721
1722          </tr>
1723          <tr class="entries_header">
1724            <th class="th_details" colspan="5">Details</th>
1725          </tr>
1726          <tr class="entry_cont">
1727            <td class="entry_details" colspan="5">
1728              <p>This matrix is either set by the camera device when the request
1729<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1730directly by the application in the request when the
1731<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1732<p>In the latter case,<wbr/> the camera device may round the matrix to account
1733for precision issues; the final rounded matrix should be reported back
1734in this matrix result metadata.<wbr/> The transform should keep the magnitude
1735of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1736values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1737<p>The valid range of each matrix element varies on different devices,<wbr/> but
1738values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1739            </td>
1740          </tr>
1741
1742
1743          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1744           <!-- end of entry -->
1745
1746
1747          <tr class="entry" id="dynamic_android.colorCorrection.gains">
1748            <td class="entry_name
1749             " rowspan="5">
1750              android.<wbr/>color<wbr/>Correction.<wbr/>gains
1751            </td>
1752            <td class="entry_type">
1753                <span class="entry_type_name">float</span>
1754                <span class="entry_type_container">x</span>
1755
1756                <span class="entry_type_array">
1757                  4
1758                </span>
1759              <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1760
1761
1762              <span class="entry_type_hwlevel">[full] </span>
1763
1764
1765                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1766
1767
1768            </td> <!-- entry_type -->
1769
1770            <td class="entry_description">
1771              <p>Gains applying to Bayer raw color channels for
1772white-balance.<wbr/></p>
1773            </td>
1774
1775            <td class="entry_units">
1776              Unitless gain factors
1777            </td>
1778
1779            <td class="entry_range">
1780            </td>
1781
1782            <td class="entry_tags">
1783            </td>
1784
1785          </tr>
1786          <tr class="entries_header">
1787            <th class="th_details" colspan="5">Details</th>
1788          </tr>
1789          <tr class="entry_cont">
1790            <td class="entry_details" colspan="5">
1791              <p>These per-channel gains are either set by the camera device
1792when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1793TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1794request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1795TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1796<p>The gains in the result metadata are the gains actually
1797applied by the camera device to the current frame.<wbr/></p>
1798<p>The valid range of gains varies on different devices,<wbr/> but gains
1799between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1800device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1801this can create color artifacts.<wbr/></p>
1802            </td>
1803          </tr>
1804
1805          <tr class="entries_header">
1806            <th class="th_details" colspan="5">HAL Implementation Details</th>
1807          </tr>
1808          <tr class="entry_cont">
1809            <td class="entry_details" colspan="5">
1810              <p>The 4-channel white-balance gains are defined in
1811the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1812for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1813is the gain for green pixels on the odd rows.<wbr/></p>
1814<p>If a HAL does not support a separate gain for even/<wbr/>odd green
1815channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1816<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1817            </td>
1818          </tr>
1819
1820          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1821           <!-- end of entry -->
1822
1823
1824          <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
1825            <td class="entry_name
1826             " rowspan="3">
1827              android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1828            </td>
1829            <td class="entry_type">
1830                <span class="entry_type_name entry_type_name_enum">byte</span>
1831
1832              <span class="entry_type_visibility"> [public]</span>
1833
1834
1835              <span class="entry_type_hwlevel">[legacy] </span>
1836
1837
1838
1839                <ul class="entry_type_enum">
1840                  <li>
1841                    <span class="entry_type_enum_name">OFF</span>
1842                    <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1843                  </li>
1844                  <li>
1845                    <span class="entry_type_enum_name">FAST</span>
1846                    <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1847relative to sensor raw output.<wbr/></p></span>
1848                  </li>
1849                  <li>
1850                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1851                    <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1852reduced (relative to sensor raw output rate)</p></span>
1853                  </li>
1854                </ul>
1855
1856            </td> <!-- entry_type -->
1857
1858            <td class="entry_description">
1859              <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1860            </td>
1861
1862            <td class="entry_units">
1863            </td>
1864
1865            <td class="entry_range">
1866              <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1867            </td>
1868
1869            <td class="entry_tags">
1870            </td>
1871
1872          </tr>
1873          <tr class="entries_header">
1874            <th class="th_details" colspan="5">Details</th>
1875          </tr>
1876          <tr class="entry_cont">
1877            <td class="entry_details" colspan="5">
1878              <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1879can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1880the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1881minimize the chromatic artifacts that may occur along the object boundaries in an
1882image.<wbr/></p>
1883<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1884correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1885use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1886capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1887applying aberration correction.<wbr/></p>
1888<p>LEGACY devices will always be in FAST mode.<wbr/></p>
1889            </td>
1890          </tr>
1891
1892
1893          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1894           <!-- end of entry -->
1895
1896
1897
1898      <!-- end of kind -->
1899      </tbody>
1900      <tr><td colspan="6" class="kind">static</td></tr>
1901
1902      <thead class="entries_header">
1903        <tr>
1904          <th class="th_name">Property Name</th>
1905          <th class="th_type">Type</th>
1906          <th class="th_description">Description</th>
1907          <th class="th_units">Units</th>
1908          <th class="th_range">Range</th>
1909          <th class="th_tags">Tags</th>
1910        </tr>
1911      </thead>
1912
1913      <tbody>
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924          <tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
1925            <td class="entry_name
1926             " rowspan="5">
1927              android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes
1928            </td>
1929            <td class="entry_type">
1930                <span class="entry_type_name">byte</span>
1931                <span class="entry_type_container">x</span>
1932
1933                <span class="entry_type_array">
1934                  n
1935                </span>
1936              <span class="entry_type_visibility"> [public as enumList]</span>
1937
1938
1939              <span class="entry_type_hwlevel">[legacy] </span>
1940
1941
1942                <div class="entry_type_notes">list of enums</div>
1943
1944
1945            </td> <!-- entry_type -->
1946
1947            <td class="entry_description">
1948              <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
1949supported by this camera device.<wbr/></p>
1950            </td>
1951
1952            <td class="entry_units">
1953            </td>
1954
1955            <td class="entry_range">
1956              <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
1957            </td>
1958
1959            <td class="entry_tags">
1960              <ul class="entry_tags">
1961                  <li><a href="#tag_V1">V1</a></li>
1962              </ul>
1963            </td>
1964
1965          </tr>
1966          <tr class="entries_header">
1967            <th class="th_details" colspan="5">Details</th>
1968          </tr>
1969          <tr class="entry_cont">
1970            <td class="entry_details" colspan="5">
1971              <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
1972aberration correction modes are available for a device,<wbr/> this list will solely include
1973OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
1974<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
1975OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
1976<p>LEGACY devices will always only support FAST mode.<wbr/></p>
1977            </td>
1978          </tr>
1979
1980          <tr class="entries_header">
1981            <th class="th_details" colspan="5">HAL Implementation Details</th>
1982          </tr>
1983          <tr class="entry_cont">
1984            <td class="entry_details" colspan="5">
1985              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
1986on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1987That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1988capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
1989            </td>
1990          </tr>
1991
1992          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1993           <!-- end of entry -->
1994
1995
1996
1997      <!-- end of kind -->
1998      </tbody>
1999
2000  <!-- end of section -->
2001  <tr><td colspan="6" id="section_control" class="section">control</td></tr>
2002
2003
2004      <tr><td colspan="6" class="kind">controls</td></tr>
2005
2006      <thead class="entries_header">
2007        <tr>
2008          <th class="th_name">Property Name</th>
2009          <th class="th_type">Type</th>
2010          <th class="th_description">Description</th>
2011          <th class="th_units">Units</th>
2012          <th class="th_range">Range</th>
2013          <th class="th_tags">Tags</th>
2014        </tr>
2015      </thead>
2016
2017      <tbody>
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028          <tr class="entry" id="controls_android.control.aeAntibandingMode">
2029            <td class="entry_name
2030             " rowspan="5">
2031              android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
2032            </td>
2033            <td class="entry_type">
2034                <span class="entry_type_name entry_type_name_enum">byte</span>
2035
2036              <span class="entry_type_visibility"> [public]</span>
2037
2038
2039              <span class="entry_type_hwlevel">[legacy] </span>
2040
2041
2042
2043                <ul class="entry_type_enum">
2044                  <li>
2045                    <span class="entry_type_enum_name">OFF</span>
2046                    <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
2047avoid banding problems.<wbr/></p></span>
2048                  </li>
2049                  <li>
2050                    <span class="entry_type_enum_name">50HZ</span>
2051                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2052avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
2053                  </li>
2054                  <li>
2055                    <span class="entry_type_enum_name">60HZ</span>
2056                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2057avoid banding problems with 60Hz illumination
2058sources.<wbr/></p></span>
2059                  </li>
2060                  <li>
2061                    <span class="entry_type_enum_name">AUTO</span>
2062                    <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
2063antibanding routine to the current illumination
2064condition.<wbr/> This is the default mode if AUTO is
2065available on given camera device.<wbr/></p></span>
2066                  </li>
2067                </ul>
2068
2069            </td> <!-- entry_type -->
2070
2071            <td class="entry_description">
2072              <p>The desired setting for the camera device's auto-exposure
2073algorithm's antibanding compensation.<wbr/></p>
2074            </td>
2075
2076            <td class="entry_units">
2077            </td>
2078
2079            <td class="entry_range">
2080              <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
2081            </td>
2082
2083            <td class="entry_tags">
2084              <ul class="entry_tags">
2085                  <li><a href="#tag_BC">BC</a></li>
2086              </ul>
2087            </td>
2088
2089          </tr>
2090          <tr class="entries_header">
2091            <th class="th_details" colspan="5">Details</th>
2092          </tr>
2093          <tr class="entry_cont">
2094            <td class="entry_details" colspan="5">
2095              <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
2096lights,<wbr/> flicker at the rate of the power supply frequency
2097(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
2098typically not noticeable to a person,<wbr/> it can be visible to
2099a camera device.<wbr/> If a camera sets its exposure time to the
2100wrong value,<wbr/> the flicker may become visible in the
2101viewfinder as flicker or in a final captured image,<wbr/> as a
2102set of variable-brightness bands across the image.<wbr/></p>
2103<p>Therefore,<wbr/> the auto-exposure routines of camera devices
2104include antibanding routines that ensure that the chosen
2105exposure value will not cause such banding.<wbr/> The choice of
2106exposure time depends on the rate of flicker,<wbr/> which the
2107camera device can detect automatically,<wbr/> or the expected
2108rate can be selected by the application using this
2109control.<wbr/></p>
2110<p>A given camera device may not support all of the possible
2111options for the antibanding mode.<wbr/> The
2112<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
2113the available modes for a given camera device.<wbr/></p>
2114<p>AUTO mode is the default if it is available on given
2115camera device.<wbr/> When AUTO mode is not available,<wbr/> the
2116default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
2117and 60HZ will be available.<wbr/></p>
2118<p>If manual exposure control is enabled (by setting
2119<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/>
2120then this setting has no effect,<wbr/> and the application must
2121ensure it selects exposure times that do not cause banding
2122issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
2123the application in this.<wbr/></p>
2124            </td>
2125          </tr>
2126
2127          <tr class="entries_header">
2128            <th class="th_details" colspan="5">HAL Implementation Details</th>
2129          </tr>
2130          <tr class="entry_cont">
2131            <td class="entry_details" colspan="5">
2132              <p>For all capture request templates,<wbr/> this field must be set
2133to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
2134the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
213560HZ must be available.<wbr/></p>
2136<p>If manual exposure control is enabled (by setting
2137<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/>
2138then the exposure values provided by the application must not be
2139adjusted for antibanding.<wbr/></p>
2140            </td>
2141          </tr>
2142
2143          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2144           <!-- end of entry -->
2145
2146
2147          <tr class="entry" id="controls_android.control.aeExposureCompensation">
2148            <td class="entry_name
2149             " rowspan="3">
2150              android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
2151            </td>
2152            <td class="entry_type">
2153                <span class="entry_type_name">int32</span>
2154
2155              <span class="entry_type_visibility"> [public]</span>
2156
2157
2158              <span class="entry_type_hwlevel">[legacy] </span>
2159
2160
2161
2162
2163            </td> <!-- entry_type -->
2164
2165            <td class="entry_description">
2166              <p>Adjustment to auto-exposure (AE) target image
2167brightness.<wbr/></p>
2168            </td>
2169
2170            <td class="entry_units">
2171              Compensation steps
2172            </td>
2173
2174            <td class="entry_range">
2175              <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
2176            </td>
2177
2178            <td class="entry_tags">
2179              <ul class="entry_tags">
2180                  <li><a href="#tag_BC">BC</a></li>
2181              </ul>
2182            </td>
2183
2184          </tr>
2185          <tr class="entries_header">
2186            <th class="th_details" colspan="5">Details</th>
2187          </tr>
2188          <tr class="entry_cont">
2189            <td class="entry_details" colspan="5">
2190              <p>The adjustment is measured as a count of steps,<wbr/> with the
2191step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
2192allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
2193<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
2194will mean an exposure compensation of +2 EV; -3 will mean an
2195exposure compensation of -1 EV.<wbr/> One EV represents a doubling
2196of image brightness.<wbr/> Note that this control will only be
2197effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
2198will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
2199<p>In the event of exposure compensation value being changed,<wbr/> camera device
2200may take several frames to reach the newly requested exposure target.<wbr/>
2201During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
2202state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
2203change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
2204FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
2205            </td>
2206          </tr>
2207
2208
2209          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2210           <!-- end of entry -->
2211
2212
2213          <tr class="entry" id="controls_android.control.aeLock">
2214            <td class="entry_name
2215             " rowspan="3">
2216              android.<wbr/>control.<wbr/>ae<wbr/>Lock
2217            </td>
2218            <td class="entry_type">
2219                <span class="entry_type_name entry_type_name_enum">byte</span>
2220
2221              <span class="entry_type_visibility"> [public as boolean]</span>
2222
2223
2224              <span class="entry_type_hwlevel">[legacy] </span>
2225
2226
2227
2228                <ul class="entry_type_enum">
2229                  <li>
2230                    <span class="entry_type_enum_name">OFF</span>
2231                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
2232is free to update its parameters.<wbr/></p></span>
2233                  </li>
2234                  <li>
2235                    <span class="entry_type_enum_name">ON</span>
2236                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
2237must not update the exposure and sensitivity parameters
2238while the lock is active.<wbr/></p>
2239<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
2240will still take effect while auto-exposure is locked.<wbr/></p>
2241<p>Some rare LEGACY devices may not support
2242this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
2243                  </li>
2244                </ul>
2245
2246            </td> <!-- entry_type -->
2247
2248            <td class="entry_description">
2249              <p>Whether auto-exposure (AE) is currently locked to its latest
2250calculated values.<wbr/></p>
2251            </td>
2252
2253            <td class="entry_units">
2254            </td>
2255
2256            <td class="entry_range">
2257            </td>
2258
2259            <td class="entry_tags">
2260              <ul class="entry_tags">
2261                  <li><a href="#tag_BC">BC</a></li>
2262              </ul>
2263            </td>
2264
2265          </tr>
2266          <tr class="entries_header">
2267            <th class="th_details" colspan="5">Details</th>
2268          </tr>
2269          <tr class="entry_cont">
2270            <td class="entry_details" colspan="5">
2271              <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
2272and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
2273<p>Note that even when AE is locked,<wbr/> the flash may be fired if
2274the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
2275ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
2276<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
2277is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
2278<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
2279when AE is already locked,<wbr/> the camera device will not change the exposure time
2280(<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>)
2281parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
2282is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
2283<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/>
2284Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
2285<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
2286the AE if AE is locked by the camera device internally during precapture metering
2287sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
2288ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
2289will never succeed in a sequence of preview requests where AE lock is always set
2290to <code>false</code>.<wbr/></p>
2291<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
2292get locked do not necessarily correspond to the settings that were present in the
2293latest capture result received from the camera device,<wbr/> since additional captures
2294and AE updates may have occurred even before the result was sent out.<wbr/> If an
2295application is switching between automatic and manual control and wishes to eliminate
2296any flicker during the switch,<wbr/> the following procedure is recommended:</p>
2297<ol>
2298<li>Starting in auto-AE mode:</li>
2299<li>Lock AE</li>
2300<li>Wait for the first result to be output that has the AE locked</li>
2301<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
2302<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
2303</ol>
2304<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>
2305            </td>
2306          </tr>
2307
2308
2309          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2310           <!-- end of entry -->
2311
2312
2313          <tr class="entry" id="controls_android.control.aeMode">
2314            <td class="entry_name
2315             " rowspan="3">
2316              android.<wbr/>control.<wbr/>ae<wbr/>Mode
2317            </td>
2318            <td class="entry_type">
2319                <span class="entry_type_name entry_type_name_enum">byte</span>
2320
2321              <span class="entry_type_visibility"> [public]</span>
2322
2323
2324              <span class="entry_type_hwlevel">[legacy] </span>
2325
2326
2327
2328                <ul class="entry_type_enum">
2329                  <li>
2330                    <span class="entry_type_enum_name">OFF</span>
2331                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
2332<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2333<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
2334<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
2335device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
2336a flash unit for this camera device.<wbr/></p>
2337<p>Note that auto-white balance (AWB) and auto-focus (AF)
2338behavior is device dependent when AE is in OFF mode.<wbr/>
2339To have consistent behavior across different devices,<wbr/>
2340it is recommended to either set AWB and AF to OFF mode
2341or lock AWB and AF before setting AE to OFF.<wbr/>
2342See <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/>
2343<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>
2344for more details.<wbr/></p>
2345<p>LEGACY devices do not support the OFF mode and will
2346override attempts to use this value to ON.<wbr/></p></span>
2347                  </li>
2348                  <li>
2349                    <span class="entry_type_enum_name">ON</span>
2350                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
2351with no flash control.<wbr/></p>
2352<p>The application's values for
2353<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2354<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2355<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
2356application has control over the various
2357android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
2358                  </li>
2359                  <li>
2360                    <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
2361                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2362the camera's flash unit,<wbr/> firing it in low-light
2363conditions.<wbr/></p>
2364<p>The flash may be fired during a precapture sequence
2365(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2366may be fired for captures for which the
2367<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2368STILL_<wbr/>CAPTURE</p></span>
2369                  </li>
2370                  <li>
2371                    <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
2372                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2373the camera's flash unit,<wbr/> always firing it for still
2374captures.<wbr/></p>
2375<p>The flash may be fired during a precapture sequence
2376(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2377will always be fired for captures for which the
2378<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2379STILL_<wbr/>CAPTURE</p></span>
2380                  </li>
2381                  <li>
2382                    <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
2383                    <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
2384reduction.<wbr/></p>
2385<p>If deemed necessary by the camera device,<wbr/> a red eye
2386reduction flash will fire during the precapture
2387sequence.<wbr/></p></span>
2388                  </li>
2389                </ul>
2390
2391            </td> <!-- entry_type -->
2392
2393            <td class="entry_description">
2394              <p>The desired mode for the camera device's
2395auto-exposure routine.<wbr/></p>
2396            </td>
2397
2398            <td class="entry_units">
2399            </td>
2400
2401            <td class="entry_range">
2402              <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
2403            </td>
2404
2405            <td class="entry_tags">
2406              <ul class="entry_tags">
2407                  <li><a href="#tag_BC">BC</a></li>
2408              </ul>
2409            </td>
2410
2411          </tr>
2412          <tr class="entries_header">
2413            <th class="th_details" colspan="5">Details</th>
2414          </tr>
2415          <tr class="entry_cont">
2416            <td class="entry_details" colspan="5">
2417              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
2418AUTO.<wbr/></p>
2419<p>When set to any of the ON modes,<wbr/> the camera device's
2420auto-exposure routine is enabled,<wbr/> overriding the
2421application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
2422and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2423<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2424<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
2425is selected,<wbr/> the camera device's flash unit controls are
2426also overridden.<wbr/></p>
2427<p>The FLASH modes are only available if the camera device
2428has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
2429<p>If flash TORCH mode is desired,<wbr/> this field must be set to
2430ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
2431<p>When set to any of the ON modes,<wbr/> the values chosen by the
2432camera device auto-exposure routine for the overridden
2433fields for a given capture will be available in its
2434CaptureResult.<wbr/></p>
2435            </td>
2436          </tr>
2437
2438
2439          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2440           <!-- end of entry -->
2441
2442
2443          <tr class="entry" id="controls_android.control.aeRegions">
2444            <td class="entry_name
2445             " rowspan="5">
2446              android.<wbr/>control.<wbr/>ae<wbr/>Regions
2447            </td>
2448            <td class="entry_type">
2449                <span class="entry_type_name">int32</span>
2450                <span class="entry_type_container">x</span>
2451
2452                <span class="entry_type_array">
2453                  5 x area_count
2454                </span>
2455              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2456
2457
2458
2459
2460
2461
2462            </td> <!-- entry_type -->
2463
2464            <td class="entry_description">
2465              <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
2466            </td>
2467
2468            <td class="entry_units">
2469              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2470            </td>
2471
2472            <td class="entry_range">
2473              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2474<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2475            </td>
2476
2477            <td class="entry_tags">
2478              <ul class="entry_tags">
2479                  <li><a href="#tag_BC">BC</a></li>
2480              </ul>
2481            </td>
2482
2483          </tr>
2484          <tr class="entries_header">
2485            <th class="th_details" colspan="5">Details</th>
2486          </tr>
2487          <tr class="entry_cont">
2488            <td class="entry_details" colspan="5">
2489              <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
2490Otherwise will always be present.<wbr/></p>
2491<p>The maximum number of regions supported by the device is determined by the value
2492of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
2493<p>The coordinate system is based on the active pixel array,<wbr/>
2494with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2495(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2496<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2497bottom-right pixel in the active pixel array.<wbr/></p>
2498<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2499for every pixel in the area.<wbr/> This means that a large metering area
2500with the same weight as a smaller area will have more effect in
2501the metering result.<wbr/> Metering areas can partially overlap and the
2502camera device will add the weights in the overlap region.<wbr/></p>
2503<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
2504region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
2505weight is ignored.<wbr/></p>
2506<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2507camera device.<wbr/></p>
2508<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
2509capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2510region and output only the intersection rectangle as the metering region in the result
2511metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
2512not reported in the result metadata.<wbr/></p>
2513            </td>
2514          </tr>
2515
2516          <tr class="entries_header">
2517            <th class="th_details" colspan="5">HAL Implementation Details</th>
2518          </tr>
2519          <tr class="entry_cont">
2520            <td class="entry_details" colspan="5">
2521              <p>The HAL level representation of MeteringRectangle[] is a
2522int[5 * area_<wbr/>count].<wbr/>
2523Every five elements represent a metering region of
2524(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2525The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2526exclusive on xmax and ymax.<wbr/></p>
2527            </td>
2528          </tr>
2529
2530          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2531           <!-- end of entry -->
2532
2533
2534          <tr class="entry" id="controls_android.control.aeTargetFpsRange">
2535            <td class="entry_name
2536             " rowspan="3">
2537              android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
2538            </td>
2539            <td class="entry_type">
2540                <span class="entry_type_name">int32</span>
2541                <span class="entry_type_container">x</span>
2542
2543                <span class="entry_type_array">
2544                  2
2545                </span>
2546              <span class="entry_type_visibility"> [public as rangeInt]</span>
2547
2548
2549              <span class="entry_type_hwlevel">[legacy] </span>
2550
2551
2552
2553
2554            </td> <!-- entry_type -->
2555
2556            <td class="entry_description">
2557              <p>Range over which the auto-exposure routine can
2558adjust the capture frame rate to maintain good
2559exposure.<wbr/></p>
2560            </td>
2561
2562            <td class="entry_units">
2563              Frames per second (FPS)
2564            </td>
2565
2566            <td class="entry_range">
2567              <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>
2568            </td>
2569
2570            <td class="entry_tags">
2571              <ul class="entry_tags">
2572                  <li><a href="#tag_BC">BC</a></li>
2573              </ul>
2574            </td>
2575
2576          </tr>
2577          <tr class="entries_header">
2578            <th class="th_details" colspan="5">Details</th>
2579          </tr>
2580          <tr class="entry_cont">
2581            <td class="entry_details" colspan="5">
2582              <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
2583manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
2584<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
2585            </td>
2586          </tr>
2587
2588
2589          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2590           <!-- end of entry -->
2591
2592
2593          <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
2594            <td class="entry_name
2595             " rowspan="5">
2596              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
2597            </td>
2598            <td class="entry_type">
2599                <span class="entry_type_name entry_type_name_enum">byte</span>
2600
2601              <span class="entry_type_visibility"> [public]</span>
2602
2603
2604              <span class="entry_type_hwlevel">[limited] </span>
2605
2606
2607
2608                <ul class="entry_type_enum">
2609                  <li>
2610                    <span class="entry_type_enum_name">IDLE</span>
2611                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2612                  </li>
2613                  <li>
2614                    <span class="entry_type_enum_name">START</span>
2615                    <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
2616by the camera device.<wbr/></p>
2617<p>The exact effect of the precapture trigger depends on
2618the current AE mode and state.<wbr/></p></span>
2619                  </li>
2620                  <li>
2621                    <span class="entry_type_enum_name">CANCEL</span>
2622                    <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
2623precapture metering sequence,<wbr/> the auto-exposure routine will return to its
2624initial state.<wbr/></p></span>
2625                  </li>
2626                </ul>
2627
2628            </td> <!-- entry_type -->
2629
2630            <td class="entry_description">
2631              <p>Whether the camera device will trigger a precapture
2632metering sequence when it processes this request.<wbr/></p>
2633            </td>
2634
2635            <td class="entry_units">
2636            </td>
2637
2638            <td class="entry_range">
2639            </td>
2640
2641            <td class="entry_tags">
2642              <ul class="entry_tags">
2643                  <li><a href="#tag_BC">BC</a></li>
2644              </ul>
2645            </td>
2646
2647          </tr>
2648          <tr class="entries_header">
2649            <th class="th_details" colspan="5">Details</th>
2650          </tr>
2651          <tr class="entry_cont">
2652            <td class="entry_details" colspan="5">
2653              <p>This entry is normally set to IDLE,<wbr/> or is not
2654included at all in the request settings.<wbr/> When included and
2655set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
2656precapture metering sequence.<wbr/></p>
2657<p>When set to CANCEL,<wbr/> the camera device will cancel any active
2658precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
2659If a precapture metering sequence is already completed,<wbr/> and the camera
2660device has implicitly locked the AE for subsequent still capture,<wbr/> the
2661CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
2662<p>The precapture sequence should be triggered before starting a
2663high-quality still capture for final metering decisions to
2664be made,<wbr/> and for firing pre-capture flash pulses to estimate
2665scene brightness and required final capture flash power,<wbr/> when
2666the flash is enabled.<wbr/></p>
2667<p>Normally,<wbr/> this entry should be set to START for only a
2668single request,<wbr/> and the application should wait until the
2669sequence completes before starting a new one.<wbr/></p>
2670<p>When a precapture metering sequence is finished,<wbr/> the camera device
2671may lock the auto-exposure routine internally to be able to accurately expose the
2672subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
2673For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
2674submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
2675submit 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
2676with <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
2677still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
2678API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
2679internally locked AE if the application doesn't submit a still capture request after
2680the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
2681be used in devices that have earlier API levels.<wbr/></p>
2682<p>The exact effect of auto-exposure (AE) precapture trigger
2683depends on the current AE mode and state; see
2684<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
2685details.<wbr/></p>
2686<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
2687capturing a high-resolution JPEG image will automatically trigger a
2688precapture sequence before the high-resolution capture,<wbr/> including
2689potentially firing a pre-capture flash.<wbr/></p>
2690<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
2691simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
2692the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
2693focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
2694trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
2695changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
2696example.<wbr/></p>
2697<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
2698the camera device will complete them in the optimal order for that device.<wbr/></p>
2699            </td>
2700          </tr>
2701
2702          <tr class="entries_header">
2703            <th class="th_details" colspan="5">HAL Implementation Details</th>
2704          </tr>
2705          <tr class="entry_cont">
2706            <td class="entry_details" colspan="5">
2707              <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
2708(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
2709treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
2710AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
2711to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
2712            </td>
2713          </tr>
2714
2715          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2716           <!-- end of entry -->
2717
2718
2719          <tr class="entry" id="controls_android.control.afMode">
2720            <td class="entry_name
2721             " rowspan="5">
2722              android.<wbr/>control.<wbr/>af<wbr/>Mode
2723            </td>
2724            <td class="entry_type">
2725                <span class="entry_type_name entry_type_name_enum">byte</span>
2726
2727              <span class="entry_type_visibility"> [public]</span>
2728
2729
2730              <span class="entry_type_hwlevel">[legacy] </span>
2731
2732
2733
2734                <ul class="entry_type_enum">
2735                  <li>
2736                    <span class="entry_type_enum_name">OFF</span>
2737                    <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
2738<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
2739application.<wbr/></p></span>
2740                  </li>
2741                  <li>
2742                    <span class="entry_type_enum_name">AUTO</span>
2743                    <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
2744<p>In this mode,<wbr/> the lens does not move unless
2745the autofocus trigger action is called.<wbr/> When that trigger
2746is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2747the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
2748<p>Always supported if lens is not fixed focus.<wbr/></p>
2749<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
2750is fixed-focus.<wbr/></p>
2751<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
2752and sets the AF state to INACTIVE.<wbr/></p></span>
2753                  </li>
2754                  <li>
2755                    <span class="entry_type_enum_name">MACRO</span>
2756                    <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
2757<p>In this mode,<wbr/> the lens does not move unless the
2758autofocus trigger action is called.<wbr/> When that trigger is
2759activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2760the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
2761mode is optimized for focusing on objects very close to
2762the camera.<wbr/></p>
2763<p>When that trigger is activated,<wbr/> AF will transition to
2764ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
2765NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
2766position to default,<wbr/> and sets the AF state to
2767INACTIVE.<wbr/></p></span>
2768                  </li>
2769                  <li>
2770                    <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
2771                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2772position continually to attempt to provide a
2773constantly-in-focus image stream.<wbr/></p>
2774<p>The focusing behavior should be suitable for good quality
2775video recording; typically this means slower focus
2776movement and no overshoots.<wbr/> When the AF trigger is not
2777involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
2778and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
2779states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
2780the algorithm should immediately transition into
2781AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2782lens position until a cancel AF trigger is received.<wbr/></p>
2783<p>Once cancel is received,<wbr/> the algorithm should transition
2784back to INACTIVE and resume passive scan.<wbr/> Note that this
2785behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
2786ongoing PASSIVE_<wbr/>SCAN must immediately be
2787canceled.<wbr/></p></span>
2788                  </li>
2789                  <li>
2790                    <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
2791                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2792position continually to attempt to provide a
2793constantly-in-focus image stream.<wbr/></p>
2794<p>The focusing behavior should be suitable for still image
2795capture; typically this means focusing as fast as
2796possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
2797algorithm should start in INACTIVE state,<wbr/> and then
2798transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
2799appropriate as it attempts to maintain focus.<wbr/> When the AF
2800trigger is activated,<wbr/> the algorithm should finish its
2801PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
2802AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2803lens position until a cancel AF trigger is received.<wbr/></p>
2804<p>When the AF cancel trigger is activated,<wbr/> the algorithm
2805should transition back to INACTIVE and then act as if it
2806has just been started.<wbr/></p></span>
2807                  </li>
2808                  <li>
2809                    <span class="entry_type_enum_name">EDOF</span>
2810                    <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
2811<p>The camera device will produce images with an extended
2812depth of field automatically; no special focusing
2813operations need to be done before taking a picture.<wbr/></p>
2814<p>AF triggers are ignored,<wbr/> and the AF state will always be
2815INACTIVE.<wbr/></p></span>
2816                  </li>
2817                </ul>
2818
2819            </td> <!-- entry_type -->
2820
2821            <td class="entry_description">
2822              <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
2823mode it is set to.<wbr/></p>
2824            </td>
2825
2826            <td class="entry_units">
2827            </td>
2828
2829            <td class="entry_range">
2830              <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
2831            </td>
2832
2833            <td class="entry_tags">
2834              <ul class="entry_tags">
2835                  <li><a href="#tag_BC">BC</a></li>
2836              </ul>
2837            </td>
2838
2839          </tr>
2840          <tr class="entries_header">
2841            <th class="th_details" colspan="5">Details</th>
2842          </tr>
2843          <tr class="entry_cont">
2844            <td class="entry_details" colspan="5">
2845              <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
2846(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
2847when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
2848dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
2849setting <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>
2850<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
2851the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
2852in result metadata.<wbr/></p>
2853            </td>
2854          </tr>
2855
2856          <tr class="entries_header">
2857            <th class="th_details" colspan="5">HAL Implementation Details</th>
2858          </tr>
2859          <tr class="entry_cont">
2860            <td class="entry_details" colspan="5">
2861              <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
2862request (<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
2863up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
2864<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
2865locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
2866after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
2867the same focal plane remains in focus.<wbr/></p>
2868<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
2869scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
2870(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
2871same lock behavior as above.<wbr/></p>
2872<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
2873focus 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/>
2874However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
2875manual control.<wbr/></p>
2876<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
2877camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
2878remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
2879by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
2880that will arise on camera modules with open-loop VCMs.<wbr/></p>
2881            </td>
2882          </tr>
2883
2884          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2885           <!-- end of entry -->
2886
2887
2888          <tr class="entry" id="controls_android.control.afRegions">
2889            <td class="entry_name
2890             " rowspan="5">
2891              android.<wbr/>control.<wbr/>af<wbr/>Regions
2892            </td>
2893            <td class="entry_type">
2894                <span class="entry_type_name">int32</span>
2895                <span class="entry_type_container">x</span>
2896
2897                <span class="entry_type_array">
2898                  5 x area_count
2899                </span>
2900              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2901
2902
2903
2904
2905
2906
2907            </td> <!-- entry_type -->
2908
2909            <td class="entry_description">
2910              <p>List of metering areas to use for auto-focus.<wbr/></p>
2911            </td>
2912
2913            <td class="entry_units">
2914              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2915            </td>
2916
2917            <td class="entry_range">
2918              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2919<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2920            </td>
2921
2922            <td class="entry_tags">
2923              <ul class="entry_tags">
2924                  <li><a href="#tag_BC">BC</a></li>
2925              </ul>
2926            </td>
2927
2928          </tr>
2929          <tr class="entries_header">
2930            <th class="th_details" colspan="5">Details</th>
2931          </tr>
2932          <tr class="entry_cont">
2933            <td class="entry_details" colspan="5">
2934              <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
2935Otherwise will always be present.<wbr/></p>
2936<p>The maximum number of focus areas supported by the device is determined by the value
2937of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
2938<p>The coordinate system is based on the active pixel array,<wbr/>
2939with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2940(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2941<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2942bottom-right pixel in the active pixel array.<wbr/></p>
2943<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2944for every pixel in the area.<wbr/> This means that a large metering area
2945with the same weight as a smaller area will have more effect in
2946the metering result.<wbr/> Metering areas can partially overlap and the
2947camera device will add the weights in the overlap region.<wbr/></p>
2948<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
2949is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
2950ignored.<wbr/></p>
2951<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2952camera device.<wbr/></p>
2953<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
2954capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2955region and output only the intersection rectangle as the metering region in the result
2956metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
2957not reported in the result metadata.<wbr/></p>
2958            </td>
2959          </tr>
2960
2961          <tr class="entries_header">
2962            <th class="th_details" colspan="5">HAL Implementation Details</th>
2963          </tr>
2964          <tr class="entry_cont">
2965            <td class="entry_details" colspan="5">
2966              <p>The HAL level representation of MeteringRectangle[] is a
2967int[5 * area_<wbr/>count].<wbr/>
2968Every five elements represent a metering region of
2969(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2970The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2971exclusive on xmax and ymax.<wbr/></p>
2972            </td>
2973          </tr>
2974
2975          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2976           <!-- end of entry -->
2977
2978
2979          <tr class="entry" id="controls_android.control.afTrigger">
2980            <td class="entry_name
2981             " rowspan="5">
2982              android.<wbr/>control.<wbr/>af<wbr/>Trigger
2983            </td>
2984            <td class="entry_type">
2985                <span class="entry_type_name entry_type_name_enum">byte</span>
2986
2987              <span class="entry_type_visibility"> [public]</span>
2988
2989
2990              <span class="entry_type_hwlevel">[legacy] </span>
2991
2992
2993
2994                <ul class="entry_type_enum">
2995                  <li>
2996                    <span class="entry_type_enum_name">IDLE</span>
2997                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2998                  </li>
2999                  <li>
3000                    <span class="entry_type_enum_name">START</span>
3001                    <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
3002                  </li>
3003                  <li>
3004                    <span class="entry_type_enum_name">CANCEL</span>
3005                    <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
3006state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
3007                  </li>
3008                </ul>
3009
3010            </td> <!-- entry_type -->
3011
3012            <td class="entry_description">
3013              <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
3014            </td>
3015
3016            <td class="entry_units">
3017            </td>
3018
3019            <td class="entry_range">
3020            </td>
3021
3022            <td class="entry_tags">
3023              <ul class="entry_tags">
3024                  <li><a href="#tag_BC">BC</a></li>
3025              </ul>
3026            </td>
3027
3028          </tr>
3029          <tr class="entries_header">
3030            <th class="th_details" colspan="5">Details</th>
3031          </tr>
3032          <tr class="entry_cont">
3033            <td class="entry_details" colspan="5">
3034              <p>This entry is normally set to IDLE,<wbr/> or is not
3035included at all in the request settings.<wbr/></p>
3036<p>When included and set to START,<wbr/> the camera device will trigger the
3037autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
3038<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
3039and return to its initial AF state.<wbr/></p>
3040<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
3041single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
3042START for multiple captures in a row means restarting the AF operation over
3043and over again.<wbr/></p>
3044<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>
3045<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>
3046simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
3047the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
3048focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
3049trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
3050changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
3051            </td>
3052          </tr>
3053
3054          <tr class="entries_header">
3055            <th class="th_details" colspan="5">HAL Implementation Details</th>
3056          </tr>
3057          <tr class="entry_cont">
3058            <td class="entry_details" colspan="5">
3059              <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
3060(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
3061treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
3062AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
3063to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
3064            </td>
3065          </tr>
3066
3067          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3068           <!-- end of entry -->
3069
3070
3071          <tr class="entry" id="controls_android.control.awbLock">
3072            <td class="entry_name
3073             " rowspan="3">
3074              android.<wbr/>control.<wbr/>awb<wbr/>Lock
3075            </td>
3076            <td class="entry_type">
3077                <span class="entry_type_name entry_type_name_enum">byte</span>
3078
3079              <span class="entry_type_visibility"> [public as boolean]</span>
3080
3081
3082              <span class="entry_type_hwlevel">[legacy] </span>
3083
3084
3085
3086                <ul class="entry_type_enum">
3087                  <li>
3088                    <span class="entry_type_enum_name">OFF</span>
3089                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
3090algorithm is free to update its parameters if in AUTO
3091mode.<wbr/></p></span>
3092                  </li>
3093                  <li>
3094                    <span class="entry_type_enum_name">ON</span>
3095                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
3096algorithm will not update its parameters while the lock
3097is active.<wbr/></p></span>
3098                  </li>
3099                </ul>
3100
3101            </td> <!-- entry_type -->
3102
3103            <td class="entry_description">
3104              <p>Whether auto-white balance (AWB) is currently locked to its
3105latest calculated values.<wbr/></p>
3106            </td>
3107
3108            <td class="entry_units">
3109            </td>
3110
3111            <td class="entry_range">
3112            </td>
3113
3114            <td class="entry_tags">
3115              <ul class="entry_tags">
3116                  <li><a href="#tag_BC">BC</a></li>
3117              </ul>
3118            </td>
3119
3120          </tr>
3121          <tr class="entries_header">
3122            <th class="th_details" colspan="5">Details</th>
3123          </tr>
3124          <tr class="entry_cont">
3125            <td class="entry_details" colspan="5">
3126              <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
3127and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
3128<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
3129get locked do not necessarily correspond to the settings that were present in the
3130latest capture result received from the camera device,<wbr/> since additional captures
3131and AWB updates may have occurred even before the result was sent out.<wbr/> If an
3132application is switching between automatic and manual control and wishes to eliminate
3133any flicker during the switch,<wbr/> the following procedure is recommended:</p>
3134<ol>
3135<li>Starting in auto-AWB mode:</li>
3136<li>Lock AWB</li>
3137<li>Wait for the first result to be output that has the AWB locked</li>
3138<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
3139<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
3140</ol>
3141<p>Note that AWB lock is only meaningful when
3142<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
3143AWB is already fixed to a specific setting.<wbr/></p>
3144<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
3145            </td>
3146          </tr>
3147
3148
3149          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3150           <!-- end of entry -->
3151
3152
3153          <tr class="entry" id="controls_android.control.awbMode">
3154            <td class="entry_name
3155             " rowspan="3">
3156              android.<wbr/>control.<wbr/>awb<wbr/>Mode
3157            </td>
3158            <td class="entry_type">
3159                <span class="entry_type_name entry_type_name_enum">byte</span>
3160
3161              <span class="entry_type_visibility"> [public]</span>
3162
3163
3164              <span class="entry_type_hwlevel">[legacy] </span>
3165
3166
3167
3168                <ul class="entry_type_enum">
3169                  <li>
3170                    <span class="entry_type_enum_name">OFF</span>
3171                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
3172<p>The application-selected color transform matrix
3173(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
3174(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
3175device for manual white balance control.<wbr/></p></span>
3176                  </li>
3177                  <li>
3178                    <span class="entry_type_enum_name">AUTO</span>
3179                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
3180<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3181and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3182For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3183values used by the camera device for the transform and gains
3184will be available in the capture result for this request.<wbr/></p></span>
3185                  </li>
3186                  <li>
3187                    <span class="entry_type_enum_name">INCANDESCENT</span>
3188                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3189the camera device uses incandescent light as the assumed scene
3190illumination for white balance.<wbr/></p>
3191<p>While the exact white balance transforms are up to the
3192camera device,<wbr/> they will approximately match the CIE
3193standard illuminant A.<wbr/></p>
3194<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3195and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3196For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3197values used by the camera device for the transform and gains
3198will be available in the capture result for this request.<wbr/></p></span>
3199                  </li>
3200                  <li>
3201                    <span class="entry_type_enum_name">FLUORESCENT</span>
3202                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3203the camera device uses fluorescent light as the assumed scene
3204illumination for white balance.<wbr/></p>
3205<p>While the exact white balance transforms are up to the
3206camera device,<wbr/> they will approximately match the CIE
3207standard illuminant F2.<wbr/></p>
3208<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3209and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3210For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3211values used by the camera device for the transform and gains
3212will be available in the capture result for this request.<wbr/></p></span>
3213                  </li>
3214                  <li>
3215                    <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
3216                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3217the camera device uses warm fluorescent light as the assumed scene
3218illumination for white balance.<wbr/></p>
3219<p>While the exact white balance transforms are up to the
3220camera device,<wbr/> they will approximately match the CIE
3221standard illuminant F4.<wbr/></p>
3222<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3223and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3224For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3225values used by the camera device for the transform and gains
3226will be available in the capture result for this request.<wbr/></p></span>
3227                  </li>
3228                  <li>
3229                    <span class="entry_type_enum_name">DAYLIGHT</span>
3230                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3231the camera device uses daylight light as the assumed scene
3232illumination for white balance.<wbr/></p>
3233<p>While the exact white balance transforms are up to the
3234camera device,<wbr/> they will approximately match the CIE
3235standard illuminant D65.<wbr/></p>
3236<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3237and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3238For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3239values used by the camera device for the transform and gains
3240will be available in the capture result for this request.<wbr/></p></span>
3241                  </li>
3242                  <li>
3243                    <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
3244                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3245the camera device uses cloudy daylight light as the assumed scene
3246illumination for white balance.<wbr/></p>
3247<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3248and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3249For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3250values used by the camera device for the transform and gains
3251will be available in the capture result for this request.<wbr/></p></span>
3252                  </li>
3253                  <li>
3254                    <span class="entry_type_enum_name">TWILIGHT</span>
3255                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3256the camera device uses twilight light as the assumed scene
3257illumination for white balance.<wbr/></p>
3258<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3259and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3260For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3261values used by the camera device for the transform and gains
3262will be available in the capture result for this request.<wbr/></p></span>
3263                  </li>
3264                  <li>
3265                    <span class="entry_type_enum_name">SHADE</span>
3266                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3267the camera device uses shade light as the assumed scene
3268illumination for white balance.<wbr/></p>
3269<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3270and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3271For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3272values used by the camera device for the transform and gains
3273will be available in the capture result for this request.<wbr/></p></span>
3274                  </li>
3275                </ul>
3276
3277            </td> <!-- entry_type -->
3278
3279            <td class="entry_description">
3280              <p>Whether auto-white balance (AWB) is currently setting the color
3281transform fields,<wbr/> and what its illumination target
3282is.<wbr/></p>
3283            </td>
3284
3285            <td class="entry_units">
3286            </td>
3287
3288            <td class="entry_range">
3289              <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
3290            </td>
3291
3292            <td class="entry_tags">
3293              <ul class="entry_tags">
3294                  <li><a href="#tag_BC">BC</a></li>
3295              </ul>
3296            </td>
3297
3298          </tr>
3299          <tr class="entries_header">
3300            <th class="th_details" colspan="5">Details</th>
3301          </tr>
3302          <tr class="entry_cont">
3303            <td class="entry_details" colspan="5">
3304              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
3305<p>When set to the ON mode,<wbr/> the camera device's auto-white balance
3306routine is enabled,<wbr/> overriding the application's selected
3307<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
3308<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>
3309is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
3310also 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
3311setting AE mode to OFF.<wbr/></p>
3312<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
3313routine is disabled.<wbr/> The application manually controls the white
3314balance 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>
3315and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
3316<p>When set to any other modes,<wbr/> the camera device's auto-white
3317balance routine is disabled.<wbr/> The camera device uses each
3318particular illumination target for white balance
3319adjustment.<wbr/> The application's values for
3320<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
3321<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3322<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
3323            </td>
3324          </tr>
3325
3326
3327          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3328           <!-- end of entry -->
3329
3330
3331          <tr class="entry" id="controls_android.control.awbRegions">
3332            <td class="entry_name
3333             " rowspan="5">
3334              android.<wbr/>control.<wbr/>awb<wbr/>Regions
3335            </td>
3336            <td class="entry_type">
3337                <span class="entry_type_name">int32</span>
3338                <span class="entry_type_container">x</span>
3339
3340                <span class="entry_type_array">
3341                  5 x area_count
3342                </span>
3343              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3344
3345
3346
3347
3348
3349
3350            </td> <!-- entry_type -->
3351
3352            <td class="entry_description">
3353              <p>List of metering areas to use for auto-white-balance illuminant
3354estimation.<wbr/></p>
3355            </td>
3356
3357            <td class="entry_units">
3358              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3359            </td>
3360
3361            <td class="entry_range">
3362              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3363<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3364            </td>
3365
3366            <td class="entry_tags">
3367              <ul class="entry_tags">
3368                  <li><a href="#tag_BC">BC</a></li>
3369              </ul>
3370            </td>
3371
3372          </tr>
3373          <tr class="entries_header">
3374            <th class="th_details" colspan="5">Details</th>
3375          </tr>
3376          <tr class="entry_cont">
3377            <td class="entry_details" colspan="5">
3378              <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
3379Otherwise will always be present.<wbr/></p>
3380<p>The maximum number of regions supported by the device is determined by the value
3381of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
3382<p>The coordinate system is based on the active pixel array,<wbr/>
3383with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3384(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3385<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3386bottom-right pixel in the active pixel array.<wbr/></p>
3387<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
3388for every pixel in the area.<wbr/> This means that a large metering area
3389with the same weight as a smaller area will have more effect in
3390the metering result.<wbr/> Metering areas can partially overlap and the
3391camera device will add the weights in the overlap region.<wbr/></p>
3392<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
3393only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
33940 weight is ignored.<wbr/></p>
3395<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3396camera device.<wbr/></p>
3397<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
3398capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3399region and output only the intersection rectangle as the metering region in the result
3400metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
3401not reported in the result metadata.<wbr/></p>
3402            </td>
3403          </tr>
3404
3405          <tr class="entries_header">
3406            <th class="th_details" colspan="5">HAL Implementation Details</th>
3407          </tr>
3408          <tr class="entry_cont">
3409            <td class="entry_details" colspan="5">
3410              <p>The HAL level representation of MeteringRectangle[] is a
3411int[5 * area_<wbr/>count].<wbr/>
3412Every five elements represent a metering region of
3413(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3414The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3415exclusive on xmax and ymax.<wbr/></p>
3416            </td>
3417          </tr>
3418
3419          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3420           <!-- end of entry -->
3421
3422
3423          <tr class="entry" id="controls_android.control.captureIntent">
3424            <td class="entry_name
3425             " rowspan="3">
3426              android.<wbr/>control.<wbr/>capture<wbr/>Intent
3427            </td>
3428            <td class="entry_type">
3429                <span class="entry_type_name entry_type_name_enum">byte</span>
3430
3431              <span class="entry_type_visibility"> [public]</span>
3432
3433
3434              <span class="entry_type_hwlevel">[legacy] </span>
3435
3436
3437
3438                <ul class="entry_type_enum">
3439                  <li>
3440                    <span class="entry_type_enum_name">CUSTOM</span>
3441                    <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
3442categories.<wbr/> The camera device will default to preview-like
3443behavior.<wbr/></p></span>
3444                  </li>
3445                  <li>
3446                    <span class="entry_type_enum_name">PREVIEW</span>
3447                    <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
3448<p>The precapture trigger may be used to start off a metering
3449w/<wbr/>flash sequence.<wbr/></p></span>
3450                  </li>
3451                  <li>
3452                    <span class="entry_type_enum_name">STILL_CAPTURE</span>
3453                    <span class="entry_type_enum_notes"><p>This request is for a still capture-type
3454use case.<wbr/></p>
3455<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
3456                  </li>
3457                  <li>
3458                    <span class="entry_type_enum_name">VIDEO_RECORD</span>
3459                    <span class="entry_type_enum_notes"><p>This request is for a video recording
3460use case.<wbr/></p></span>
3461                  </li>
3462                  <li>
3463                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
3464                    <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
3465image while recording video) use case.<wbr/></p>
3466<p>The camera device should take the highest-quality image
3467possible (given the other settings) without disrupting the
3468frame rate of video recording.<wbr/>  </p></span>
3469                  </li>
3470                  <li>
3471                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
3472                    <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
3473application will stream full-resolution images and
3474reprocess one or several later for a final
3475capture.<wbr/></p></span>
3476                  </li>
3477                  <li>
3478                    <span class="entry_type_enum_name">MANUAL</span>
3479                    <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
3480the applications want to directly control the capture parameters.<wbr/></p>
3481<p>For example,<wbr/> the application may wish to manually control
3482<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>
3483                  </li>
3484                </ul>
3485
3486            </td> <!-- entry_type -->
3487
3488            <td class="entry_description">
3489              <p>Information to the camera device 3A (auto-exposure,<wbr/>
3490auto-focus,<wbr/> auto-white balance) routines about the purpose
3491of this capture,<wbr/> to help the camera device to decide optimal 3A
3492strategy.<wbr/></p>
3493            </td>
3494
3495            <td class="entry_units">
3496            </td>
3497
3498            <td class="entry_range">
3499            </td>
3500
3501            <td class="entry_tags">
3502              <ul class="entry_tags">
3503                  <li><a href="#tag_BC">BC</a></li>
3504              </ul>
3505            </td>
3506
3507          </tr>
3508          <tr class="entries_header">
3509            <th class="th_details" colspan="5">Details</th>
3510          </tr>
3511          <tr class="entry_cont">
3512            <td class="entry_details" colspan="5">
3513              <p>This control (except for MANUAL) is only effective if
3514<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
3515<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
3516contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
3517<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
3518always supported.<wbr/></p>
3519            </td>
3520          </tr>
3521
3522
3523          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3524           <!-- end of entry -->
3525
3526
3527          <tr class="entry" id="controls_android.control.effectMode">
3528            <td class="entry_name
3529             " rowspan="3">
3530              android.<wbr/>control.<wbr/>effect<wbr/>Mode
3531            </td>
3532            <td class="entry_type">
3533                <span class="entry_type_name entry_type_name_enum">byte</span>
3534
3535              <span class="entry_type_visibility"> [public]</span>
3536
3537
3538              <span class="entry_type_hwlevel">[legacy] </span>
3539
3540
3541
3542                <ul class="entry_type_enum">
3543                  <li>
3544                    <span class="entry_type_enum_name">OFF</span>
3545                    <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
3546                  </li>
3547                  <li>
3548                    <span class="entry_type_enum_name">MONO</span>
3549                    <span class="entry_type_enum_optional">[optional]</span>
3550                    <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
3551a single color.<wbr/></p>
3552<p>This will typically be grayscale.<wbr/></p></span>
3553                  </li>
3554                  <li>
3555                    <span class="entry_type_enum_name">NEGATIVE</span>
3556                    <span class="entry_type_enum_optional">[optional]</span>
3557                    <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
3558are inverted.<wbr/></p></span>
3559                  </li>
3560                  <li>
3561                    <span class="entry_type_enum_name">SOLARIZE</span>
3562                    <span class="entry_type_enum_optional">[optional]</span>
3563                    <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
3564image is wholly or partially reversed in
3565tone.<wbr/></p></span>
3566                  </li>
3567                  <li>
3568                    <span class="entry_type_enum_name">SEPIA</span>
3569                    <span class="entry_type_enum_optional">[optional]</span>
3570                    <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
3571gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
3572                  </li>
3573                  <li>
3574                    <span class="entry_type_enum_name">POSTERIZE</span>
3575                    <span class="entry_type_enum_optional">[optional]</span>
3576                    <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
3577discrete regions of tone rather than a continuous
3578gradient of tones.<wbr/></p></span>
3579                  </li>
3580                  <li>
3581                    <span class="entry_type_enum_name">WHITEBOARD</span>
3582                    <span class="entry_type_enum_optional">[optional]</span>
3583                    <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
3584as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
3585                  </li>
3586                  <li>
3587                    <span class="entry_type_enum_name">BLACKBOARD</span>
3588                    <span class="entry_type_enum_optional">[optional]</span>
3589                    <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
3590as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
3591                  </li>
3592                  <li>
3593                    <span class="entry_type_enum_name">AQUA</span>
3594                    <span class="entry_type_enum_optional">[optional]</span>
3595                    <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
3596                  </li>
3597                </ul>
3598
3599            </td> <!-- entry_type -->
3600
3601            <td class="entry_description">
3602              <p>A special color effect to apply.<wbr/></p>
3603            </td>
3604
3605            <td class="entry_units">
3606            </td>
3607
3608            <td class="entry_range">
3609              <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
3610            </td>
3611
3612            <td class="entry_tags">
3613              <ul class="entry_tags">
3614                  <li><a href="#tag_BC">BC</a></li>
3615              </ul>
3616            </td>
3617
3618          </tr>
3619          <tr class="entries_header">
3620            <th class="th_details" colspan="5">Details</th>
3621          </tr>
3622          <tr class="entry_cont">
3623            <td class="entry_details" colspan="5">
3624              <p>When this mode is set,<wbr/> a color effect will be applied
3625to images produced by the camera device.<wbr/> The interpretation
3626and implementation of these color effects is left to the
3627implementor of the camera device,<wbr/> and should not be
3628depended on to be consistent (or present) across all
3629devices.<wbr/></p>
3630            </td>
3631          </tr>
3632
3633
3634          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3635           <!-- end of entry -->
3636
3637
3638          <tr class="entry" id="controls_android.control.mode">
3639            <td class="entry_name
3640             " rowspan="3">
3641              android.<wbr/>control.<wbr/>mode
3642            </td>
3643            <td class="entry_type">
3644                <span class="entry_type_name entry_type_name_enum">byte</span>
3645
3646              <span class="entry_type_visibility"> [public]</span>
3647
3648
3649              <span class="entry_type_hwlevel">[legacy] </span>
3650
3651
3652
3653                <ul class="entry_type_enum">
3654                  <li>
3655                    <span class="entry_type_enum_name">OFF</span>
3656                    <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
3657<p>All control by the device's metering and focusing (3A)
3658routines is disabled,<wbr/> and no other settings in
3659android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
3660<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
3661device to select post-processing values for processing
3662blocks that do not allow for manual control,<wbr/> or are not
3663exposed by the camera API.<wbr/></p>
3664<p>However,<wbr/> the camera device's 3A routines may continue to
3665collect statistics and update their internal state so that
3666when control is switched to AUTO mode,<wbr/> good control values
3667can be immediately applied.<wbr/></p></span>
3668                  </li>
3669                  <li>
3670                    <span class="entry_type_enum_name">AUTO</span>
3671                    <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
3672<p>Manual control of capture parameters is disabled.<wbr/> All
3673controls in android.<wbr/>control.<wbr/>* besides sceneMode take
3674effect.<wbr/></p></span>
3675                  </li>
3676                  <li>
3677                    <span class="entry_type_enum_name">USE_SCENE_MODE</span>
3678                    <span class="entry_type_enum_optional">[optional]</span>
3679                    <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
3680<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
3681control.<wbr/>afMode controls; the camera device will ignore
3682those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
3683FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
3684This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
3685<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
3686contain some modes other than DISABLED).<wbr/></p></span>
3687                  </li>
3688                  <li>
3689                    <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
3690                    <span class="entry_type_enum_optional">[optional]</span>
3691                    <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
3692used by camera device background auto-exposure,<wbr/> auto-white balance and
3693auto-focus algorithms (3A) to update their statistics.<wbr/></p>
3694<p>Specifically,<wbr/> the 3A routines are locked to the last
3695values set from a request with AUTO,<wbr/> OFF,<wbr/> or
3696USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
3697collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
3698discarded by the camera device.<wbr/></p></span>
3699                  </li>
3700                </ul>
3701
3702            </td> <!-- entry_type -->
3703
3704            <td class="entry_description">
3705              <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
3706routines.<wbr/></p>
3707            </td>
3708
3709            <td class="entry_units">
3710            </td>
3711
3712            <td class="entry_range">
3713              <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
3714            </td>
3715
3716            <td class="entry_tags">
3717              <ul class="entry_tags">
3718                  <li><a href="#tag_BC">BC</a></li>
3719              </ul>
3720            </td>
3721
3722          </tr>
3723          <tr class="entries_header">
3724            <th class="th_details" colspan="5">Details</th>
3725          </tr>
3726          <tr class="entry_cont">
3727            <td class="entry_details" colspan="5">
3728              <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
3729by the camera device is disabled.<wbr/> The application must set the fields for
3730capture parameters itself.<wbr/></p>
3731<p>When set to AUTO,<wbr/> the individual algorithm controls in
3732android.<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>
3733<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
3734android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
3735one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
3736as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
3737<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
3738<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
3739is that this frame will not be used by camera device background 3A statistics
3740update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
3741where the application doesn't want a 3A manual control capture to affect
3742the subsequent auto 3A capture results.<wbr/></p>
3743            </td>
3744          </tr>
3745
3746
3747          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3748           <!-- end of entry -->
3749
3750
3751          <tr class="entry" id="controls_android.control.sceneMode">
3752            <td class="entry_name
3753             " rowspan="5">
3754              android.<wbr/>control.<wbr/>scene<wbr/>Mode
3755            </td>
3756            <td class="entry_type">
3757                <span class="entry_type_name entry_type_name_enum">byte</span>
3758
3759              <span class="entry_type_visibility"> [public]</span>
3760
3761
3762              <span class="entry_type_hwlevel">[legacy] </span>
3763
3764
3765
3766                <ul class="entry_type_enum">
3767                  <li>
3768                    <span class="entry_type_enum_name">DISABLED</span>
3769                    <span class="entry_type_enum_value">0</span>
3770                    <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
3771                  </li>
3772                  <li>
3773                    <span class="entry_type_enum_name">FACE_PRIORITY</span>
3774                    <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
3775detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
3776auto-exposure routines.<wbr/></p>
3777<p>If face detection statistics are disabled
3778(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/>
3779this should still operate correctly (but will not return
3780face detection statistics to the framework).<wbr/></p>
3781<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3782<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>
3783remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
3784                  </li>
3785                  <li>
3786                    <span class="entry_type_enum_name">ACTION</span>
3787                    <span class="entry_type_enum_optional">[optional]</span>
3788                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
3789<p>Similar to SPORTS.<wbr/></p></span>
3790                  </li>
3791                  <li>
3792                    <span class="entry_type_enum_name">PORTRAIT</span>
3793                    <span class="entry_type_enum_optional">[optional]</span>
3794                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
3795                  </li>
3796                  <li>
3797                    <span class="entry_type_enum_name">LANDSCAPE</span>
3798                    <span class="entry_type_enum_optional">[optional]</span>
3799                    <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
3800                  </li>
3801                  <li>
3802                    <span class="entry_type_enum_name">NIGHT</span>
3803                    <span class="entry_type_enum_optional">[optional]</span>
3804                    <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
3805                  </li>
3806                  <li>
3807                    <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
3808                    <span class="entry_type_enum_optional">[optional]</span>
3809                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
3810settings.<wbr/></p></span>
3811                  </li>
3812                  <li>
3813                    <span class="entry_type_enum_name">THEATRE</span>
3814                    <span class="entry_type_enum_optional">[optional]</span>
3815                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
3816remain off.<wbr/></p></span>
3817                  </li>
3818                  <li>
3819                    <span class="entry_type_enum_name">BEACH</span>
3820                    <span class="entry_type_enum_optional">[optional]</span>
3821                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
3822                  </li>
3823                  <li>
3824                    <span class="entry_type_enum_name">SNOW</span>
3825                    <span class="entry_type_enum_optional">[optional]</span>
3826                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
3827                  </li>
3828                  <li>
3829                    <span class="entry_type_enum_name">SUNSET</span>
3830                    <span class="entry_type_enum_optional">[optional]</span>
3831                    <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
3832                  </li>
3833                  <li>
3834                    <span class="entry_type_enum_name">STEADYPHOTO</span>
3835                    <span class="entry_type_enum_optional">[optional]</span>
3836                    <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
3837device motion (for example: due to hand shake).<wbr/></p></span>
3838                  </li>
3839                  <li>
3840                    <span class="entry_type_enum_name">FIREWORKS</span>
3841                    <span class="entry_type_enum_optional">[optional]</span>
3842                    <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
3843                  </li>
3844                  <li>
3845                    <span class="entry_type_enum_name">SPORTS</span>
3846                    <span class="entry_type_enum_optional">[optional]</span>
3847                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
3848<p>Similar to ACTION.<wbr/></p></span>
3849                  </li>
3850                  <li>
3851                    <span class="entry_type_enum_name">PARTY</span>
3852                    <span class="entry_type_enum_optional">[optional]</span>
3853                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
3854people.<wbr/></p></span>
3855                  </li>
3856                  <li>
3857                    <span class="entry_type_enum_name">CANDLELIGHT</span>
3858                    <span class="entry_type_enum_optional">[optional]</span>
3859                    <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
3860is a flame.<wbr/></p></span>
3861                  </li>
3862                  <li>
3863                    <span class="entry_type_enum_name">BARCODE</span>
3864                    <span class="entry_type_enum_optional">[optional]</span>
3865                    <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
3866for use by camera applications that wish to read the
3867barcode value.<wbr/></p></span>
3868                  </li>
3869                  <li>
3870                    <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
3871                    <span class="entry_type_enum_deprecated">[deprecated]</span>
3872                    <span class="entry_type_enum_optional">[optional]</span>
3873                    <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>
3874and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
3875for high speed video recording.<wbr/></p>
3876<p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
3877<p>The supported high speed video sizes and fps ranges are specified in
3878<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
3879output frame rates,<wbr/> the application is only allowed to select video size
3880and fps range combinations listed in this static metadata.<wbr/> The fps range
3881can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
3882<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
3883ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
3884controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
3885and post-processing parameters is possible.<wbr/> All other controls operate the
3886same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
3887android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
3888<ul>
3889<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
3890<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
3891<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
3892<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
3893<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
3894<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
3895<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
3896<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
3897<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
3898<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
3899</ul>
3900<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
3901<ul>
3902<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>
3903<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
3904<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
3905<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
3906</ul>
3907<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
3908be lower than what camera can output,<wbr/> depending on the destination Surfaces for
3909the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
3910the application need check if the video encoder is capable of supporting the
3911high frame rate for a given video size,<wbr/> or it will end up with lower recording
3912frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
3913rate will be bounded by the screen refresh rate.<wbr/></p>
3914<p>The camera device will only support up to 2 output high speed streams
3915(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
3916in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
3917<ul>
3918<li>The application created no more than maxNumHighSpeedStreams processed non-stalling
3919format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
3920min(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>
3921<li>The stream sizes are selected from the sizes reported by
3922<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
3923<li>No processed non-stalling or raw streams are configured.<wbr/></li>
3924</ul>
3925<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
3926<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/>
3927the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
3928and the returned capture result metadata will give the fps range choosen
3929by the camera device.<wbr/></p>
3930<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
3931reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
3932the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
3933                  </li>
3934                  <li>
3935                    <span class="entry_type_enum_name">HDR</span>
3936                    <span class="entry_type_enum_optional">[optional]</span>
3937                    <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
3938<p>In this scene mode,<wbr/> the camera device captures images
3939that keep a larger range of scene illumination levels
3940visible in the final image.<wbr/> For example,<wbr/> when taking a
3941picture of a object in front of a bright window,<wbr/> both
3942the object and the scene through the window may be
3943visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
3944one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
3945HDR mode generally takes much longer to capture a single
3946image,<wbr/> has no user control,<wbr/> and may have other artifacts
3947depending on the HDR method used.<wbr/></p>
3948<p>Therefore,<wbr/> HDR captures operate at a much slower rate
3949than regular captures.<wbr/></p>
3950<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
3951is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
3952STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
3953using a high dynamic range capture technique.<wbr/>  On LEGACY
3954devices,<wbr/> captures that target a JPEG-format output will
3955be captured with HDR,<wbr/> and the capture intent is not
3956relevant.<wbr/></p>
3957<p>The HDR capture may involve the device capturing a burst
3958of images internally and combining them into one,<wbr/> or it
3959may involve the device using specialized high dynamic
3960range capture hardware.<wbr/> In all cases,<wbr/> a single image is
3961produced in response to a capture request submitted
3962while in HDR mode.<wbr/></p>
3963<p>Since substantial post-processing is generally needed to
3964produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
3965outputs are supported for LIMITED/<wbr/>FULL device HDR
3966captures,<wbr/> and only JPEG outputs are supported for LEGACY
3967HDR captures.<wbr/> Using a RAW output for HDR capture is not
3968supported.<wbr/></p>
3969<p>Some devices may also support always-on HDR,<wbr/> which
3970applies HDR processing at full frame rate.<wbr/>  For these
3971devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
3972produce an HDR output with no frame rate impact compared
3973to normal operation,<wbr/> though the quality may be lower
3974than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
3975<p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
3976or capture intents,<wbr/> the images captured will be as if
3977the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
3978                  </li>
3979                  <li>
3980                    <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span>
3981                    <span class="entry_type_enum_optional">[optional]</span>
3982                    <span class="entry_type_enum_hidden">[hidden]</span>
3983                    <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
3984device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
3985under low light conditions.<wbr/></p>
3986<p>The camera device may be tuned to expose the images in a reduced
3987sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
3988if 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/>
3989the camera device auto-exposure routine tuning process may limit the actual
3990exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
3991exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
3992low light may be under-exposed when the sensor max exposure time (bounded by the
3993<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
3994ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
3995camera device auto-exposure routine to increase the sensitivity up to the max
3996sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
3997dark and the max exposure time is reached.<wbr/> The captured images may be noisier
3998compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
3999recommended that the application only use this scene mode when it is capable of
4000reducing the noise level of the captured images.<wbr/></p>
4001<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4002<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>
4003remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
4004                  </li>
4005                  <li>
4006                    <span class="entry_type_enum_name">DEVICE_CUSTOM_START</span>
4007                    <span class="entry_type_enum_optional">[optional]</span>
4008                    <span class="entry_type_enum_hidden">[hidden]</span>
4009                    <span class="entry_type_enum_value">100</span>
4010                    <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4011<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4012customized scene modes.<wbr/></p></span>
4013                  </li>
4014                  <li>
4015                    <span class="entry_type_enum_name">DEVICE_CUSTOM_END</span>
4016                    <span class="entry_type_enum_optional">[optional]</span>
4017                    <span class="entry_type_enum_hidden">[hidden]</span>
4018                    <span class="entry_type_enum_value">127</span>
4019                    <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4020<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4021customized scene modes.<wbr/></p></span>
4022                  </li>
4023                </ul>
4024
4025            </td> <!-- entry_type -->
4026
4027            <td class="entry_description">
4028              <p>Control for which scene mode is currently active.<wbr/></p>
4029            </td>
4030
4031            <td class="entry_units">
4032            </td>
4033
4034            <td class="entry_range">
4035              <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
4036            </td>
4037
4038            <td class="entry_tags">
4039              <ul class="entry_tags">
4040                  <li><a href="#tag_BC">BC</a></li>
4041              </ul>
4042            </td>
4043
4044          </tr>
4045          <tr class="entries_header">
4046            <th class="th_details" colspan="5">Details</th>
4047          </tr>
4048          <tr class="entry_cont">
4049            <td class="entry_details" colspan="5">
4050              <p>Scene modes are custom camera modes optimized for a certain set of conditions and
4051capture settings.<wbr/></p>
4052<p>This is the mode that that is active when
4053<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
4054disable <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>
4055while in use.<wbr/></p>
4056<p>The interpretation and implementation of these scene modes is left
4057to the implementor of the camera device.<wbr/> Their behavior will not be
4058consistent across all devices,<wbr/> and any given device may only implement
4059a subset of these modes.<wbr/></p>
4060            </td>
4061          </tr>
4062
4063          <tr class="entries_header">
4064            <th class="th_details" colspan="5">HAL Implementation Details</th>
4065          </tr>
4066          <tr class="entry_cont">
4067            <td class="entry_details" colspan="5">
4068              <p>HAL implementations that include scene modes are expected to provide
4069the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4070<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
4071<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
4072<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/>
4073the HAL must list supported video size and fps range in
4074<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/>
40751280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming
4076mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture
4077requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/>
4078This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
4079<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
4080capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
4081            </td>
4082          </tr>
4083
4084          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4085           <!-- end of entry -->
4086
4087
4088          <tr class="entry" id="controls_android.control.videoStabilizationMode">
4089            <td class="entry_name
4090             " rowspan="3">
4091              android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
4092            </td>
4093            <td class="entry_type">
4094                <span class="entry_type_name entry_type_name_enum">byte</span>
4095
4096              <span class="entry_type_visibility"> [public]</span>
4097
4098
4099              <span class="entry_type_hwlevel">[legacy] </span>
4100
4101
4102
4103                <ul class="entry_type_enum">
4104                  <li>
4105                    <span class="entry_type_enum_name">OFF</span>
4106                    <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
4107                  </li>
4108                  <li>
4109                    <span class="entry_type_enum_name">ON</span>
4110                    <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
4111                  </li>
4112                </ul>
4113
4114            </td> <!-- entry_type -->
4115
4116            <td class="entry_description">
4117              <p>Whether video stabilization is
4118active.<wbr/></p>
4119            </td>
4120
4121            <td class="entry_units">
4122            </td>
4123
4124            <td class="entry_range">
4125            </td>
4126
4127            <td class="entry_tags">
4128              <ul class="entry_tags">
4129                  <li><a href="#tag_BC">BC</a></li>
4130              </ul>
4131            </td>
4132
4133          </tr>
4134          <tr class="entries_header">
4135            <th class="th_details" colspan="5">Details</th>
4136          </tr>
4137          <tr class="entry_cont">
4138            <td class="entry_details" colspan="5">
4139              <p>Video stabilization automatically warps images from
4140the camera in order to stabilize motion between consecutive frames.<wbr/></p>
4141<p>If enabled,<wbr/> video stabilization can modify the
4142<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
4143<p>Switching between different video stabilization modes may take several
4144frames to initialize,<wbr/> the camera device will report the current mode
4145in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
4146the video stabilization modes in the first several capture results may
4147still be "OFF",<wbr/> and it will become "ON" when the initialization is
4148done.<wbr/></p>
4149<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
4150stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
4151that an output targeting a MediaRecorder or MediaCodec will be stabilized if
4152the recording resolution is less than or equal to 1920 x 1080 (width less than
4153or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
4154frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
4155<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
4156OFF if the recording output is not stabilized,<wbr/> or if there are no output
4157Surface types that can be stabilized.<wbr/></p>
4158<p>If a camera device supports both this mode and OIS
4159(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
4160produce undesirable interaction,<wbr/> so it is recommended not to enable
4161both at the same time.<wbr/></p>
4162            </td>
4163          </tr>
4164
4165
4166          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4167           <!-- end of entry -->
4168
4169
4170          <tr class="entry" id="controls_android.control.postRawSensitivityBoost">
4171            <td class="entry_name
4172             " rowspan="3">
4173              android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
4174            </td>
4175            <td class="entry_type">
4176                <span class="entry_type_name">int32</span>
4177
4178              <span class="entry_type_visibility"> [public]</span>
4179
4180
4181
4182
4183
4184
4185            </td> <!-- entry_type -->
4186
4187            <td class="entry_description">
4188              <p>The amount of additional sensitivity boost applied to output images
4189after RAW sensor data is captured.<wbr/></p>
4190            </td>
4191
4192            <td class="entry_units">
4193              ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
4194            </td>
4195
4196            <td class="entry_range">
4197              <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
4198            </td>
4199
4200            <td class="entry_tags">
4201            </td>
4202
4203          </tr>
4204          <tr class="entries_header">
4205            <th class="th_details" colspan="5">Details</th>
4206          </tr>
4207          <tr class="entry_cont">
4208            <td class="entry_details" colspan="5">
4209              <p>Some camera devices support additional digital sensitivity boosting in the
4210camera processing pipeline after sensor RAW image is captured.<wbr/>
4211Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
4212have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
4213<p>This key will be <code>null</code> for devices that do not support any RAW format
4214outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
4215present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
4216list <code>100</code> in this key.<wbr/></p>
4217<p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
4218boost to the nearest supported value.<wbr/>
4219The final boost value used will be available in the output capture result.<wbr/></p>
4220<p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
4221of such device will have the total sensitivity of
4222<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>
4223The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
4224<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
4225OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
4226            </td>
4227          </tr>
4228
4229
4230          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4231           <!-- end of entry -->
4232
4233
4234          <tr class="entry" id="controls_android.control.enableZsl">
4235            <td class="entry_name
4236             " rowspan="5">
4237              android.<wbr/>control.<wbr/>enable<wbr/>Zsl
4238            </td>
4239            <td class="entry_type">
4240                <span class="entry_type_name entry_type_name_enum">byte</span>
4241
4242              <span class="entry_type_visibility"> [public as boolean]</span>
4243
4244
4245
4246
4247
4248                <ul class="entry_type_enum">
4249                  <li>
4250                    <span class="entry_type_enum_name">FALSE</span>
4251                    <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
4252after previous requests.<wbr/></p></span>
4253                  </li>
4254                  <li>
4255                    <span class="entry_type_enum_name">TRUE</span>
4256                    <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
4257captured before previous requests.<wbr/></p></span>
4258                  </li>
4259                </ul>
4260
4261            </td> <!-- entry_type -->
4262
4263            <td class="entry_description">
4264              <p>Allow camera device to enable zero-shutter-lag mode for requests with
4265<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
4266            </td>
4267
4268            <td class="entry_units">
4269            </td>
4270
4271            <td class="entry_range">
4272            </td>
4273
4274            <td class="entry_tags">
4275            </td>
4276
4277          </tr>
4278          <tr class="entries_header">
4279            <th class="th_details" colspan="5">Details</th>
4280          </tr>
4281          <tr class="entry_cont">
4282            <td class="entry_details" colspan="5">
4283              <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
4284STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
4285produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
4286<a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
4287Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
4288compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
4289capture intents.<wbr/></p>
4290<p>For example,<wbr/> when requests are submitted in the following order:
4291  Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
4292  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>
4293<p>The output images for request B may have contents captured before the output images for
4294request A,<wbr/> and the result metadata for request B may be older than the result metadata for
4295request A.<wbr/></p>
4296<p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
4297the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
4298<p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
4299TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
4300<code>false</code> if present.<wbr/></p>
4301<p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
4302capture templates is always <code>false</code> if present.<wbr/></p>
4303<p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
4304            </td>
4305          </tr>
4306
4307          <tr class="entries_header">
4308            <th class="th_details" colspan="5">HAL Implementation Details</th>
4309          </tr>
4310          <tr class="entry_cont">
4311            <td class="entry_details" colspan="5">
4312              <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
4313capture intent.<wbr/></p>
4314            </td>
4315          </tr>
4316
4317          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4318           <!-- end of entry -->
4319
4320
4321
4322      <!-- end of kind -->
4323      </tbody>
4324      <tr><td colspan="6" class="kind">static</td></tr>
4325
4326      <thead class="entries_header">
4327        <tr>
4328          <th class="th_name">Property Name</th>
4329          <th class="th_type">Type</th>
4330          <th class="th_description">Description</th>
4331          <th class="th_units">Units</th>
4332          <th class="th_range">Range</th>
4333          <th class="th_tags">Tags</th>
4334        </tr>
4335      </thead>
4336
4337      <tbody>
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348          <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
4349            <td class="entry_name
4350             " rowspan="3">
4351              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
4352            </td>
4353            <td class="entry_type">
4354                <span class="entry_type_name">byte</span>
4355                <span class="entry_type_container">x</span>
4356
4357                <span class="entry_type_array">
4358                  n
4359                </span>
4360              <span class="entry_type_visibility"> [public as enumList]</span>
4361
4362
4363              <span class="entry_type_hwlevel">[legacy] </span>
4364
4365
4366                <div class="entry_type_notes">list of enums</div>
4367
4368
4369            </td> <!-- entry_type -->
4370
4371            <td class="entry_description">
4372              <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
4373supported by this camera device.<wbr/></p>
4374            </td>
4375
4376            <td class="entry_units">
4377            </td>
4378
4379            <td class="entry_range">
4380              <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
4381            </td>
4382
4383            <td class="entry_tags">
4384              <ul class="entry_tags">
4385                  <li><a href="#tag_BC">BC</a></li>
4386              </ul>
4387            </td>
4388
4389          </tr>
4390          <tr class="entries_header">
4391            <th class="th_details" colspan="5">Details</th>
4392          </tr>
4393          <tr class="entry_cont">
4394            <td class="entry_details" colspan="5">
4395              <p>Not all of the auto-exposure anti-banding modes may be
4396supported by a given camera device.<wbr/> This field lists the
4397valid anti-banding modes that the application may request
4398for this camera device with the
4399<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
4400            </td>
4401          </tr>
4402
4403
4404          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4405           <!-- end of entry -->
4406
4407
4408          <tr class="entry" id="static_android.control.aeAvailableModes">
4409            <td class="entry_name
4410             " rowspan="3">
4411              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
4412            </td>
4413            <td class="entry_type">
4414                <span class="entry_type_name">byte</span>
4415                <span class="entry_type_container">x</span>
4416
4417                <span class="entry_type_array">
4418                  n
4419                </span>
4420              <span class="entry_type_visibility"> [public as enumList]</span>
4421
4422
4423              <span class="entry_type_hwlevel">[legacy] </span>
4424
4425
4426                <div class="entry_type_notes">list of enums</div>
4427
4428
4429            </td> <!-- entry_type -->
4430
4431            <td class="entry_description">
4432              <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
4433device.<wbr/></p>
4434            </td>
4435
4436            <td class="entry_units">
4437            </td>
4438
4439            <td class="entry_range">
4440              <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
4441            </td>
4442
4443            <td class="entry_tags">
4444              <ul class="entry_tags">
4445                  <li><a href="#tag_BC">BC</a></li>
4446              </ul>
4447            </td>
4448
4449          </tr>
4450          <tr class="entries_header">
4451            <th class="th_details" colspan="5">Details</th>
4452          </tr>
4453          <tr class="entry_cont">
4454            <td class="entry_details" colspan="5">
4455              <p>Not all the auto-exposure modes may be supported by a
4456given camera device,<wbr/> especially if no flash unit is
4457available.<wbr/> This entry lists the valid modes for
4458<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
4459<p>All camera devices support ON,<wbr/> and all camera devices with flash
4460units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
4461<p>FULL mode camera devices always support OFF mode,<wbr/>
4462which enables application control of camera exposure time,<wbr/>
4463sensitivity,<wbr/> and frame duration.<wbr/></p>
4464<p>LEGACY mode camera devices never support OFF mode.<wbr/>
4465LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR
4466capability.<wbr/></p>
4467            </td>
4468          </tr>
4469
4470
4471          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4472           <!-- end of entry -->
4473
4474
4475          <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
4476            <td class="entry_name
4477             " rowspan="3">
4478              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
4479            </td>
4480            <td class="entry_type">
4481                <span class="entry_type_name">int32</span>
4482                <span class="entry_type_container">x</span>
4483
4484                <span class="entry_type_array">
4485                  2 x n
4486                </span>
4487              <span class="entry_type_visibility"> [public as rangeInt]</span>
4488
4489
4490              <span class="entry_type_hwlevel">[legacy] </span>
4491
4492
4493                <div class="entry_type_notes">list of pairs of frame rates</div>
4494
4495
4496            </td> <!-- entry_type -->
4497
4498            <td class="entry_description">
4499              <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
4500this camera device.<wbr/></p>
4501            </td>
4502
4503            <td class="entry_units">
4504              Frames per second (FPS)
4505            </td>
4506
4507            <td class="entry_range">
4508            </td>
4509
4510            <td class="entry_tags">
4511              <ul class="entry_tags">
4512                  <li><a href="#tag_BC">BC</a></li>
4513              </ul>
4514            </td>
4515
4516          </tr>
4517          <tr class="entries_header">
4518            <th class="th_details" colspan="5">Details</th>
4519          </tr>
4520          <tr class="entry_cont">
4521            <td class="entry_details" colspan="5">
4522              <p>For devices at the LEGACY level or above:</p>
4523<ul>
4524<li>
4525<p>For constant-framerate recording,<wbr/> for each normal
4526<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a
4527<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4528<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in
4529the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/>
4530<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is
4531supported by the device and has
4532<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will
4533always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p>
4534</li>
4535<li>
4536<p>Also,<wbr/> a camera device must either not support any
4537<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/>
4538or support at least one
4539normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4540<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> &gt;= 24.<wbr/></p>
4541</li>
4542</ul>
4543<p>For devices at the LIMITED level or above:</p>
4544<ul>
4545<li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>)
4546and (<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> &lt;= 15 and <code>max</code> = the maximum output frame rate of the
4547maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li>
4548</ul>
4549            </td>
4550          </tr>
4551
4552
4553          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4554           <!-- end of entry -->
4555
4556
4557          <tr class="entry" id="static_android.control.aeCompensationRange">
4558            <td class="entry_name
4559             " rowspan="1">
4560              android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
4561            </td>
4562            <td class="entry_type">
4563                <span class="entry_type_name">int32</span>
4564                <span class="entry_type_container">x</span>
4565
4566                <span class="entry_type_array">
4567                  2
4568                </span>
4569              <span class="entry_type_visibility"> [public as rangeInt]</span>
4570
4571
4572              <span class="entry_type_hwlevel">[legacy] </span>
4573
4574
4575
4576
4577            </td> <!-- entry_type -->
4578
4579            <td class="entry_description">
4580              <p>Maximum and minimum exposure compensation values for
4581<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/>
4582that are supported by this camera device.<wbr/></p>
4583            </td>
4584
4585            <td class="entry_units">
4586            </td>
4587
4588            <td class="entry_range">
4589              <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
4590<p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
4591compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
4592<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>
4593<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>
4594<p>LEGACY devices may support a smaller range than this.<wbr/></p>
4595            </td>
4596
4597            <td class="entry_tags">
4598              <ul class="entry_tags">
4599                  <li><a href="#tag_BC">BC</a></li>
4600              </ul>
4601            </td>
4602
4603          </tr>
4604
4605
4606          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4607           <!-- end of entry -->
4608
4609
4610          <tr class="entry" id="static_android.control.aeCompensationStep">
4611            <td class="entry_name
4612             " rowspan="5">
4613              android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
4614            </td>
4615            <td class="entry_type">
4616                <span class="entry_type_name">rational</span>
4617
4618              <span class="entry_type_visibility"> [public]</span>
4619
4620
4621              <span class="entry_type_hwlevel">[legacy] </span>
4622
4623
4624
4625
4626            </td> <!-- entry_type -->
4627
4628            <td class="entry_description">
4629              <p>Smallest step by which the exposure compensation
4630can be changed.<wbr/></p>
4631            </td>
4632
4633            <td class="entry_units">
4634              Exposure Value (EV)
4635            </td>
4636
4637            <td class="entry_range">
4638            </td>
4639
4640            <td class="entry_tags">
4641              <ul class="entry_tags">
4642                  <li><a href="#tag_BC">BC</a></li>
4643              </ul>
4644            </td>
4645
4646          </tr>
4647          <tr class="entries_header">
4648            <th class="th_details" colspan="5">Details</th>
4649          </tr>
4650          <tr class="entry_cont">
4651            <td class="entry_details" colspan="5">
4652              <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
4653a 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
4654that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
4655<p>One unit of EV compensation changes the brightness of the captured image by a factor
4656of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p>
4657            </td>
4658          </tr>
4659
4660          <tr class="entries_header">
4661            <th class="th_details" colspan="5">HAL Implementation Details</th>
4662          </tr>
4663          <tr class="entry_cont">
4664            <td class="entry_details" colspan="5">
4665              <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
4666            </td>
4667          </tr>
4668
4669          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4670           <!-- end of entry -->
4671
4672
4673          <tr class="entry" id="static_android.control.afAvailableModes">
4674            <td class="entry_name
4675             " rowspan="3">
4676              android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
4677            </td>
4678            <td class="entry_type">
4679                <span class="entry_type_name">byte</span>
4680                <span class="entry_type_container">x</span>
4681
4682                <span class="entry_type_array">
4683                  n
4684                </span>
4685              <span class="entry_type_visibility"> [public as enumList]</span>
4686
4687
4688              <span class="entry_type_hwlevel">[legacy] </span>
4689
4690
4691                <div class="entry_type_notes">List of enums</div>
4692
4693
4694            </td> <!-- entry_type -->
4695
4696            <td class="entry_description">
4697              <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are
4698supported by this camera device.<wbr/></p>
4699            </td>
4700
4701            <td class="entry_units">
4702            </td>
4703
4704            <td class="entry_range">
4705              <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
4706            </td>
4707
4708            <td class="entry_tags">
4709              <ul class="entry_tags">
4710                  <li><a href="#tag_BC">BC</a></li>
4711              </ul>
4712            </td>
4713
4714          </tr>
4715          <tr class="entries_header">
4716            <th class="th_details" colspan="5">Details</th>
4717          </tr>
4718          <tr class="entry_cont">
4719            <td class="entry_details" colspan="5">
4720              <p>Not all the auto-focus modes may be supported by a
4721given camera device.<wbr/> This entry lists the valid modes for
4722<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
4723<p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all
4724camera devices with adjustable focuser units
4725(<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>
4726<p>LEGACY devices will support OFF mode only if they support
4727focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to
4728<code>0.<wbr/>0f</code>).<wbr/></p>
4729            </td>
4730          </tr>
4731
4732
4733          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4734           <!-- end of entry -->
4735
4736
4737          <tr class="entry" id="static_android.control.availableEffects">
4738            <td class="entry_name
4739             " rowspan="3">
4740              android.<wbr/>control.<wbr/>available<wbr/>Effects
4741            </td>
4742            <td class="entry_type">
4743                <span class="entry_type_name">byte</span>
4744                <span class="entry_type_container">x</span>
4745
4746                <span class="entry_type_array">
4747                  n
4748                </span>
4749              <span class="entry_type_visibility"> [public as enumList]</span>
4750
4751
4752              <span class="entry_type_hwlevel">[legacy] </span>
4753
4754
4755                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
4756
4757
4758            </td> <!-- entry_type -->
4759
4760            <td class="entry_description">
4761              <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
4762device.<wbr/></p>
4763            </td>
4764
4765            <td class="entry_units">
4766            </td>
4767
4768            <td class="entry_range">
4769              <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
4770            </td>
4771
4772            <td class="entry_tags">
4773              <ul class="entry_tags">
4774                  <li><a href="#tag_BC">BC</a></li>
4775              </ul>
4776            </td>
4777
4778          </tr>
4779          <tr class="entries_header">
4780            <th class="th_details" colspan="5">Details</th>
4781          </tr>
4782          <tr class="entry_cont">
4783            <td class="entry_details" colspan="5">
4784              <p>This list contains the color effect modes that can be applied to
4785images produced by the camera device.<wbr/>
4786Implementations are not expected to be consistent across all devices.<wbr/>
4787If no color effect modes are available for a device,<wbr/> this will only list
4788OFF.<wbr/></p>
4789<p>A color effect will only be applied if
4790<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/>  OFF is always included in this list.<wbr/></p>
4791<p>This control has no effect on the operation of other control routines such
4792as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p>
4793            </td>
4794          </tr>
4795
4796
4797          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4798           <!-- end of entry -->
4799
4800
4801          <tr class="entry" id="static_android.control.availableSceneModes">
4802            <td class="entry_name
4803             " rowspan="3">
4804              android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
4805            </td>
4806            <td class="entry_type">
4807                <span class="entry_type_name">byte</span>
4808                <span class="entry_type_container">x</span>
4809
4810                <span class="entry_type_array">
4811                  n
4812                </span>
4813              <span class="entry_type_visibility"> [public as enumList]</span>
4814
4815
4816              <span class="entry_type_hwlevel">[legacy] </span>
4817
4818
4819                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
4820
4821
4822            </td> <!-- entry_type -->
4823
4824            <td class="entry_description">
4825              <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
4826device.<wbr/></p>
4827            </td>
4828
4829            <td class="entry_units">
4830            </td>
4831
4832            <td class="entry_range">
4833              <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
4834            </td>
4835
4836            <td class="entry_tags">
4837              <ul class="entry_tags">
4838                  <li><a href="#tag_BC">BC</a></li>
4839              </ul>
4840            </td>
4841
4842          </tr>
4843          <tr class="entries_header">
4844            <th class="th_details" colspan="5">Details</th>
4845          </tr>
4846          <tr class="entry_cont">
4847            <td class="entry_details" colspan="5">
4848              <p>This list contains scene modes that can be set for the camera device.<wbr/>
4849Only scene modes that have been fully implemented for the
4850camera device may be included here.<wbr/> Implementations are not expected
4851to be consistent across all devices.<wbr/></p>
4852<p>If no scene modes are supported by the camera device,<wbr/> this
4853will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p>
4854<p>FACE_<wbr/>PRIORITY is always listed if face detection is
4855supported (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;
48560</code>).<wbr/></p>
4857            </td>
4858          </tr>
4859
4860
4861          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4862           <!-- end of entry -->
4863
4864
4865          <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
4866            <td class="entry_name
4867             " rowspan="3">
4868              android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
4869            </td>
4870            <td class="entry_type">
4871                <span class="entry_type_name">byte</span>
4872                <span class="entry_type_container">x</span>
4873
4874                <span class="entry_type_array">
4875                  n
4876                </span>
4877              <span class="entry_type_visibility"> [public as enumList]</span>
4878
4879
4880              <span class="entry_type_hwlevel">[legacy] </span>
4881
4882
4883                <div class="entry_type_notes">List of enums.<wbr/></div>
4884
4885
4886            </td> <!-- entry_type -->
4887
4888            <td class="entry_description">
4889              <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>
4890that are supported by this camera device.<wbr/></p>
4891            </td>
4892
4893            <td class="entry_units">
4894            </td>
4895
4896            <td class="entry_range">
4897              <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
4898            </td>
4899
4900            <td class="entry_tags">
4901              <ul class="entry_tags">
4902                  <li><a href="#tag_BC">BC</a></li>
4903              </ul>
4904            </td>
4905
4906          </tr>
4907          <tr class="entries_header">
4908            <th class="th_details" colspan="5">Details</th>
4909          </tr>
4910          <tr class="entry_cont">
4911            <td class="entry_details" colspan="5">
4912              <p>OFF will always be listed.<wbr/></p>
4913            </td>
4914          </tr>
4915
4916
4917          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4918           <!-- end of entry -->
4919
4920
4921          <tr class="entry" id="static_android.control.awbAvailableModes">
4922            <td class="entry_name
4923             " rowspan="3">
4924              android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
4925            </td>
4926            <td class="entry_type">
4927                <span class="entry_type_name">byte</span>
4928                <span class="entry_type_container">x</span>
4929
4930                <span class="entry_type_array">
4931                  n
4932                </span>
4933              <span class="entry_type_visibility"> [public as enumList]</span>
4934
4935
4936              <span class="entry_type_hwlevel">[legacy] </span>
4937
4938
4939                <div class="entry_type_notes">List of enums</div>
4940
4941
4942            </td> <!-- entry_type -->
4943
4944            <td class="entry_description">
4945              <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
4946camera device.<wbr/></p>
4947            </td>
4948
4949            <td class="entry_units">
4950            </td>
4951
4952            <td class="entry_range">
4953              <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
4954            </td>
4955
4956            <td class="entry_tags">
4957              <ul class="entry_tags">
4958                  <li><a href="#tag_BC">BC</a></li>
4959              </ul>
4960            </td>
4961
4962          </tr>
4963          <tr class="entries_header">
4964            <th class="th_details" colspan="5">Details</th>
4965          </tr>
4966          <tr class="entry_cont">
4967            <td class="entry_details" colspan="5">
4968              <p>Not all the auto-white-balance modes may be supported by a
4969given camera device.<wbr/> This entry lists the valid modes for
4970<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
4971<p>All camera devices will support ON mode.<wbr/></p>
4972<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF
4973mode,<wbr/> which enables application control of white balance,<wbr/> by using
4974<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
4975mode camera devices.<wbr/></p>
4976            </td>
4977          </tr>
4978
4979
4980          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4981           <!-- end of entry -->
4982
4983
4984          <tr class="entry" id="static_android.control.maxRegions">
4985            <td class="entry_name
4986             " rowspan="1">
4987              android.<wbr/>control.<wbr/>max<wbr/>Regions
4988            </td>
4989            <td class="entry_type">
4990                <span class="entry_type_name">int32</span>
4991                <span class="entry_type_container">x</span>
4992
4993                <span class="entry_type_array">
4994                  3
4995                </span>
4996              <span class="entry_type_visibility"> [ndk_public]</span>
4997
4998
4999              <span class="entry_type_hwlevel">[legacy] </span>
5000
5001
5002
5003
5004            </td> <!-- entry_type -->
5005
5006            <td class="entry_description">
5007              <p>List of the maximum number of regions that can be used for metering in
5008auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
5009this corresponds to the the maximum number of elements in
5010<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/>
5011and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5012            </td>
5013
5014            <td class="entry_units">
5015            </td>
5016
5017            <td class="entry_range">
5018              <p>Value must be &gt;= 0 for each element.<wbr/> For full-capability devices
5019this value must be &gt;= 1 for AE and AF.<wbr/> The order of the elements is:
5020<code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
5021            </td>
5022
5023            <td class="entry_tags">
5024              <ul class="entry_tags">
5025                  <li><a href="#tag_BC">BC</a></li>
5026              </ul>
5027            </td>
5028
5029          </tr>
5030
5031
5032          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5033           <!-- end of entry -->
5034
5035
5036          <tr class="entry" id="static_android.control.maxRegionsAe">
5037            <td class="entry_name
5038             " rowspan="5">
5039              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
5040            </td>
5041            <td class="entry_type">
5042                <span class="entry_type_name">int32</span>
5043
5044              <span class="entry_type_visibility"> [java_public]</span>
5045
5046              <span class="entry_type_synthetic">[synthetic] </span>
5047
5048              <span class="entry_type_hwlevel">[legacy] </span>
5049
5050
5051
5052
5053            </td> <!-- entry_type -->
5054
5055            <td class="entry_description">
5056              <p>The maximum number of metering regions that can be used by the auto-exposure (AE)
5057routine.<wbr/></p>
5058            </td>
5059
5060            <td class="entry_units">
5061            </td>
5062
5063            <td class="entry_range">
5064              <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
5065value will be &gt;= 1.<wbr/></p>
5066            </td>
5067
5068            <td class="entry_tags">
5069            </td>
5070
5071          </tr>
5072          <tr class="entries_header">
5073            <th class="th_details" colspan="5">Details</th>
5074          </tr>
5075          <tr class="entry_cont">
5076            <td class="entry_details" colspan="5">
5077              <p>This corresponds to the the maximum allowed number of elements in
5078<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
5079            </td>
5080          </tr>
5081
5082          <tr class="entries_header">
5083            <th class="th_details" colspan="5">HAL Implementation Details</th>
5084          </tr>
5085          <tr class="entry_cont">
5086            <td class="entry_details" colspan="5">
5087              <p>This entry is private to the framework.<wbr/> Fill in
5088maxRegions to have this entry be automatically populated.<wbr/></p>
5089            </td>
5090          </tr>
5091
5092          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5093           <!-- end of entry -->
5094
5095
5096          <tr class="entry" id="static_android.control.maxRegionsAwb">
5097            <td class="entry_name
5098             " rowspan="5">
5099              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
5100            </td>
5101            <td class="entry_type">
5102                <span class="entry_type_name">int32</span>
5103
5104              <span class="entry_type_visibility"> [java_public]</span>
5105
5106              <span class="entry_type_synthetic">[synthetic] </span>
5107
5108              <span class="entry_type_hwlevel">[legacy] </span>
5109
5110
5111
5112
5113            </td> <!-- entry_type -->
5114
5115            <td class="entry_description">
5116              <p>The maximum number of metering regions that can be used by the auto-white balance (AWB)
5117routine.<wbr/></p>
5118            </td>
5119
5120            <td class="entry_units">
5121            </td>
5122
5123            <td class="entry_range">
5124              <p>Value will be &gt;= 0.<wbr/></p>
5125            </td>
5126
5127            <td class="entry_tags">
5128            </td>
5129
5130          </tr>
5131          <tr class="entries_header">
5132            <th class="th_details" colspan="5">Details</th>
5133          </tr>
5134          <tr class="entry_cont">
5135            <td class="entry_details" colspan="5">
5136              <p>This corresponds to the the maximum allowed number of elements in
5137<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
5138            </td>
5139          </tr>
5140
5141          <tr class="entries_header">
5142            <th class="th_details" colspan="5">HAL Implementation Details</th>
5143          </tr>
5144          <tr class="entry_cont">
5145            <td class="entry_details" colspan="5">
5146              <p>This entry is private to the framework.<wbr/> Fill in
5147maxRegions to have this entry be automatically populated.<wbr/></p>
5148            </td>
5149          </tr>
5150
5151          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5152           <!-- end of entry -->
5153
5154
5155          <tr class="entry" id="static_android.control.maxRegionsAf">
5156            <td class="entry_name
5157             " rowspan="5">
5158              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
5159            </td>
5160            <td class="entry_type">
5161                <span class="entry_type_name">int32</span>
5162
5163              <span class="entry_type_visibility"> [java_public]</span>
5164
5165              <span class="entry_type_synthetic">[synthetic] </span>
5166
5167              <span class="entry_type_hwlevel">[legacy] </span>
5168
5169
5170
5171
5172            </td> <!-- entry_type -->
5173
5174            <td class="entry_description">
5175              <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p>
5176            </td>
5177
5178            <td class="entry_units">
5179            </td>
5180
5181            <td class="entry_range">
5182              <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
5183value will be &gt;= 1.<wbr/></p>
5184            </td>
5185
5186            <td class="entry_tags">
5187            </td>
5188
5189          </tr>
5190          <tr class="entries_header">
5191            <th class="th_details" colspan="5">Details</th>
5192          </tr>
5193          <tr class="entry_cont">
5194            <td class="entry_details" colspan="5">
5195              <p>This corresponds to the the maximum allowed number of elements in
5196<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5197            </td>
5198          </tr>
5199
5200          <tr class="entries_header">
5201            <th class="th_details" colspan="5">HAL Implementation Details</th>
5202          </tr>
5203          <tr class="entry_cont">
5204            <td class="entry_details" colspan="5">
5205              <p>This entry is private to the framework.<wbr/> Fill in
5206maxRegions to have this entry be automatically populated.<wbr/></p>
5207            </td>
5208          </tr>
5209
5210          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5211           <!-- end of entry -->
5212
5213
5214          <tr class="entry" id="static_android.control.sceneModeOverrides">
5215            <td class="entry_name
5216             " rowspan="5">
5217              android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
5218            </td>
5219            <td class="entry_type">
5220                <span class="entry_type_name">byte</span>
5221                <span class="entry_type_container">x</span>
5222
5223                <span class="entry_type_array">
5224                  3 x length(availableSceneModes)
5225                </span>
5226              <span class="entry_type_visibility"> [system]</span>
5227
5228
5229              <span class="entry_type_hwlevel">[limited] </span>
5230
5231
5232
5233
5234            </td> <!-- entry_type -->
5235
5236            <td class="entry_description">
5237              <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
5238settings to use with each available scene mode.<wbr/></p>
5239            </td>
5240
5241            <td class="entry_units">
5242            </td>
5243
5244            <td class="entry_range">
5245              <p>For each available scene mode,<wbr/> the list must contain three
5246entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5247<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
5248by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
5249where aeMode has the lowest index position.<wbr/></p>
5250            </td>
5251
5252            <td class="entry_tags">
5253              <ul class="entry_tags">
5254                  <li><a href="#tag_BC">BC</a></li>
5255              </ul>
5256            </td>
5257
5258          </tr>
5259          <tr class="entries_header">
5260            <th class="th_details" colspan="5">Details</th>
5261          </tr>
5262          <tr class="entry_cont">
5263            <td class="entry_details" colspan="5">
5264              <p>When a scene mode is enabled,<wbr/> the camera device is expected
5265to 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/>
5266and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
5267that scene mode.<wbr/></p>
5268<p>The order of this list matches that of availableSceneModes,<wbr/>
5269with 3 entries for each mode.<wbr/>  The overrides listed
5270for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/>
5271since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5272<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
5273used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
5274is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and
5275FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p>
5276<p>For example,<wbr/> if availableSceneModes contains
5277<code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/>  then the camera framework
5278expects sceneModeOverrides to have 9 entries formatted like:
5279<code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
5280ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
5281            </td>
5282          </tr>
5283
5284          <tr class="entries_header">
5285            <th class="th_details" colspan="5">HAL Implementation Details</th>
5286          </tr>
5287          <tr class="entry_cont">
5288            <td class="entry_details" colspan="5">
5289              <p>To maintain backward compatibility,<wbr/> this list will be made available
5290in the static metadata of the camera service.<wbr/>  The camera service will
5291use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5292<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
5293mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p>
5294            </td>
5295          </tr>
5296
5297          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5298           <!-- end of entry -->
5299
5300
5301          <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations">
5302            <td class="entry_name
5303             " rowspan="5">
5304              android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations
5305            </td>
5306            <td class="entry_type">
5307                <span class="entry_type_name">int32</span>
5308                <span class="entry_type_container">x</span>
5309
5310                <span class="entry_type_array">
5311                  5 x n
5312                </span>
5313              <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
5314
5315
5316              <span class="entry_type_hwlevel">[limited] </span>
5317
5318
5319
5320
5321            </td> <!-- entry_type -->
5322
5323            <td class="entry_description">
5324              <p>List of available high speed video size,<wbr/> fps range and max batch size configurations
5325supported 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>
5326            </td>
5327
5328            <td class="entry_units">
5329            </td>
5330
5331            <td class="entry_range">
5332              <p>For each configuration,<wbr/> the fps_<wbr/>max &gt;= 120fps.<wbr/></p>
5333            </td>
5334
5335            <td class="entry_tags">
5336              <ul class="entry_tags">
5337                  <li><a href="#tag_V1">V1</a></li>
5338              </ul>
5339            </td>
5340
5341          </tr>
5342          <tr class="entries_header">
5343            <th class="th_details" colspan="5">Details</th>
5344          </tr>
5345          <tr class="entry_cont">
5346            <td class="entry_details" colspan="5">
5347              <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/>
5348this metadata will list the supported high speed video size,<wbr/> fps range and max batch size
5349configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes
5350reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a>
5351for processed non-stalling formats.<wbr/></p>
5352<p>For the high speed video use case,<wbr/> the application must
5353select the video size and fps range from this metadata to configure the recording and
5354preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends
5355to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to
5356configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata
5357by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the
5358recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application
5359must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams
5360must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p>
5361<p>The min and max fps will be multiple times of 30fps.<wbr/></p>
5362<p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/>
5363to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate
5364multiple frames together and send to camera device for processing where the request
5365controls are same for all the frames in this batch.<wbr/> Max batch size indicates
5366the max possible number of frames the camera device will group together for this high
5367speed stream configuration.<wbr/> This max batch size will be used to generate a high speed
5368recording request list by
5369<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/>
5370The max batch size for each configuration will satisfy below conditions:</p>
5371<ul>
5372<li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/>
5373if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li>
5374<li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but
5375the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch
5376size is 8,<wbr/> the actual batch size used by camera device will only be 1,<wbr/> 2,<wbr/> 4,<wbr/> or 8.<wbr/></li>
5377<li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li>
5378</ul>
5379<p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/>
5380in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p>
5381<p>This fps ranges in this configuration list can only be used to create requests
5382that are submitted to a high speed camera capture session created by
5383<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
5384The fps ranges reported in this metadata must not be used to setup capture requests for
5385normal capture session,<wbr/> or it will cause request error.<wbr/></p>
5386            </td>
5387          </tr>
5388
5389          <tr class="entries_header">
5390            <th class="th_details" colspan="5">HAL Implementation Details</th>
5391          </tr>
5392          <tr class="entry_cont">
5393            <td class="entry_details" colspan="5">
5394              <p>All the sizes listed in this configuration will be a subset of the sizes reported by
5395<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
5396Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
5397of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p>
5398<p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps
5399sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application
5400usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused
5401stutter when starting recording as much as possible,<wbr/> the application may want to ensure
5402the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise
5403the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/>
5404For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise
5405[30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to
5406do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start
5407recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps
5408values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps
5409values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must
5410switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p>
5411            </td>
5412          </tr>
5413
5414          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5415           <!-- end of entry -->
5416
5417
5418          <tr class="entry" id="static_android.control.aeLockAvailable">
5419            <td class="entry_name
5420             " rowspan="3">
5421              android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available
5422            </td>
5423            <td class="entry_type">
5424                <span class="entry_type_name entry_type_name_enum">byte</span>
5425
5426              <span class="entry_type_visibility"> [public as boolean]</span>
5427
5428
5429              <span class="entry_type_hwlevel">[legacy] </span>
5430
5431
5432
5433                <ul class="entry_type_enum">
5434                  <li>
5435                    <span class="entry_type_enum_name">FALSE</span>
5436                  </li>
5437                  <li>
5438                    <span class="entry_type_enum_name">TRUE</span>
5439                  </li>
5440                </ul>
5441
5442            </td> <!-- entry_type -->
5443
5444            <td class="entry_description">
5445              <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p>
5446            </td>
5447
5448            <td class="entry_units">
5449            </td>
5450
5451            <td class="entry_range">
5452            </td>
5453
5454            <td class="entry_tags">
5455              <ul class="entry_tags">
5456                  <li><a href="#tag_BC">BC</a></li>
5457              </ul>
5458            </td>
5459
5460          </tr>
5461          <tr class="entries_header">
5462            <th class="th_details" colspan="5">Details</th>
5463          </tr>
5464          <tr class="entry_cont">
5465            <td class="entry_details" colspan="5">
5466              <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always
5467list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5468            </td>
5469          </tr>
5470
5471
5472          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5473           <!-- end of entry -->
5474
5475
5476          <tr class="entry" id="static_android.control.awbLockAvailable">
5477            <td class="entry_name
5478             " rowspan="3">
5479              android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available
5480            </td>
5481            <td class="entry_type">
5482                <span class="entry_type_name entry_type_name_enum">byte</span>
5483
5484              <span class="entry_type_visibility"> [public as boolean]</span>
5485
5486
5487              <span class="entry_type_hwlevel">[legacy] </span>
5488
5489
5490
5491                <ul class="entry_type_enum">
5492                  <li>
5493                    <span class="entry_type_enum_name">FALSE</span>
5494                  </li>
5495                  <li>
5496                    <span class="entry_type_enum_name">TRUE</span>
5497                  </li>
5498                </ul>
5499
5500            </td> <!-- entry_type -->
5501
5502            <td class="entry_description">
5503              <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p>
5504            </td>
5505
5506            <td class="entry_units">
5507            </td>
5508
5509            <td class="entry_range">
5510            </td>
5511
5512            <td class="entry_tags">
5513              <ul class="entry_tags">
5514                  <li><a href="#tag_BC">BC</a></li>
5515              </ul>
5516            </td>
5517
5518          </tr>
5519          <tr class="entries_header">
5520            <th class="th_details" colspan="5">Details</th>
5521          </tr>
5522          <tr class="entry_cont">
5523            <td class="entry_details" colspan="5">
5524              <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will
5525always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5526            </td>
5527          </tr>
5528
5529
5530          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5531           <!-- end of entry -->
5532
5533
5534          <tr class="entry" id="static_android.control.availableModes">
5535            <td class="entry_name
5536             " rowspan="3">
5537              android.<wbr/>control.<wbr/>available<wbr/>Modes
5538            </td>
5539            <td class="entry_type">
5540                <span class="entry_type_name">byte</span>
5541                <span class="entry_type_container">x</span>
5542
5543                <span class="entry_type_array">
5544                  n
5545                </span>
5546              <span class="entry_type_visibility"> [public as enumList]</span>
5547
5548
5549              <span class="entry_type_hwlevel">[legacy] </span>
5550
5551
5552                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div>
5553
5554
5555            </td> <!-- entry_type -->
5556
5557            <td class="entry_description">
5558              <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera
5559device.<wbr/></p>
5560            </td>
5561
5562            <td class="entry_units">
5563            </td>
5564
5565            <td class="entry_range">
5566              <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p>
5567            </td>
5568
5569            <td class="entry_tags">
5570            </td>
5571
5572          </tr>
5573          <tr class="entries_header">
5574            <th class="th_details" colspan="5">Details</th>
5575          </tr>
5576          <tr class="entry_cont">
5577            <td class="entry_details" colspan="5">
5578              <p>This list contains control modes that can be set for the camera device.<wbr/>
5579LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL
5580devices will always support OFF,<wbr/> AUTO modes.<wbr/></p>
5581            </td>
5582          </tr>
5583
5584
5585          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5586           <!-- end of entry -->
5587
5588
5589          <tr class="entry" id="static_android.control.postRawSensitivityBoostRange">
5590            <td class="entry_name
5591             " rowspan="5">
5592              android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range
5593            </td>
5594            <td class="entry_type">
5595                <span class="entry_type_name">int32</span>
5596                <span class="entry_type_container">x</span>
5597
5598                <span class="entry_type_array">
5599                  2
5600                </span>
5601              <span class="entry_type_visibility"> [public as rangeInt]</span>
5602
5603
5604
5605
5606                <div class="entry_type_notes">Range of supported post RAW sensitivitiy boosts</div>
5607
5608
5609            </td> <!-- entry_type -->
5610
5611            <td class="entry_description">
5612              <p>Range of boosts for <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> supported
5613by this camera device.<wbr/></p>
5614            </td>
5615
5616            <td class="entry_units">
5617              ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
5618            </td>
5619
5620            <td class="entry_range">
5621            </td>
5622
5623            <td class="entry_tags">
5624            </td>
5625
5626          </tr>
5627          <tr class="entries_header">
5628            <th class="th_details" colspan="5">Details</th>
5629          </tr>
5630          <tr class="entry_cont">
5631            <td class="entry_details" colspan="5">
5632              <p>Devices support post RAW sensitivity boost  will advertise
5633<a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> key for controling
5634post RAW sensitivity boost.<wbr/></p>
5635<p>This key will be <code>null</code> for devices that do not support any RAW format
5636outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
5637present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
5638list <code>(100,<wbr/> 100)</code> in this key.<wbr/></p>
5639            </td>
5640          </tr>
5641
5642          <tr class="entries_header">
5643            <th class="th_details" colspan="5">HAL Implementation Details</th>
5644          </tr>
5645          <tr class="entry_cont">
5646            <td class="entry_details" colspan="5">
5647              <p>This key is added in HAL3.<wbr/>4.<wbr/> For HAL3.<wbr/>3 or earlier devices,<wbr/> camera framework will
5648generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output formats.<wbr/>
5649All HAL3.<wbr/>4 and above devices should list this key if device supports any of RAW
5650output formats.<wbr/></p>
5651            </td>
5652          </tr>
5653
5654          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5655           <!-- end of entry -->
5656
5657
5658
5659      <!-- end of kind -->
5660      </tbody>
5661      <tr><td colspan="6" class="kind">dynamic</td></tr>
5662
5663      <thead class="entries_header">
5664        <tr>
5665          <th class="th_name">Property Name</th>
5666          <th class="th_type">Type</th>
5667          <th class="th_description">Description</th>
5668          <th class="th_units">Units</th>
5669          <th class="th_range">Range</th>
5670          <th class="th_tags">Tags</th>
5671        </tr>
5672      </thead>
5673
5674      <tbody>
5675
5676
5677
5678
5679
5680
5681
5682
5683
5684
5685          <tr class="entry" id="dynamic_android.control.aePrecaptureId">
5686            <td class="entry_name
5687                entry_name_deprecated
5688             " rowspan="3">
5689              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
5690            </td>
5691            <td class="entry_type">
5692                <span class="entry_type_name">int32</span>
5693
5694              <span class="entry_type_visibility"> [system]</span>
5695
5696
5697
5698              <span class="entry_type_deprecated">[deprecated] </span>
5699
5700
5701
5702            </td> <!-- entry_type -->
5703
5704            <td class="entry_description">
5705              <p>The ID sent with the latest
5706CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
5707            </td>
5708
5709            <td class="entry_units">
5710            </td>
5711
5712            <td class="entry_range">
5713              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
5714            </td>
5715
5716            <td class="entry_tags">
5717            </td>
5718
5719          </tr>
5720          <tr class="entries_header">
5721            <th class="th_details" colspan="5">Details</th>
5722          </tr>
5723          <tr class="entry_cont">
5724            <td class="entry_details" colspan="5">
5725              <p>Must be 0 if no
5726CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
5727by HAL.<wbr/> Always updated even if AE algorithm ignores the
5728trigger</p>
5729            </td>
5730          </tr>
5731
5732
5733          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5734           <!-- end of entry -->
5735
5736
5737          <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
5738            <td class="entry_name
5739             " rowspan="5">
5740              android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
5741            </td>
5742            <td class="entry_type">
5743                <span class="entry_type_name entry_type_name_enum">byte</span>
5744
5745              <span class="entry_type_visibility"> [public]</span>
5746
5747
5748              <span class="entry_type_hwlevel">[legacy] </span>
5749
5750
5751
5752                <ul class="entry_type_enum">
5753                  <li>
5754                    <span class="entry_type_enum_name">OFF</span>
5755                    <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
5756avoid banding problems.<wbr/></p></span>
5757                  </li>
5758                  <li>
5759                    <span class="entry_type_enum_name">50HZ</span>
5760                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5761avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
5762                  </li>
5763                  <li>
5764                    <span class="entry_type_enum_name">60HZ</span>
5765                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5766avoid banding problems with 60Hz illumination
5767sources.<wbr/></p></span>
5768                  </li>
5769                  <li>
5770                    <span class="entry_type_enum_name">AUTO</span>
5771                    <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
5772antibanding routine to the current illumination
5773condition.<wbr/> This is the default mode if AUTO is
5774available on given camera device.<wbr/></p></span>
5775                  </li>
5776                </ul>
5777
5778            </td> <!-- entry_type -->
5779
5780            <td class="entry_description">
5781              <p>The desired setting for the camera device's auto-exposure
5782algorithm's antibanding compensation.<wbr/></p>
5783            </td>
5784
5785            <td class="entry_units">
5786            </td>
5787
5788            <td class="entry_range">
5789              <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
5790            </td>
5791
5792            <td class="entry_tags">
5793              <ul class="entry_tags">
5794                  <li><a href="#tag_BC">BC</a></li>
5795              </ul>
5796            </td>
5797
5798          </tr>
5799          <tr class="entries_header">
5800            <th class="th_details" colspan="5">Details</th>
5801          </tr>
5802          <tr class="entry_cont">
5803            <td class="entry_details" colspan="5">
5804              <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
5805lights,<wbr/> flicker at the rate of the power supply frequency
5806(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
5807typically not noticeable to a person,<wbr/> it can be visible to
5808a camera device.<wbr/> If a camera sets its exposure time to the
5809wrong value,<wbr/> the flicker may become visible in the
5810viewfinder as flicker or in a final captured image,<wbr/> as a
5811set of variable-brightness bands across the image.<wbr/></p>
5812<p>Therefore,<wbr/> the auto-exposure routines of camera devices
5813include antibanding routines that ensure that the chosen
5814exposure value will not cause such banding.<wbr/> The choice of
5815exposure time depends on the rate of flicker,<wbr/> which the
5816camera device can detect automatically,<wbr/> or the expected
5817rate can be selected by the application using this
5818control.<wbr/></p>
5819<p>A given camera device may not support all of the possible
5820options for the antibanding mode.<wbr/> The
5821<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
5822the available modes for a given camera device.<wbr/></p>
5823<p>AUTO mode is the default if it is available on given
5824camera device.<wbr/> When AUTO mode is not available,<wbr/> the
5825default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
5826and 60HZ will be available.<wbr/></p>
5827<p>If manual exposure control is enabled (by setting
5828<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/>
5829then this setting has no effect,<wbr/> and the application must
5830ensure it selects exposure times that do not cause banding
5831issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
5832the application in this.<wbr/></p>
5833            </td>
5834          </tr>
5835
5836          <tr class="entries_header">
5837            <th class="th_details" colspan="5">HAL Implementation Details</th>
5838          </tr>
5839          <tr class="entry_cont">
5840            <td class="entry_details" colspan="5">
5841              <p>For all capture request templates,<wbr/> this field must be set
5842to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
5843the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
584460HZ must be available.<wbr/></p>
5845<p>If manual exposure control is enabled (by setting
5846<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/>
5847then the exposure values provided by the application must not be
5848adjusted for antibanding.<wbr/></p>
5849            </td>
5850          </tr>
5851
5852          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5853           <!-- end of entry -->
5854
5855
5856          <tr class="entry" id="dynamic_android.control.aeExposureCompensation">
5857            <td class="entry_name
5858             " rowspan="3">
5859              android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
5860            </td>
5861            <td class="entry_type">
5862                <span class="entry_type_name">int32</span>
5863
5864              <span class="entry_type_visibility"> [public]</span>
5865
5866
5867              <span class="entry_type_hwlevel">[legacy] </span>
5868
5869
5870
5871
5872            </td> <!-- entry_type -->
5873
5874            <td class="entry_description">
5875              <p>Adjustment to auto-exposure (AE) target image
5876brightness.<wbr/></p>
5877            </td>
5878
5879            <td class="entry_units">
5880              Compensation steps
5881            </td>
5882
5883            <td class="entry_range">
5884              <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
5885            </td>
5886
5887            <td class="entry_tags">
5888              <ul class="entry_tags">
5889                  <li><a href="#tag_BC">BC</a></li>
5890              </ul>
5891            </td>
5892
5893          </tr>
5894          <tr class="entries_header">
5895            <th class="th_details" colspan="5">Details</th>
5896          </tr>
5897          <tr class="entry_cont">
5898            <td class="entry_details" colspan="5">
5899              <p>The adjustment is measured as a count of steps,<wbr/> with the
5900step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
5901allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
5902<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
5903will mean an exposure compensation of +2 EV; -3 will mean an
5904exposure compensation of -1 EV.<wbr/> One EV represents a doubling
5905of image brightness.<wbr/> Note that this control will only be
5906effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
5907will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
5908<p>In the event of exposure compensation value being changed,<wbr/> camera device
5909may take several frames to reach the newly requested exposure target.<wbr/>
5910During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
5911state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
5912change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
5913FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
5914            </td>
5915          </tr>
5916
5917
5918          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5919           <!-- end of entry -->
5920
5921
5922          <tr class="entry" id="dynamic_android.control.aeLock">
5923            <td class="entry_name
5924             " rowspan="3">
5925              android.<wbr/>control.<wbr/>ae<wbr/>Lock
5926            </td>
5927            <td class="entry_type">
5928                <span class="entry_type_name entry_type_name_enum">byte</span>
5929
5930              <span class="entry_type_visibility"> [public as boolean]</span>
5931
5932
5933              <span class="entry_type_hwlevel">[legacy] </span>
5934
5935
5936
5937                <ul class="entry_type_enum">
5938                  <li>
5939                    <span class="entry_type_enum_name">OFF</span>
5940                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
5941is free to update its parameters.<wbr/></p></span>
5942                  </li>
5943                  <li>
5944                    <span class="entry_type_enum_name">ON</span>
5945                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
5946must not update the exposure and sensitivity parameters
5947while the lock is active.<wbr/></p>
5948<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
5949will still take effect while auto-exposure is locked.<wbr/></p>
5950<p>Some rare LEGACY devices may not support
5951this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
5952                  </li>
5953                </ul>
5954
5955            </td> <!-- entry_type -->
5956
5957            <td class="entry_description">
5958              <p>Whether auto-exposure (AE) is currently locked to its latest
5959calculated values.<wbr/></p>
5960            </td>
5961
5962            <td class="entry_units">
5963            </td>
5964
5965            <td class="entry_range">
5966            </td>
5967
5968            <td class="entry_tags">
5969              <ul class="entry_tags">
5970                  <li><a href="#tag_BC">BC</a></li>
5971              </ul>
5972            </td>
5973
5974          </tr>
5975          <tr class="entries_header">
5976            <th class="th_details" colspan="5">Details</th>
5977          </tr>
5978          <tr class="entry_cont">
5979            <td class="entry_details" colspan="5">
5980              <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
5981and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
5982<p>Note that even when AE is locked,<wbr/> the flash may be fired if
5983the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
5984ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
5985<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
5986is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
5987<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
5988when AE is already locked,<wbr/> the camera device will not change the exposure time
5989(<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>)
5990parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
5991is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
5992<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/>
5993Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
5994<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
5995the AE if AE is locked by the camera device internally during precapture metering
5996sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
5997ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
5998will never succeed in a sequence of preview requests where AE lock is always set
5999to <code>false</code>.<wbr/></p>
6000<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
6001get locked do not necessarily correspond to the settings that were present in the
6002latest capture result received from the camera device,<wbr/> since additional captures
6003and AE updates may have occurred even before the result was sent out.<wbr/> If an
6004application is switching between automatic and manual control and wishes to eliminate
6005any flicker during the switch,<wbr/> the following procedure is recommended:</p>
6006<ol>
6007<li>Starting in auto-AE mode:</li>
6008<li>Lock AE</li>
6009<li>Wait for the first result to be output that has the AE locked</li>
6010<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
6011<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
6012</ol>
6013<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>
6014            </td>
6015          </tr>
6016
6017
6018          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6019           <!-- end of entry -->
6020
6021
6022          <tr class="entry" id="dynamic_android.control.aeMode">
6023            <td class="entry_name
6024             " rowspan="3">
6025              android.<wbr/>control.<wbr/>ae<wbr/>Mode
6026            </td>
6027            <td class="entry_type">
6028                <span class="entry_type_name entry_type_name_enum">byte</span>
6029
6030              <span class="entry_type_visibility"> [public]</span>
6031
6032
6033              <span class="entry_type_hwlevel">[legacy] </span>
6034
6035
6036
6037                <ul class="entry_type_enum">
6038                  <li>
6039                    <span class="entry_type_enum_name">OFF</span>
6040                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
6041<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6042<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
6043<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
6044device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
6045a flash unit for this camera device.<wbr/></p>
6046<p>Note that auto-white balance (AWB) and auto-focus (AF)
6047behavior is device dependent when AE is in OFF mode.<wbr/>
6048To have consistent behavior across different devices,<wbr/>
6049it is recommended to either set AWB and AF to OFF mode
6050or lock AWB and AF before setting AE to OFF.<wbr/>
6051See <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/>
6052<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>
6053for more details.<wbr/></p>
6054<p>LEGACY devices do not support the OFF mode and will
6055override attempts to use this value to ON.<wbr/></p></span>
6056                  </li>
6057                  <li>
6058                    <span class="entry_type_enum_name">ON</span>
6059                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
6060with no flash control.<wbr/></p>
6061<p>The application's values for
6062<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6063<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6064<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
6065application has control over the various
6066android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
6067                  </li>
6068                  <li>
6069                    <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
6070                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6071the camera's flash unit,<wbr/> firing it in low-light
6072conditions.<wbr/></p>
6073<p>The flash may be fired during a precapture sequence
6074(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6075may be fired for captures for which the
6076<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6077STILL_<wbr/>CAPTURE</p></span>
6078                  </li>
6079                  <li>
6080                    <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
6081                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6082the camera's flash unit,<wbr/> always firing it for still
6083captures.<wbr/></p>
6084<p>The flash may be fired during a precapture sequence
6085(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6086will always be fired for captures for which the
6087<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6088STILL_<wbr/>CAPTURE</p></span>
6089                  </li>
6090                  <li>
6091                    <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
6092                    <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
6093reduction.<wbr/></p>
6094<p>If deemed necessary by the camera device,<wbr/> a red eye
6095reduction flash will fire during the precapture
6096sequence.<wbr/></p></span>
6097                  </li>
6098                </ul>
6099
6100            </td> <!-- entry_type -->
6101
6102            <td class="entry_description">
6103              <p>The desired mode for the camera device's
6104auto-exposure routine.<wbr/></p>
6105            </td>
6106
6107            <td class="entry_units">
6108            </td>
6109
6110            <td class="entry_range">
6111              <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
6112            </td>
6113
6114            <td class="entry_tags">
6115              <ul class="entry_tags">
6116                  <li><a href="#tag_BC">BC</a></li>
6117              </ul>
6118            </td>
6119
6120          </tr>
6121          <tr class="entries_header">
6122            <th class="th_details" colspan="5">Details</th>
6123          </tr>
6124          <tr class="entry_cont">
6125            <td class="entry_details" colspan="5">
6126              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
6127AUTO.<wbr/></p>
6128<p>When set to any of the ON modes,<wbr/> the camera device's
6129auto-exposure routine is enabled,<wbr/> overriding the
6130application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
6131and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6132<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6133<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
6134is selected,<wbr/> the camera device's flash unit controls are
6135also overridden.<wbr/></p>
6136<p>The FLASH modes are only available if the camera device
6137has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
6138<p>If flash TORCH mode is desired,<wbr/> this field must be set to
6139ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
6140<p>When set to any of the ON modes,<wbr/> the values chosen by the
6141camera device auto-exposure routine for the overridden
6142fields for a given capture will be available in its
6143CaptureResult.<wbr/></p>
6144            </td>
6145          </tr>
6146
6147
6148          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6149           <!-- end of entry -->
6150
6151
6152          <tr class="entry" id="dynamic_android.control.aeRegions">
6153            <td class="entry_name
6154             " rowspan="5">
6155              android.<wbr/>control.<wbr/>ae<wbr/>Regions
6156            </td>
6157            <td class="entry_type">
6158                <span class="entry_type_name">int32</span>
6159                <span class="entry_type_container">x</span>
6160
6161                <span class="entry_type_array">
6162                  5 x area_count
6163                </span>
6164              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6165
6166
6167
6168
6169
6170
6171            </td> <!-- entry_type -->
6172
6173            <td class="entry_description">
6174              <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
6175            </td>
6176
6177            <td class="entry_units">
6178              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
6179            </td>
6180
6181            <td class="entry_range">
6182              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
6183<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
6184            </td>
6185
6186            <td class="entry_tags">
6187              <ul class="entry_tags">
6188                  <li><a href="#tag_BC">BC</a></li>
6189              </ul>
6190            </td>
6191
6192          </tr>
6193          <tr class="entries_header">
6194            <th class="th_details" colspan="5">Details</th>
6195          </tr>
6196          <tr class="entry_cont">
6197            <td class="entry_details" colspan="5">
6198              <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
6199Otherwise will always be present.<wbr/></p>
6200<p>The maximum number of regions supported by the device is determined by the value
6201of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
6202<p>The coordinate system is based on the active pixel array,<wbr/>
6203with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
6204(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6205<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
6206bottom-right pixel in the active pixel array.<wbr/></p>
6207<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
6208for every pixel in the area.<wbr/> This means that a large metering area
6209with the same weight as a smaller area will have more effect in
6210the metering result.<wbr/> Metering areas can partially overlap and the
6211camera device will add the weights in the overlap region.<wbr/></p>
6212<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
6213region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
6214weight is ignored.<wbr/></p>
6215<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
6216camera device.<wbr/></p>
6217<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
6218capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
6219region and output only the intersection rectangle as the metering region in the result
6220metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
6221not reported in the result metadata.<wbr/></p>
6222            </td>
6223          </tr>
6224
6225          <tr class="entries_header">
6226            <th class="th_details" colspan="5">HAL Implementation Details</th>
6227          </tr>
6228          <tr class="entry_cont">
6229            <td class="entry_details" colspan="5">
6230              <p>The HAL level representation of MeteringRectangle[] is a
6231int[5 * area_<wbr/>count].<wbr/>
6232Every five elements represent a metering region of
6233(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6234The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6235exclusive on xmax and ymax.<wbr/></p>
6236            </td>
6237          </tr>
6238
6239          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6240           <!-- end of entry -->
6241
6242
6243          <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
6244            <td class="entry_name
6245             " rowspan="3">
6246              android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
6247            </td>
6248            <td class="entry_type">
6249                <span class="entry_type_name">int32</span>
6250                <span class="entry_type_container">x</span>
6251
6252                <span class="entry_type_array">
6253                  2
6254                </span>
6255              <span class="entry_type_visibility"> [public as rangeInt]</span>
6256
6257
6258              <span class="entry_type_hwlevel">[legacy] </span>
6259
6260
6261
6262
6263            </td> <!-- entry_type -->
6264
6265            <td class="entry_description">
6266              <p>Range over which the auto-exposure routine can
6267adjust the capture frame rate to maintain good
6268exposure.<wbr/></p>
6269            </td>
6270
6271            <td class="entry_units">
6272              Frames per second (FPS)
6273            </td>
6274
6275            <td class="entry_range">
6276              <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>
6277            </td>
6278
6279            <td class="entry_tags">
6280              <ul class="entry_tags">
6281                  <li><a href="#tag_BC">BC</a></li>
6282              </ul>
6283            </td>
6284
6285          </tr>
6286          <tr class="entries_header">
6287            <th class="th_details" colspan="5">Details</th>
6288          </tr>
6289          <tr class="entry_cont">
6290            <td class="entry_details" colspan="5">
6291              <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
6292manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
6293<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
6294            </td>
6295          </tr>
6296
6297
6298          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6299           <!-- end of entry -->
6300
6301
6302          <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
6303            <td class="entry_name
6304             " rowspan="5">
6305              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
6306            </td>
6307            <td class="entry_type">
6308                <span class="entry_type_name entry_type_name_enum">byte</span>
6309
6310              <span class="entry_type_visibility"> [public]</span>
6311
6312
6313              <span class="entry_type_hwlevel">[limited] </span>
6314
6315
6316
6317                <ul class="entry_type_enum">
6318                  <li>
6319                    <span class="entry_type_enum_name">IDLE</span>
6320                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6321                  </li>
6322                  <li>
6323                    <span class="entry_type_enum_name">START</span>
6324                    <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
6325by the camera device.<wbr/></p>
6326<p>The exact effect of the precapture trigger depends on
6327the current AE mode and state.<wbr/></p></span>
6328                  </li>
6329                  <li>
6330                    <span class="entry_type_enum_name">CANCEL</span>
6331                    <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
6332precapture metering sequence,<wbr/> the auto-exposure routine will return to its
6333initial state.<wbr/></p></span>
6334                  </li>
6335                </ul>
6336
6337            </td> <!-- entry_type -->
6338
6339            <td class="entry_description">
6340              <p>Whether the camera device will trigger a precapture
6341metering sequence when it processes this request.<wbr/></p>
6342            </td>
6343
6344            <td class="entry_units">
6345            </td>
6346
6347            <td class="entry_range">
6348            </td>
6349
6350            <td class="entry_tags">
6351              <ul class="entry_tags">
6352                  <li><a href="#tag_BC">BC</a></li>
6353              </ul>
6354            </td>
6355
6356          </tr>
6357          <tr class="entries_header">
6358            <th class="th_details" colspan="5">Details</th>
6359          </tr>
6360          <tr class="entry_cont">
6361            <td class="entry_details" colspan="5">
6362              <p>This entry is normally set to IDLE,<wbr/> or is not
6363included at all in the request settings.<wbr/> When included and
6364set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
6365precapture metering sequence.<wbr/></p>
6366<p>When set to CANCEL,<wbr/> the camera device will cancel any active
6367precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
6368If a precapture metering sequence is already completed,<wbr/> and the camera
6369device has implicitly locked the AE for subsequent still capture,<wbr/> the
6370CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
6371<p>The precapture sequence should be triggered before starting a
6372high-quality still capture for final metering decisions to
6373be made,<wbr/> and for firing pre-capture flash pulses to estimate
6374scene brightness and required final capture flash power,<wbr/> when
6375the flash is enabled.<wbr/></p>
6376<p>Normally,<wbr/> this entry should be set to START for only a
6377single request,<wbr/> and the application should wait until the
6378sequence completes before starting a new one.<wbr/></p>
6379<p>When a precapture metering sequence is finished,<wbr/> the camera device
6380may lock the auto-exposure routine internally to be able to accurately expose the
6381subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
6382For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
6383submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
6384submit 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
6385with <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
6386still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
6387API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
6388internally locked AE if the application doesn't submit a still capture request after
6389the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
6390be used in devices that have earlier API levels.<wbr/></p>
6391<p>The exact effect of auto-exposure (AE) precapture trigger
6392depends on the current AE mode and state; see
6393<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
6394details.<wbr/></p>
6395<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
6396capturing a high-resolution JPEG image will automatically trigger a
6397precapture sequence before the high-resolution capture,<wbr/> including
6398potentially firing a pre-capture flash.<wbr/></p>
6399<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
6400simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
6401the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
6402focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
6403trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
6404changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
6405example.<wbr/></p>
6406<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
6407the camera device will complete them in the optimal order for that device.<wbr/></p>
6408            </td>
6409          </tr>
6410
6411          <tr class="entries_header">
6412            <th class="th_details" colspan="5">HAL Implementation Details</th>
6413          </tr>
6414          <tr class="entry_cont">
6415            <td class="entry_details" colspan="5">
6416              <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
6417(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
6418treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
6419AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
6420to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
6421            </td>
6422          </tr>
6423
6424          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6425           <!-- end of entry -->
6426
6427
6428          <tr class="entry" id="dynamic_android.control.aeState">
6429            <td class="entry_name
6430             " rowspan="3">
6431              android.<wbr/>control.<wbr/>ae<wbr/>State
6432            </td>
6433            <td class="entry_type">
6434                <span class="entry_type_name entry_type_name_enum">byte</span>
6435
6436              <span class="entry_type_visibility"> [public]</span>
6437
6438
6439              <span class="entry_type_hwlevel">[limited] </span>
6440
6441
6442
6443                <ul class="entry_type_enum">
6444                  <li>
6445                    <span class="entry_type_enum_name">INACTIVE</span>
6446                    <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
6447<p>When a camera device is opened,<wbr/> it starts in
6448this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
6449this state in capture result.<wbr/></p></span>
6450                  </li>
6451                  <li>
6452                    <span class="entry_type_enum_name">SEARCHING</span>
6453                    <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
6454for the current scene.<wbr/></p>
6455<p>This is a transient state,<wbr/> the camera device may skip
6456reporting this state in capture result.<wbr/></p></span>
6457                  </li>
6458                  <li>
6459                    <span class="entry_type_enum_name">CONVERGED</span>
6460                    <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
6461current scene.<wbr/></p></span>
6462                  </li>
6463                  <li>
6464                    <span class="entry_type_enum_name">LOCKED</span>
6465                    <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
6466                  </li>
6467                  <li>
6468                    <span class="entry_type_enum_name">FLASH_REQUIRED</span>
6469                    <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
6470needs to be fired for good quality still
6471capture.<wbr/></p></span>
6472                  </li>
6473                  <li>
6474                    <span class="entry_type_enum_name">PRECAPTURE</span>
6475                    <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
6476and is currently executing it.<wbr/></p>
6477<p>Precapture can be triggered through setting
6478<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently
6479active and completed (if it causes camera device internal AE lock) precapture
6480metering sequence can be canceled through setting
6481<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p>
6482<p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED
6483or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient
6484state,<wbr/> the camera device may skip reporting this state in
6485capture result.<wbr/></p></span>
6486                  </li>
6487                </ul>
6488
6489            </td> <!-- entry_type -->
6490
6491            <td class="entry_description">
6492              <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p>
6493            </td>
6494
6495            <td class="entry_units">
6496            </td>
6497
6498            <td class="entry_range">
6499            </td>
6500
6501            <td class="entry_tags">
6502            </td>
6503
6504          </tr>
6505          <tr class="entries_header">
6506            <th class="th_details" colspan="5">Details</th>
6507          </tr>
6508          <tr class="entry_cont">
6509            <td class="entry_details" colspan="5">
6510              <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
6511resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6512or <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
6513the algorithm states to INACTIVE.<wbr/></p>
6514<p>The camera device can do several state transitions between two results,<wbr/> if it is
6515allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6516seen in a result.<wbr/></p>
6517<p>The state in the result is the state for this image (in sync with this image): if
6518AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
6519be good to use.<wbr/></p>
6520<p>Below are state transition tables for different AE modes.<wbr/></p>
6521<table>
6522<thead>
6523<tr>
6524<th align="center">State</th>
6525<th align="center">Transition Cause</th>
6526<th align="center">New State</th>
6527<th align="center">Notes</th>
6528</tr>
6529</thead>
6530<tbody>
6531<tr>
6532<td align="center">INACTIVE</td>
6533<td align="center"></td>
6534<td align="center">INACTIVE</td>
6535<td align="center">Camera device auto exposure algorithm is disabled</td>
6536</tr>
6537</tbody>
6538</table>
6539<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p>
6540<table>
6541<thead>
6542<tr>
6543<th align="center">State</th>
6544<th align="center">Transition Cause</th>
6545<th align="center">New State</th>
6546<th align="center">Notes</th>
6547</tr>
6548</thead>
6549<tbody>
6550<tr>
6551<td align="center">INACTIVE</td>
6552<td align="center">Camera device initiates AE scan</td>
6553<td align="center">SEARCHING</td>
6554<td align="center">Values changing</td>
6555</tr>
6556<tr>
6557<td align="center">INACTIVE</td>
6558<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6559<td align="center">LOCKED</td>
6560<td align="center">Values locked</td>
6561</tr>
6562<tr>
6563<td align="center">SEARCHING</td>
6564<td align="center">Camera device finishes AE scan</td>
6565<td align="center">CONVERGED</td>
6566<td align="center">Good values,<wbr/> not changing</td>
6567</tr>
6568<tr>
6569<td align="center">SEARCHING</td>
6570<td align="center">Camera device finishes AE scan</td>
6571<td align="center">FLASH_<wbr/>REQUIRED</td>
6572<td align="center">Converged but too dark w/<wbr/>o flash</td>
6573</tr>
6574<tr>
6575<td align="center">SEARCHING</td>
6576<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6577<td align="center">LOCKED</td>
6578<td align="center">Values locked</td>
6579</tr>
6580<tr>
6581<td align="center">CONVERGED</td>
6582<td align="center">Camera device initiates AE scan</td>
6583<td align="center">SEARCHING</td>
6584<td align="center">Values changing</td>
6585</tr>
6586<tr>
6587<td align="center">CONVERGED</td>
6588<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6589<td align="center">LOCKED</td>
6590<td align="center">Values locked</td>
6591</tr>
6592<tr>
6593<td align="center">FLASH_<wbr/>REQUIRED</td>
6594<td align="center">Camera device initiates AE scan</td>
6595<td align="center">SEARCHING</td>
6596<td align="center">Values changing</td>
6597</tr>
6598<tr>
6599<td align="center">FLASH_<wbr/>REQUIRED</td>
6600<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6601<td align="center">LOCKED</td>
6602<td align="center">Values locked</td>
6603</tr>
6604<tr>
6605<td align="center">LOCKED</td>
6606<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6607<td align="center">SEARCHING</td>
6608<td align="center">Values not good after unlock</td>
6609</tr>
6610<tr>
6611<td align="center">LOCKED</td>
6612<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6613<td align="center">CONVERGED</td>
6614<td align="center">Values good after unlock</td>
6615</tr>
6616<tr>
6617<td align="center">LOCKED</td>
6618<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6619<td align="center">FLASH_<wbr/>REQUIRED</td>
6620<td align="center">Exposure good,<wbr/> but too dark</td>
6621</tr>
6622<tr>
6623<td align="center">PRECAPTURE</td>
6624<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6625<td align="center">CONVERGED</td>
6626<td align="center">Ready for high-quality capture</td>
6627</tr>
6628<tr>
6629<td align="center">PRECAPTURE</td>
6630<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6631<td align="center">LOCKED</td>
6632<td align="center">Ready for high-quality capture</td>
6633</tr>
6634<tr>
6635<td align="center">LOCKED</td>
6636<td align="center">aeLock is ON and aePrecaptureTrigger is START</td>
6637<td align="center">LOCKED</td>
6638<td align="center">Precapture trigger is ignored when AE is already locked</td>
6639</tr>
6640<tr>
6641<td align="center">LOCKED</td>
6642<td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td>
6643<td align="center">LOCKED</td>
6644<td align="center">Precapture trigger is ignored when AE is already locked</td>
6645</tr>
6646<tr>
6647<td align="center">Any state (excluding LOCKED)</td>
6648<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
6649<td align="center">PRECAPTURE</td>
6650<td align="center">Start AE precapture metering sequence</td>
6651</tr>
6652<tr>
6653<td align="center">Any state (excluding LOCKED)</td>
6654<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td>
6655<td align="center">INACTIVE</td>
6656<td align="center">Currently active precapture metering sequence is canceled</td>
6657</tr>
6658</tbody>
6659</table>
6660<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
6661without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
6662can be skipped in that manner is called a transient state.<wbr/></p>
6663<p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions
6664listed in above table,<wbr/> it is also legal for the camera device to skip one or more
6665transient states between two results.<wbr/> See below table for examples:</p>
6666<table>
6667<thead>
6668<tr>
6669<th align="center">State</th>
6670<th align="center">Transition Cause</th>
6671<th align="center">New State</th>
6672<th align="center">Notes</th>
6673</tr>
6674</thead>
6675<tbody>
6676<tr>
6677<td align="center">INACTIVE</td>
6678<td align="center">Camera device finished AE scan</td>
6679<td align="center">CONVERGED</td>
6680<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
6681</tr>
6682<tr>
6683<td align="center">Any state (excluding LOCKED)</td>
6684<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>
6685<td align="center">FLASH_<wbr/>REQUIRED</td>
6686<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>
6687</tr>
6688<tr>
6689<td align="center">Any state (excluding LOCKED)</td>
6690<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>
6691<td align="center">CONVERGED</td>
6692<td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
6693</tr>
6694<tr>
6695<td align="center">Any state (excluding LOCKED)</td>
6696<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6697<td align="center">FLASH_<wbr/>REQUIRED</td>
6698<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>
6699</tr>
6700<tr>
6701<td align="center">Any state (excluding LOCKED)</td>
6702<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6703<td align="center">CONVERGED</td>
6704<td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
6705</tr>
6706<tr>
6707<td align="center">CONVERGED</td>
6708<td align="center">Camera device finished AE scan</td>
6709<td align="center">FLASH_<wbr/>REQUIRED</td>
6710<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>
6711</tr>
6712<tr>
6713<td align="center">FLASH_<wbr/>REQUIRED</td>
6714<td align="center">Camera device finished AE scan</td>
6715<td align="center">CONVERGED</td>
6716<td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
6717</tr>
6718</tbody>
6719</table>
6720            </td>
6721          </tr>
6722
6723
6724          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6725           <!-- end of entry -->
6726
6727
6728          <tr class="entry" id="dynamic_android.control.afMode">
6729            <td class="entry_name
6730             " rowspan="5">
6731              android.<wbr/>control.<wbr/>af<wbr/>Mode
6732            </td>
6733            <td class="entry_type">
6734                <span class="entry_type_name entry_type_name_enum">byte</span>
6735
6736              <span class="entry_type_visibility"> [public]</span>
6737
6738
6739              <span class="entry_type_hwlevel">[legacy] </span>
6740
6741
6742
6743                <ul class="entry_type_enum">
6744                  <li>
6745                    <span class="entry_type_enum_name">OFF</span>
6746                    <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
6747<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
6748application.<wbr/></p></span>
6749                  </li>
6750                  <li>
6751                    <span class="entry_type_enum_name">AUTO</span>
6752                    <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
6753<p>In this mode,<wbr/> the lens does not move unless
6754the autofocus trigger action is called.<wbr/> When that trigger
6755is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
6756the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
6757<p>Always supported if lens is not fixed focus.<wbr/></p>
6758<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
6759is fixed-focus.<wbr/></p>
6760<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
6761and sets the AF state to INACTIVE.<wbr/></p></span>
6762                  </li>
6763                  <li>
6764                    <span class="entry_type_enum_name">MACRO</span>
6765                    <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
6766<p>In this mode,<wbr/> the lens does not move unless the
6767autofocus trigger action is called.<wbr/> When that trigger is
6768activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
6769the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
6770mode is optimized for focusing on objects very close to
6771the camera.<wbr/></p>
6772<p>When that trigger is activated,<wbr/> AF will transition to
6773ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
6774NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
6775position to default,<wbr/> and sets the AF state to
6776INACTIVE.<wbr/></p></span>
6777                  </li>
6778                  <li>
6779                    <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
6780                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
6781position continually to attempt to provide a
6782constantly-in-focus image stream.<wbr/></p>
6783<p>The focusing behavior should be suitable for good quality
6784video recording; typically this means slower focus
6785movement and no overshoots.<wbr/> When the AF trigger is not
6786involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
6787and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
6788states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
6789the algorithm should immediately transition into
6790AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
6791lens position until a cancel AF trigger is received.<wbr/></p>
6792<p>Once cancel is received,<wbr/> the algorithm should transition
6793back to INACTIVE and resume passive scan.<wbr/> Note that this
6794behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
6795ongoing PASSIVE_<wbr/>SCAN must immediately be
6796canceled.<wbr/></p></span>
6797                  </li>
6798                  <li>
6799                    <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
6800                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
6801position continually to attempt to provide a
6802constantly-in-focus image stream.<wbr/></p>
6803<p>The focusing behavior should be suitable for still image
6804capture; typically this means focusing as fast as
6805possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
6806algorithm should start in INACTIVE state,<wbr/> and then
6807transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
6808appropriate as it attempts to maintain focus.<wbr/> When the AF
6809trigger is activated,<wbr/> the algorithm should finish its
6810PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
6811AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
6812lens position until a cancel AF trigger is received.<wbr/></p>
6813<p>When the AF cancel trigger is activated,<wbr/> the algorithm
6814should transition back to INACTIVE and then act as if it
6815has just been started.<wbr/></p></span>
6816                  </li>
6817                  <li>
6818                    <span class="entry_type_enum_name">EDOF</span>
6819                    <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
6820<p>The camera device will produce images with an extended
6821depth of field automatically; no special focusing
6822operations need to be done before taking a picture.<wbr/></p>
6823<p>AF triggers are ignored,<wbr/> and the AF state will always be
6824INACTIVE.<wbr/></p></span>
6825                  </li>
6826                </ul>
6827
6828            </td> <!-- entry_type -->
6829
6830            <td class="entry_description">
6831              <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
6832mode it is set to.<wbr/></p>
6833            </td>
6834
6835            <td class="entry_units">
6836            </td>
6837
6838            <td class="entry_range">
6839              <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
6840            </td>
6841
6842            <td class="entry_tags">
6843              <ul class="entry_tags">
6844                  <li><a href="#tag_BC">BC</a></li>
6845              </ul>
6846            </td>
6847
6848          </tr>
6849          <tr class="entries_header">
6850            <th class="th_details" colspan="5">Details</th>
6851          </tr>
6852          <tr class="entry_cont">
6853            <td class="entry_details" colspan="5">
6854              <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
6855(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
6856when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
6857dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
6858setting <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>
6859<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
6860the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
6861in result metadata.<wbr/></p>
6862            </td>
6863          </tr>
6864
6865          <tr class="entries_header">
6866            <th class="th_details" colspan="5">HAL Implementation Details</th>
6867          </tr>
6868          <tr class="entry_cont">
6869            <td class="entry_details" colspan="5">
6870              <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
6871request (<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
6872up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
6873<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
6874locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
6875after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
6876the same focal plane remains in focus.<wbr/></p>
6877<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
6878scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
6879(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
6880same lock behavior as above.<wbr/></p>
6881<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
6882focus 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/>
6883However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
6884manual control.<wbr/></p>
6885<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
6886camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
6887remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
6888by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
6889that will arise on camera modules with open-loop VCMs.<wbr/></p>
6890            </td>
6891          </tr>
6892
6893          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6894           <!-- end of entry -->
6895
6896
6897          <tr class="entry" id="dynamic_android.control.afRegions">
6898            <td class="entry_name
6899             " rowspan="5">
6900              android.<wbr/>control.<wbr/>af<wbr/>Regions
6901            </td>
6902            <td class="entry_type">
6903                <span class="entry_type_name">int32</span>
6904                <span class="entry_type_container">x</span>
6905
6906                <span class="entry_type_array">
6907                  5 x area_count
6908                </span>
6909              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6910
6911
6912
6913
6914
6915
6916            </td> <!-- entry_type -->
6917
6918            <td class="entry_description">
6919              <p>List of metering areas to use for auto-focus.<wbr/></p>
6920            </td>
6921
6922            <td class="entry_units">
6923              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
6924            </td>
6925
6926            <td class="entry_range">
6927              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
6928<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
6929            </td>
6930
6931            <td class="entry_tags">
6932              <ul class="entry_tags">
6933                  <li><a href="#tag_BC">BC</a></li>
6934              </ul>
6935            </td>
6936
6937          </tr>
6938          <tr class="entries_header">
6939            <th class="th_details" colspan="5">Details</th>
6940          </tr>
6941          <tr class="entry_cont">
6942            <td class="entry_details" colspan="5">
6943              <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
6944Otherwise will always be present.<wbr/></p>
6945<p>The maximum number of focus areas supported by the device is determined by the value
6946of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
6947<p>The coordinate system is based on the active pixel array,<wbr/>
6948with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
6949(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6950<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
6951bottom-right pixel in the active pixel array.<wbr/></p>
6952<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
6953for every pixel in the area.<wbr/> This means that a large metering area
6954with the same weight as a smaller area will have more effect in
6955the metering result.<wbr/> Metering areas can partially overlap and the
6956camera device will add the weights in the overlap region.<wbr/></p>
6957<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
6958is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
6959ignored.<wbr/></p>
6960<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
6961camera device.<wbr/></p>
6962<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
6963capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
6964region and output only the intersection rectangle as the metering region in the result
6965metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
6966not reported in the result metadata.<wbr/></p>
6967            </td>
6968          </tr>
6969
6970          <tr class="entries_header">
6971            <th class="th_details" colspan="5">HAL Implementation Details</th>
6972          </tr>
6973          <tr class="entry_cont">
6974            <td class="entry_details" colspan="5">
6975              <p>The HAL level representation of MeteringRectangle[] is a
6976int[5 * area_<wbr/>count].<wbr/>
6977Every five elements represent a metering region of
6978(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6979The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6980exclusive on xmax and ymax.<wbr/></p>
6981            </td>
6982          </tr>
6983
6984          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6985           <!-- end of entry -->
6986
6987
6988          <tr class="entry" id="dynamic_android.control.afTrigger">
6989            <td class="entry_name
6990             " rowspan="5">
6991              android.<wbr/>control.<wbr/>af<wbr/>Trigger
6992            </td>
6993            <td class="entry_type">
6994                <span class="entry_type_name entry_type_name_enum">byte</span>
6995
6996              <span class="entry_type_visibility"> [public]</span>
6997
6998
6999              <span class="entry_type_hwlevel">[legacy] </span>
7000
7001
7002
7003                <ul class="entry_type_enum">
7004                  <li>
7005                    <span class="entry_type_enum_name">IDLE</span>
7006                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
7007                  </li>
7008                  <li>
7009                    <span class="entry_type_enum_name">START</span>
7010                    <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
7011                  </li>
7012                  <li>
7013                    <span class="entry_type_enum_name">CANCEL</span>
7014                    <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
7015state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
7016                  </li>
7017                </ul>
7018
7019            </td> <!-- entry_type -->
7020
7021            <td class="entry_description">
7022              <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
7023            </td>
7024
7025            <td class="entry_units">
7026            </td>
7027
7028            <td class="entry_range">
7029            </td>
7030
7031            <td class="entry_tags">
7032              <ul class="entry_tags">
7033                  <li><a href="#tag_BC">BC</a></li>
7034              </ul>
7035            </td>
7036
7037          </tr>
7038          <tr class="entries_header">
7039            <th class="th_details" colspan="5">Details</th>
7040          </tr>
7041          <tr class="entry_cont">
7042            <td class="entry_details" colspan="5">
7043              <p>This entry is normally set to IDLE,<wbr/> or is not
7044included at all in the request settings.<wbr/></p>
7045<p>When included and set to START,<wbr/> the camera device will trigger the
7046autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
7047<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
7048and return to its initial AF state.<wbr/></p>
7049<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
7050single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
7051START for multiple captures in a row means restarting the AF operation over
7052and over again.<wbr/></p>
7053<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>
7054<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>
7055simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
7056the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
7057focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
7058trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
7059changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
7060            </td>
7061          </tr>
7062
7063          <tr class="entries_header">
7064            <th class="th_details" colspan="5">HAL Implementation Details</th>
7065          </tr>
7066          <tr class="entry_cont">
7067            <td class="entry_details" colspan="5">
7068              <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
7069(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
7070treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
7071AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
7072to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
7073            </td>
7074          </tr>
7075
7076          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7077           <!-- end of entry -->
7078
7079
7080          <tr class="entry" id="dynamic_android.control.afState">
7081            <td class="entry_name
7082             " rowspan="3">
7083              android.<wbr/>control.<wbr/>af<wbr/>State
7084            </td>
7085            <td class="entry_type">
7086                <span class="entry_type_name entry_type_name_enum">byte</span>
7087
7088              <span class="entry_type_visibility"> [public]</span>
7089
7090
7091              <span class="entry_type_hwlevel">[legacy] </span>
7092
7093
7094
7095                <ul class="entry_type_enum">
7096                  <li>
7097                    <span class="entry_type_enum_name">INACTIVE</span>
7098                    <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
7099to scan.<wbr/></p>
7100<p>When a camera device is opened,<wbr/> it starts in this
7101state.<wbr/> This is a transient state,<wbr/> the camera device may
7102skip reporting this state in capture
7103result.<wbr/></p></span>
7104                  </li>
7105                  <li>
7106                    <span class="entry_type_enum_name">PASSIVE_SCAN</span>
7107                    <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
7108camera device in a continuous autofocus mode.<wbr/></p>
7109<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7110state,<wbr/> the camera device may skip reporting this state in
7111capture result.<wbr/></p></span>
7112                  </li>
7113                  <li>
7114                    <span class="entry_type_enum_name">PASSIVE_FOCUSED</span>
7115                    <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
7116restart scanning at any time.<wbr/></p>
7117<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7118state,<wbr/> the camera device may skip reporting this state in
7119capture result.<wbr/></p></span>
7120                  </li>
7121                  <li>
7122                    <span class="entry_type_enum_name">ACTIVE_SCAN</span>
7123                    <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
7124triggered by AF trigger.<wbr/></p>
7125<p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
7126state,<wbr/> the camera device may skip reporting this state in
7127capture result.<wbr/></p></span>
7128                  </li>
7129                  <li>
7130                    <span class="entry_type_enum_name">FOCUSED_LOCKED</span>
7131                    <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
7132focus.<wbr/></p>
7133<p>This state is reached only after an explicit START AF trigger has been
7134sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p>
7135<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
7136a 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>
7137                  </li>
7138                  <li>
7139                    <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span>
7140                    <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
7141focus.<wbr/></p>
7142<p>This state is reached only after an explicit START AF trigger has been
7143sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p>
7144<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
7145a 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>
7146                  </li>
7147                  <li>
7148                    <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span>
7149                    <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
7150and may restart scanning at any time.<wbr/></p>
7151<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
7152device may skip reporting this state in capture result.<wbr/></p>
7153<p>LEGACY camera devices do not support this state.<wbr/> When a passive
7154scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span>
7155                  </li>
7156                </ul>
7157
7158            </td> <!-- entry_type -->
7159
7160            <td class="entry_description">
7161              <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
7162            </td>
7163
7164            <td class="entry_units">
7165            </td>
7166
7167            <td class="entry_range">
7168            </td>
7169
7170            <td class="entry_tags">
7171            </td>
7172
7173          </tr>
7174          <tr class="entries_header">
7175            <th class="th_details" colspan="5">Details</th>
7176          </tr>
7177          <tr class="entry_cont">
7178            <td class="entry_details" colspan="5">
7179              <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
7180resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
7181or <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
7182the algorithm states to INACTIVE.<wbr/></p>
7183<p>The camera device can do several state transitions between two results,<wbr/> if it is
7184allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
7185seen in a result.<wbr/></p>
7186<p>The state in the result is the state for this image (in sync with this image): if
7187AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
7188be sharp.<wbr/></p>
7189<p>Below are state transition tables for different AF modes.<wbr/></p>
7190<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>
7191<table>
7192<thead>
7193<tr>
7194<th align="center">State</th>
7195<th align="center">Transition Cause</th>
7196<th align="center">New State</th>
7197<th align="center">Notes</th>
7198</tr>
7199</thead>
7200<tbody>
7201<tr>
7202<td align="center">INACTIVE</td>
7203<td align="center"></td>
7204<td align="center">INACTIVE</td>
7205<td align="center">Never changes</td>
7206</tr>
7207</tbody>
7208</table>
7209<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>
7210<table>
7211<thead>
7212<tr>
7213<th align="center">State</th>
7214<th align="center">Transition Cause</th>
7215<th align="center">New State</th>
7216<th align="center">Notes</th>
7217</tr>
7218</thead>
7219<tbody>
7220<tr>
7221<td align="center">INACTIVE</td>
7222<td align="center">AF_<wbr/>TRIGGER</td>
7223<td align="center">ACTIVE_<wbr/>SCAN</td>
7224<td align="center">Start AF sweep,<wbr/> Lens now moving</td>
7225</tr>
7226<tr>
7227<td align="center">ACTIVE_<wbr/>SCAN</td>
7228<td align="center">AF sweep done</td>
7229<td align="center">FOCUSED_<wbr/>LOCKED</td>
7230<td align="center">Focused,<wbr/> Lens now locked</td>
7231</tr>
7232<tr>
7233<td align="center">ACTIVE_<wbr/>SCAN</td>
7234<td align="center">AF sweep done</td>
7235<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7236<td align="center">Not focused,<wbr/> Lens now locked</td>
7237</tr>
7238<tr>
7239<td align="center">ACTIVE_<wbr/>SCAN</td>
7240<td align="center">AF_<wbr/>CANCEL</td>
7241<td align="center">INACTIVE</td>
7242<td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
7243</tr>
7244<tr>
7245<td align="center">FOCUSED_<wbr/>LOCKED</td>
7246<td align="center">AF_<wbr/>CANCEL</td>
7247<td align="center">INACTIVE</td>
7248<td align="center">Cancel/<wbr/>reset AF</td>
7249</tr>
7250<tr>
7251<td align="center">FOCUSED_<wbr/>LOCKED</td>
7252<td align="center">AF_<wbr/>TRIGGER</td>
7253<td align="center">ACTIVE_<wbr/>SCAN</td>
7254<td align="center">Start new sweep,<wbr/> Lens now moving</td>
7255</tr>
7256<tr>
7257<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7258<td align="center">AF_<wbr/>CANCEL</td>
7259<td align="center">INACTIVE</td>
7260<td align="center">Cancel/<wbr/>reset AF</td>
7261</tr>
7262<tr>
7263<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7264<td align="center">AF_<wbr/>TRIGGER</td>
7265<td align="center">ACTIVE_<wbr/>SCAN</td>
7266<td align="center">Start new sweep,<wbr/> Lens now moving</td>
7267</tr>
7268<tr>
7269<td align="center">Any state</td>
7270<td align="center">Mode change</td>
7271<td align="center">INACTIVE</td>
7272<td align="center"></td>
7273</tr>
7274</tbody>
7275</table>
7276<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7277without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7278can be skipped in that manner is called a transient state.<wbr/></p>
7279<p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
7280state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
7281one or more transient states between two results.<wbr/> See below table for examples:</p>
7282<table>
7283<thead>
7284<tr>
7285<th align="center">State</th>
7286<th align="center">Transition Cause</th>
7287<th align="center">New State</th>
7288<th align="center">Notes</th>
7289</tr>
7290</thead>
7291<tbody>
7292<tr>
7293<td align="center">INACTIVE</td>
7294<td align="center">AF_<wbr/>TRIGGER</td>
7295<td align="center">FOCUSED_<wbr/>LOCKED</td>
7296<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7297</tr>
7298<tr>
7299<td align="center">INACTIVE</td>
7300<td align="center">AF_<wbr/>TRIGGER</td>
7301<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7302<td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
7303</tr>
7304<tr>
7305<td align="center">FOCUSED_<wbr/>LOCKED</td>
7306<td align="center">AF_<wbr/>TRIGGER</td>
7307<td align="center">FOCUSED_<wbr/>LOCKED</td>
7308<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7309</tr>
7310<tr>
7311<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7312<td align="center">AF_<wbr/>TRIGGER</td>
7313<td align="center">FOCUSED_<wbr/>LOCKED</td>
7314<td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
7315</tr>
7316</tbody>
7317</table>
7318<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>
7319<table>
7320<thead>
7321<tr>
7322<th align="center">State</th>
7323<th align="center">Transition Cause</th>
7324<th align="center">New State</th>
7325<th align="center">Notes</th>
7326</tr>
7327</thead>
7328<tbody>
7329<tr>
7330<td align="center">INACTIVE</td>
7331<td align="center">Camera device initiates new scan</td>
7332<td align="center">PASSIVE_<wbr/>SCAN</td>
7333<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7334</tr>
7335<tr>
7336<td align="center">INACTIVE</td>
7337<td align="center">AF_<wbr/>TRIGGER</td>
7338<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7339<td align="center">AF state query,<wbr/> Lens now locked</td>
7340</tr>
7341<tr>
7342<td align="center">PASSIVE_<wbr/>SCAN</td>
7343<td align="center">Camera device completes current scan</td>
7344<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7345<td align="center">End AF scan,<wbr/> Lens now locked</td>
7346</tr>
7347<tr>
7348<td align="center">PASSIVE_<wbr/>SCAN</td>
7349<td align="center">Camera device fails current scan</td>
7350<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7351<td align="center">End AF scan,<wbr/> Lens now locked</td>
7352</tr>
7353<tr>
7354<td align="center">PASSIVE_<wbr/>SCAN</td>
7355<td align="center">AF_<wbr/>TRIGGER</td>
7356<td align="center">FOCUSED_<wbr/>LOCKED</td>
7357<td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td>
7358</tr>
7359<tr>
7360<td align="center">PASSIVE_<wbr/>SCAN</td>
7361<td align="center">AF_<wbr/>TRIGGER</td>
7362<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7363<td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td>
7364</tr>
7365<tr>
7366<td align="center">PASSIVE_<wbr/>SCAN</td>
7367<td align="center">AF_<wbr/>CANCEL</td>
7368<td align="center">INACTIVE</td>
7369<td align="center">Reset lens position,<wbr/> Lens now locked</td>
7370</tr>
7371<tr>
7372<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7373<td align="center">Camera device initiates new scan</td>
7374<td align="center">PASSIVE_<wbr/>SCAN</td>
7375<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7376</tr>
7377<tr>
7378<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7379<td align="center">Camera device initiates new scan</td>
7380<td align="center">PASSIVE_<wbr/>SCAN</td>
7381<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7382</tr>
7383<tr>
7384<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7385<td align="center">AF_<wbr/>TRIGGER</td>
7386<td align="center">FOCUSED_<wbr/>LOCKED</td>
7387<td align="center">Immediate transition,<wbr/> lens now locked</td>
7388</tr>
7389<tr>
7390<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7391<td align="center">AF_<wbr/>TRIGGER</td>
7392<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7393<td align="center">Immediate transition,<wbr/> lens now locked</td>
7394</tr>
7395<tr>
7396<td align="center">FOCUSED_<wbr/>LOCKED</td>
7397<td align="center">AF_<wbr/>TRIGGER</td>
7398<td align="center">FOCUSED_<wbr/>LOCKED</td>
7399<td align="center">No effect</td>
7400</tr>
7401<tr>
7402<td align="center">FOCUSED_<wbr/>LOCKED</td>
7403<td align="center">AF_<wbr/>CANCEL</td>
7404<td align="center">INACTIVE</td>
7405<td align="center">Restart AF scan</td>
7406</tr>
7407<tr>
7408<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7409<td align="center">AF_<wbr/>TRIGGER</td>
7410<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7411<td align="center">No effect</td>
7412</tr>
7413<tr>
7414<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7415<td align="center">AF_<wbr/>CANCEL</td>
7416<td align="center">INACTIVE</td>
7417<td align="center">Restart AF scan</td>
7418</tr>
7419</tbody>
7420</table>
7421<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>
7422<table>
7423<thead>
7424<tr>
7425<th align="center">State</th>
7426<th align="center">Transition Cause</th>
7427<th align="center">New State</th>
7428<th align="center">Notes</th>
7429</tr>
7430</thead>
7431<tbody>
7432<tr>
7433<td align="center">INACTIVE</td>
7434<td align="center">Camera device initiates new scan</td>
7435<td align="center">PASSIVE_<wbr/>SCAN</td>
7436<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7437</tr>
7438<tr>
7439<td align="center">INACTIVE</td>
7440<td align="center">AF_<wbr/>TRIGGER</td>
7441<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7442<td align="center">AF state query,<wbr/> Lens now locked</td>
7443</tr>
7444<tr>
7445<td align="center">PASSIVE_<wbr/>SCAN</td>
7446<td align="center">Camera device completes current scan</td>
7447<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7448<td align="center">End AF scan,<wbr/> Lens now locked</td>
7449</tr>
7450<tr>
7451<td align="center">PASSIVE_<wbr/>SCAN</td>
7452<td align="center">Camera device fails current scan</td>
7453<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7454<td align="center">End AF scan,<wbr/> Lens now locked</td>
7455</tr>
7456<tr>
7457<td align="center">PASSIVE_<wbr/>SCAN</td>
7458<td align="center">AF_<wbr/>TRIGGER</td>
7459<td align="center">FOCUSED_<wbr/>LOCKED</td>
7460<td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td>
7461</tr>
7462<tr>
7463<td align="center">PASSIVE_<wbr/>SCAN</td>
7464<td align="center">AF_<wbr/>TRIGGER</td>
7465<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7466<td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td>
7467</tr>
7468<tr>
7469<td align="center">PASSIVE_<wbr/>SCAN</td>
7470<td align="center">AF_<wbr/>CANCEL</td>
7471<td align="center">INACTIVE</td>
7472<td align="center">Reset lens position,<wbr/> Lens now locked</td>
7473</tr>
7474<tr>
7475<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7476<td align="center">Camera device initiates new scan</td>
7477<td align="center">PASSIVE_<wbr/>SCAN</td>
7478<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7479</tr>
7480<tr>
7481<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7482<td align="center">Camera device initiates new scan</td>
7483<td align="center">PASSIVE_<wbr/>SCAN</td>
7484<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7485</tr>
7486<tr>
7487<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7488<td align="center">AF_<wbr/>TRIGGER</td>
7489<td align="center">FOCUSED_<wbr/>LOCKED</td>
7490<td align="center">Immediate trans.<wbr/> Lens now locked</td>
7491</tr>
7492<tr>
7493<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7494<td align="center">AF_<wbr/>TRIGGER</td>
7495<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7496<td align="center">Immediate trans.<wbr/> Lens now locked</td>
7497</tr>
7498<tr>
7499<td align="center">FOCUSED_<wbr/>LOCKED</td>
7500<td align="center">AF_<wbr/>TRIGGER</td>
7501<td align="center">FOCUSED_<wbr/>LOCKED</td>
7502<td align="center">No effect</td>
7503</tr>
7504<tr>
7505<td align="center">FOCUSED_<wbr/>LOCKED</td>
7506<td align="center">AF_<wbr/>CANCEL</td>
7507<td align="center">INACTIVE</td>
7508<td align="center">Restart AF scan</td>
7509</tr>
7510<tr>
7511<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7512<td align="center">AF_<wbr/>TRIGGER</td>
7513<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7514<td align="center">No effect</td>
7515</tr>
7516<tr>
7517<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7518<td align="center">AF_<wbr/>CANCEL</td>
7519<td align="center">INACTIVE</td>
7520<td align="center">Restart AF scan</td>
7521</tr>
7522</tbody>
7523</table>
7524<p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
7525(AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
7526camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
7527will be evaluated in the context of the new mode in the request.<wbr/>
7528See below table for examples:</p>
7529<table>
7530<thead>
7531<tr>
7532<th align="center">State</th>
7533<th align="center">Transition Cause</th>
7534<th align="center">New State</th>
7535<th align="center">Notes</th>
7536</tr>
7537</thead>
7538<tbody>
7539<tr>
7540<td align="center">any state</td>
7541<td align="center">CAF--&gt;AUTO mode switch</td>
7542<td align="center">INACTIVE</td>
7543<td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
7544</tr>
7545<tr>
7546<td align="center">any state</td>
7547<td align="center">CAF--&gt;AUTO mode switch with AF_<wbr/>TRIGGER</td>
7548<td align="center">trigger-reachable states from INACTIVE</td>
7549<td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
7550</tr>
7551<tr>
7552<td align="center">any state</td>
7553<td align="center">AUTO--&gt;CAF mode switch</td>
7554<td align="center">passively reachable states from INACTIVE</td>
7555<td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
7556</tr>
7557</tbody>
7558</table>
7559            </td>
7560          </tr>
7561
7562
7563          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7564           <!-- end of entry -->
7565
7566
7567          <tr class="entry" id="dynamic_android.control.afTriggerId">
7568            <td class="entry_name
7569                entry_name_deprecated
7570             " rowspan="3">
7571              android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
7572            </td>
7573            <td class="entry_type">
7574                <span class="entry_type_name">int32</span>
7575
7576              <span class="entry_type_visibility"> [system]</span>
7577
7578
7579
7580              <span class="entry_type_deprecated">[deprecated] </span>
7581
7582
7583
7584            </td> <!-- entry_type -->
7585
7586            <td class="entry_description">
7587              <p>The ID sent with the latest
7588CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
7589            </td>
7590
7591            <td class="entry_units">
7592            </td>
7593
7594            <td class="entry_range">
7595              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
7596            </td>
7597
7598            <td class="entry_tags">
7599            </td>
7600
7601          </tr>
7602          <tr class="entries_header">
7603            <th class="th_details" colspan="5">Details</th>
7604          </tr>
7605          <tr class="entry_cont">
7606            <td class="entry_details" colspan="5">
7607              <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
7608received yet by HAL.<wbr/> Always updated even if AF algorithm
7609ignores the trigger</p>
7610            </td>
7611          </tr>
7612
7613
7614          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7615           <!-- end of entry -->
7616
7617
7618          <tr class="entry" id="dynamic_android.control.awbLock">
7619            <td class="entry_name
7620             " rowspan="3">
7621              android.<wbr/>control.<wbr/>awb<wbr/>Lock
7622            </td>
7623            <td class="entry_type">
7624                <span class="entry_type_name entry_type_name_enum">byte</span>
7625
7626              <span class="entry_type_visibility"> [public as boolean]</span>
7627
7628
7629              <span class="entry_type_hwlevel">[legacy] </span>
7630
7631
7632
7633                <ul class="entry_type_enum">
7634                  <li>
7635                    <span class="entry_type_enum_name">OFF</span>
7636                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
7637algorithm is free to update its parameters if in AUTO
7638mode.<wbr/></p></span>
7639                  </li>
7640                  <li>
7641                    <span class="entry_type_enum_name">ON</span>
7642                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
7643algorithm will not update its parameters while the lock
7644is active.<wbr/></p></span>
7645                  </li>
7646                </ul>
7647
7648            </td> <!-- entry_type -->
7649
7650            <td class="entry_description">
7651              <p>Whether auto-white balance (AWB) is currently locked to its
7652latest calculated values.<wbr/></p>
7653            </td>
7654
7655            <td class="entry_units">
7656            </td>
7657
7658            <td class="entry_range">
7659            </td>
7660
7661            <td class="entry_tags">
7662              <ul class="entry_tags">
7663                  <li><a href="#tag_BC">BC</a></li>
7664              </ul>
7665            </td>
7666
7667          </tr>
7668          <tr class="entries_header">
7669            <th class="th_details" colspan="5">Details</th>
7670          </tr>
7671          <tr class="entry_cont">
7672            <td class="entry_details" colspan="5">
7673              <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
7674and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
7675<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
7676get locked do not necessarily correspond to the settings that were present in the
7677latest capture result received from the camera device,<wbr/> since additional captures
7678and AWB updates may have occurred even before the result was sent out.<wbr/> If an
7679application is switching between automatic and manual control and wishes to eliminate
7680any flicker during the switch,<wbr/> the following procedure is recommended:</p>
7681<ol>
7682<li>Starting in auto-AWB mode:</li>
7683<li>Lock AWB</li>
7684<li>Wait for the first result to be output that has the AWB locked</li>
7685<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
7686<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
7687</ol>
7688<p>Note that AWB lock is only meaningful when
7689<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
7690AWB is already fixed to a specific setting.<wbr/></p>
7691<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
7692            </td>
7693          </tr>
7694
7695
7696          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7697           <!-- end of entry -->
7698
7699
7700          <tr class="entry" id="dynamic_android.control.awbMode">
7701            <td class="entry_name
7702             " rowspan="3">
7703              android.<wbr/>control.<wbr/>awb<wbr/>Mode
7704            </td>
7705            <td class="entry_type">
7706                <span class="entry_type_name entry_type_name_enum">byte</span>
7707
7708              <span class="entry_type_visibility"> [public]</span>
7709
7710
7711              <span class="entry_type_hwlevel">[legacy] </span>
7712
7713
7714
7715                <ul class="entry_type_enum">
7716                  <li>
7717                    <span class="entry_type_enum_name">OFF</span>
7718                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
7719<p>The application-selected color transform matrix
7720(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
7721(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
7722device for manual white balance control.<wbr/></p></span>
7723                  </li>
7724                  <li>
7725                    <span class="entry_type_enum_name">AUTO</span>
7726                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
7727<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7728and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7729For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7730values used by the camera device for the transform and gains
7731will be available in the capture result for this request.<wbr/></p></span>
7732                  </li>
7733                  <li>
7734                    <span class="entry_type_enum_name">INCANDESCENT</span>
7735                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7736the camera device uses incandescent light as the assumed scene
7737illumination for white balance.<wbr/></p>
7738<p>While the exact white balance transforms are up to the
7739camera device,<wbr/> they will approximately match the CIE
7740standard illuminant A.<wbr/></p>
7741<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7742and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7743For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7744values used by the camera device for the transform and gains
7745will be available in the capture result for this request.<wbr/></p></span>
7746                  </li>
7747                  <li>
7748                    <span class="entry_type_enum_name">FLUORESCENT</span>
7749                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7750the camera device uses fluorescent light as the assumed scene
7751illumination for white balance.<wbr/></p>
7752<p>While the exact white balance transforms are up to the
7753camera device,<wbr/> they will approximately match the CIE
7754standard illuminant F2.<wbr/></p>
7755<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7756and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7757For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7758values used by the camera device for the transform and gains
7759will be available in the capture result for this request.<wbr/></p></span>
7760                  </li>
7761                  <li>
7762                    <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
7763                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7764the camera device uses warm fluorescent light as the assumed scene
7765illumination for white balance.<wbr/></p>
7766<p>While the exact white balance transforms are up to the
7767camera device,<wbr/> they will approximately match the CIE
7768standard illuminant F4.<wbr/></p>
7769<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7770and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7771For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7772values used by the camera device for the transform and gains
7773will be available in the capture result for this request.<wbr/></p></span>
7774                  </li>
7775                  <li>
7776                    <span class="entry_type_enum_name">DAYLIGHT</span>
7777                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7778the camera device uses daylight light as the assumed scene
7779illumination for white balance.<wbr/></p>
7780<p>While the exact white balance transforms are up to the
7781camera device,<wbr/> they will approximately match the CIE
7782standard illuminant D65.<wbr/></p>
7783<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7784and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7785For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7786values used by the camera device for the transform and gains
7787will be available in the capture result for this request.<wbr/></p></span>
7788                  </li>
7789                  <li>
7790                    <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
7791                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7792the camera device uses cloudy daylight light as the assumed scene
7793illumination for white balance.<wbr/></p>
7794<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7795and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7796For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7797values used by the camera device for the transform and gains
7798will be available in the capture result for this request.<wbr/></p></span>
7799                  </li>
7800                  <li>
7801                    <span class="entry_type_enum_name">TWILIGHT</span>
7802                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7803the camera device uses twilight light as the assumed scene
7804illumination for white balance.<wbr/></p>
7805<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7806and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7807For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7808values used by the camera device for the transform and gains
7809will be available in the capture result for this request.<wbr/></p></span>
7810                  </li>
7811                  <li>
7812                    <span class="entry_type_enum_name">SHADE</span>
7813                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7814the camera device uses shade light as the assumed scene
7815illumination for white balance.<wbr/></p>
7816<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7817and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7818For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7819values used by the camera device for the transform and gains
7820will be available in the capture result for this request.<wbr/></p></span>
7821                  </li>
7822                </ul>
7823
7824            </td> <!-- entry_type -->
7825
7826            <td class="entry_description">
7827              <p>Whether auto-white balance (AWB) is currently setting the color
7828transform fields,<wbr/> and what its illumination target
7829is.<wbr/></p>
7830            </td>
7831
7832            <td class="entry_units">
7833            </td>
7834
7835            <td class="entry_range">
7836              <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
7837            </td>
7838
7839            <td class="entry_tags">
7840              <ul class="entry_tags">
7841                  <li><a href="#tag_BC">BC</a></li>
7842              </ul>
7843            </td>
7844
7845          </tr>
7846          <tr class="entries_header">
7847            <th class="th_details" colspan="5">Details</th>
7848          </tr>
7849          <tr class="entry_cont">
7850            <td class="entry_details" colspan="5">
7851              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
7852<p>When set to the ON mode,<wbr/> the camera device's auto-white balance
7853routine is enabled,<wbr/> overriding the application's selected
7854<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
7855<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>
7856is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
7857also 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
7858setting AE mode to OFF.<wbr/></p>
7859<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
7860routine is disabled.<wbr/> The application manually controls the white
7861balance 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>
7862and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
7863<p>When set to any other modes,<wbr/> the camera device's auto-white
7864balance routine is disabled.<wbr/> The camera device uses each
7865particular illumination target for white balance
7866adjustment.<wbr/> The application's values for
7867<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
7868<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
7869<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
7870            </td>
7871          </tr>
7872
7873
7874          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7875           <!-- end of entry -->
7876
7877
7878          <tr class="entry" id="dynamic_android.control.awbRegions">
7879            <td class="entry_name
7880             " rowspan="5">
7881              android.<wbr/>control.<wbr/>awb<wbr/>Regions
7882            </td>
7883            <td class="entry_type">
7884                <span class="entry_type_name">int32</span>
7885                <span class="entry_type_container">x</span>
7886
7887                <span class="entry_type_array">
7888                  5 x area_count
7889                </span>
7890              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
7891
7892
7893
7894
7895
7896
7897            </td> <!-- entry_type -->
7898
7899            <td class="entry_description">
7900              <p>List of metering areas to use for auto-white-balance illuminant
7901estimation.<wbr/></p>
7902            </td>
7903
7904            <td class="entry_units">
7905              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
7906            </td>
7907
7908            <td class="entry_range">
7909              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
7910<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
7911            </td>
7912
7913            <td class="entry_tags">
7914              <ul class="entry_tags">
7915                  <li><a href="#tag_BC">BC</a></li>
7916              </ul>
7917            </td>
7918
7919          </tr>
7920          <tr class="entries_header">
7921            <th class="th_details" colspan="5">Details</th>
7922          </tr>
7923          <tr class="entry_cont">
7924            <td class="entry_details" colspan="5">
7925              <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
7926Otherwise will always be present.<wbr/></p>
7927<p>The maximum number of regions supported by the device is determined by the value
7928of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
7929<p>The coordinate system is based on the active pixel array,<wbr/>
7930with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
7931(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7932<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
7933bottom-right pixel in the active pixel array.<wbr/></p>
7934<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
7935for every pixel in the area.<wbr/> This means that a large metering area
7936with the same weight as a smaller area will have more effect in
7937the metering result.<wbr/> Metering areas can partially overlap and the
7938camera device will add the weights in the overlap region.<wbr/></p>
7939<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
7940only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
79410 weight is ignored.<wbr/></p>
7942<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
7943camera device.<wbr/></p>
7944<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
7945capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
7946region and output only the intersection rectangle as the metering region in the result
7947metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
7948not reported in the result metadata.<wbr/></p>
7949            </td>
7950          </tr>
7951
7952          <tr class="entries_header">
7953            <th class="th_details" colspan="5">HAL Implementation Details</th>
7954          </tr>
7955          <tr class="entry_cont">
7956            <td class="entry_details" colspan="5">
7957              <p>The HAL level representation of MeteringRectangle[] is a
7958int[5 * area_<wbr/>count].<wbr/>
7959Every five elements represent a metering region of
7960(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
7961The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
7962exclusive on xmax and ymax.<wbr/></p>
7963            </td>
7964          </tr>
7965
7966          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7967           <!-- end of entry -->
7968
7969
7970          <tr class="entry" id="dynamic_android.control.captureIntent">
7971            <td class="entry_name
7972             " rowspan="3">
7973              android.<wbr/>control.<wbr/>capture<wbr/>Intent
7974            </td>
7975            <td class="entry_type">
7976                <span class="entry_type_name entry_type_name_enum">byte</span>
7977
7978              <span class="entry_type_visibility"> [public]</span>
7979
7980
7981              <span class="entry_type_hwlevel">[legacy] </span>
7982
7983
7984
7985                <ul class="entry_type_enum">
7986                  <li>
7987                    <span class="entry_type_enum_name">CUSTOM</span>
7988                    <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
7989categories.<wbr/> The camera device will default to preview-like
7990behavior.<wbr/></p></span>
7991                  </li>
7992                  <li>
7993                    <span class="entry_type_enum_name">PREVIEW</span>
7994                    <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
7995<p>The precapture trigger may be used to start off a metering
7996w/<wbr/>flash sequence.<wbr/></p></span>
7997                  </li>
7998                  <li>
7999                    <span class="entry_type_enum_name">STILL_CAPTURE</span>
8000                    <span class="entry_type_enum_notes"><p>This request is for a still capture-type
8001use case.<wbr/></p>
8002<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
8003                  </li>
8004                  <li>
8005                    <span class="entry_type_enum_name">VIDEO_RECORD</span>
8006                    <span class="entry_type_enum_notes"><p>This request is for a video recording
8007use case.<wbr/></p></span>
8008                  </li>
8009                  <li>
8010                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
8011                    <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
8012image while recording video) use case.<wbr/></p>
8013<p>The camera device should take the highest-quality image
8014possible (given the other settings) without disrupting the
8015frame rate of video recording.<wbr/>  </p></span>
8016                  </li>
8017                  <li>
8018                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
8019                    <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
8020application will stream full-resolution images and
8021reprocess one or several later for a final
8022capture.<wbr/></p></span>
8023                  </li>
8024                  <li>
8025                    <span class="entry_type_enum_name">MANUAL</span>
8026                    <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
8027the applications want to directly control the capture parameters.<wbr/></p>
8028<p>For example,<wbr/> the application may wish to manually control
8029<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>
8030                  </li>
8031                </ul>
8032
8033            </td> <!-- entry_type -->
8034
8035            <td class="entry_description">
8036              <p>Information to the camera device 3A (auto-exposure,<wbr/>
8037auto-focus,<wbr/> auto-white balance) routines about the purpose
8038of this capture,<wbr/> to help the camera device to decide optimal 3A
8039strategy.<wbr/></p>
8040            </td>
8041
8042            <td class="entry_units">
8043            </td>
8044
8045            <td class="entry_range">
8046            </td>
8047
8048            <td class="entry_tags">
8049              <ul class="entry_tags">
8050                  <li><a href="#tag_BC">BC</a></li>
8051              </ul>
8052            </td>
8053
8054          </tr>
8055          <tr class="entries_header">
8056            <th class="th_details" colspan="5">Details</th>
8057          </tr>
8058          <tr class="entry_cont">
8059            <td class="entry_details" colspan="5">
8060              <p>This control (except for MANUAL) is only effective if
8061<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
8062<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
8063contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
8064<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
8065always supported.<wbr/></p>
8066            </td>
8067          </tr>
8068
8069
8070          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8071           <!-- end of entry -->
8072
8073
8074          <tr class="entry" id="dynamic_android.control.awbState">
8075            <td class="entry_name
8076             " rowspan="3">
8077              android.<wbr/>control.<wbr/>awb<wbr/>State
8078            </td>
8079            <td class="entry_type">
8080                <span class="entry_type_name entry_type_name_enum">byte</span>
8081
8082              <span class="entry_type_visibility"> [public]</span>
8083
8084
8085              <span class="entry_type_hwlevel">[limited] </span>
8086
8087
8088
8089                <ul class="entry_type_enum">
8090                  <li>
8091                    <span class="entry_type_enum_name">INACTIVE</span>
8092                    <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
8093<p>When a camera device is opened,<wbr/> it starts in this
8094state.<wbr/> This is a transient state,<wbr/> the camera device may
8095skip reporting this state in capture
8096result.<wbr/></p></span>
8097                  </li>
8098                  <li>
8099                    <span class="entry_type_enum_name">SEARCHING</span>
8100                    <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
8101values for the current scene.<wbr/></p>
8102<p>This is a transient state,<wbr/> the camera device
8103may skip reporting this state in capture result.<wbr/></p></span>
8104                  </li>
8105                  <li>
8106                    <span class="entry_type_enum_name">CONVERGED</span>
8107                    <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
8108current scene.<wbr/></p></span>
8109                  </li>
8110                  <li>
8111                    <span class="entry_type_enum_name">LOCKED</span>
8112                    <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
8113                  </li>
8114                </ul>
8115
8116            </td> <!-- entry_type -->
8117
8118            <td class="entry_description">
8119              <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
8120            </td>
8121
8122            <td class="entry_units">
8123            </td>
8124
8125            <td class="entry_range">
8126            </td>
8127
8128            <td class="entry_tags">
8129            </td>
8130
8131          </tr>
8132          <tr class="entries_header">
8133            <th class="th_details" colspan="5">Details</th>
8134          </tr>
8135          <tr class="entry_cont">
8136            <td class="entry_details" colspan="5">
8137              <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
8138resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
8139or <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
8140the algorithm states to INACTIVE.<wbr/></p>
8141<p>The camera device can do several state transitions between two results,<wbr/> if it is
8142allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
8143a result.<wbr/></p>
8144<p>The state in the result is the state for this image (in sync with this image): if
8145AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
8146be good to use.<wbr/></p>
8147<p>Below are state transition tables for different AWB modes.<wbr/></p>
8148<p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p>
8149<table>
8150<thead>
8151<tr>
8152<th align="center">State</th>
8153<th align="center">Transition Cause</th>
8154<th align="center">New State</th>
8155<th align="center">Notes</th>
8156</tr>
8157</thead>
8158<tbody>
8159<tr>
8160<td align="center">INACTIVE</td>
8161<td align="center"></td>
8162<td align="center">INACTIVE</td>
8163<td align="center">Camera device auto white balance algorithm is disabled</td>
8164</tr>
8165</tbody>
8166</table>
8167<p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
8168<table>
8169<thead>
8170<tr>
8171<th align="center">State</th>
8172<th align="center">Transition Cause</th>
8173<th align="center">New State</th>
8174<th align="center">Notes</th>
8175</tr>
8176</thead>
8177<tbody>
8178<tr>
8179<td align="center">INACTIVE</td>
8180<td align="center">Camera device initiates AWB scan</td>
8181<td align="center">SEARCHING</td>
8182<td align="center">Values changing</td>
8183</tr>
8184<tr>
8185<td align="center">INACTIVE</td>
8186<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8187<td align="center">LOCKED</td>
8188<td align="center">Values locked</td>
8189</tr>
8190<tr>
8191<td align="center">SEARCHING</td>
8192<td align="center">Camera device finishes AWB scan</td>
8193<td align="center">CONVERGED</td>
8194<td align="center">Good values,<wbr/> not changing</td>
8195</tr>
8196<tr>
8197<td align="center">SEARCHING</td>
8198<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8199<td align="center">LOCKED</td>
8200<td align="center">Values locked</td>
8201</tr>
8202<tr>
8203<td align="center">CONVERGED</td>
8204<td align="center">Camera device initiates AWB scan</td>
8205<td align="center">SEARCHING</td>
8206<td align="center">Values changing</td>
8207</tr>
8208<tr>
8209<td align="center">CONVERGED</td>
8210<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8211<td align="center">LOCKED</td>
8212<td align="center">Values locked</td>
8213</tr>
8214<tr>
8215<td align="center">LOCKED</td>
8216<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8217<td align="center">SEARCHING</td>
8218<td align="center">Values not good after unlock</td>
8219</tr>
8220</tbody>
8221</table>
8222<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
8223without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
8224can be skipped in that manner is called a transient state.<wbr/></p>
8225<p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
8226listed in above table,<wbr/> it is also legal for the camera device to skip one or more
8227transient states between two results.<wbr/> See below table for examples:</p>
8228<table>
8229<thead>
8230<tr>
8231<th align="center">State</th>
8232<th align="center">Transition Cause</th>
8233<th align="center">New State</th>
8234<th align="center">Notes</th>
8235</tr>
8236</thead>
8237<tbody>
8238<tr>
8239<td align="center">INACTIVE</td>
8240<td align="center">Camera device finished AWB scan</td>
8241<td align="center">CONVERGED</td>
8242<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
8243</tr>
8244<tr>
8245<td align="center">LOCKED</td>
8246<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8247<td align="center">CONVERGED</td>
8248<td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
8249</tr>
8250</tbody>
8251</table>
8252            </td>
8253          </tr>
8254
8255
8256          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8257           <!-- end of entry -->
8258
8259
8260          <tr class="entry" id="dynamic_android.control.effectMode">
8261            <td class="entry_name
8262             " rowspan="3">
8263              android.<wbr/>control.<wbr/>effect<wbr/>Mode
8264            </td>
8265            <td class="entry_type">
8266                <span class="entry_type_name entry_type_name_enum">byte</span>
8267
8268              <span class="entry_type_visibility"> [public]</span>
8269
8270
8271              <span class="entry_type_hwlevel">[legacy] </span>
8272
8273
8274
8275                <ul class="entry_type_enum">
8276                  <li>
8277                    <span class="entry_type_enum_name">OFF</span>
8278                    <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
8279                  </li>
8280                  <li>
8281                    <span class="entry_type_enum_name">MONO</span>
8282                    <span class="entry_type_enum_optional">[optional]</span>
8283                    <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
8284a single color.<wbr/></p>
8285<p>This will typically be grayscale.<wbr/></p></span>
8286                  </li>
8287                  <li>
8288                    <span class="entry_type_enum_name">NEGATIVE</span>
8289                    <span class="entry_type_enum_optional">[optional]</span>
8290                    <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
8291are inverted.<wbr/></p></span>
8292                  </li>
8293                  <li>
8294                    <span class="entry_type_enum_name">SOLARIZE</span>
8295                    <span class="entry_type_enum_optional">[optional]</span>
8296                    <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
8297image is wholly or partially reversed in
8298tone.<wbr/></p></span>
8299                  </li>
8300                  <li>
8301                    <span class="entry_type_enum_name">SEPIA</span>
8302                    <span class="entry_type_enum_optional">[optional]</span>
8303                    <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
8304gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
8305                  </li>
8306                  <li>
8307                    <span class="entry_type_enum_name">POSTERIZE</span>
8308                    <span class="entry_type_enum_optional">[optional]</span>
8309                    <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
8310discrete regions of tone rather than a continuous
8311gradient of tones.<wbr/></p></span>
8312                  </li>
8313                  <li>
8314                    <span class="entry_type_enum_name">WHITEBOARD</span>
8315                    <span class="entry_type_enum_optional">[optional]</span>
8316                    <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
8317as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
8318                  </li>
8319                  <li>
8320                    <span class="entry_type_enum_name">BLACKBOARD</span>
8321                    <span class="entry_type_enum_optional">[optional]</span>
8322                    <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
8323as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
8324                  </li>
8325                  <li>
8326                    <span class="entry_type_enum_name">AQUA</span>
8327                    <span class="entry_type_enum_optional">[optional]</span>
8328                    <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
8329                  </li>
8330                </ul>
8331
8332            </td> <!-- entry_type -->
8333
8334            <td class="entry_description">
8335              <p>A special color effect to apply.<wbr/></p>
8336            </td>
8337
8338            <td class="entry_units">
8339            </td>
8340
8341            <td class="entry_range">
8342              <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
8343            </td>
8344
8345            <td class="entry_tags">
8346              <ul class="entry_tags">
8347                  <li><a href="#tag_BC">BC</a></li>
8348              </ul>
8349            </td>
8350
8351          </tr>
8352          <tr class="entries_header">
8353            <th class="th_details" colspan="5">Details</th>
8354          </tr>
8355          <tr class="entry_cont">
8356            <td class="entry_details" colspan="5">
8357              <p>When this mode is set,<wbr/> a color effect will be applied
8358to images produced by the camera device.<wbr/> The interpretation
8359and implementation of these color effects is left to the
8360implementor of the camera device,<wbr/> and should not be
8361depended on to be consistent (or present) across all
8362devices.<wbr/></p>
8363            </td>
8364          </tr>
8365
8366
8367          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8368           <!-- end of entry -->
8369
8370
8371          <tr class="entry" id="dynamic_android.control.mode">
8372            <td class="entry_name
8373             " rowspan="3">
8374              android.<wbr/>control.<wbr/>mode
8375            </td>
8376            <td class="entry_type">
8377                <span class="entry_type_name entry_type_name_enum">byte</span>
8378
8379              <span class="entry_type_visibility"> [public]</span>
8380
8381
8382              <span class="entry_type_hwlevel">[legacy] </span>
8383
8384
8385
8386                <ul class="entry_type_enum">
8387                  <li>
8388                    <span class="entry_type_enum_name">OFF</span>
8389                    <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
8390<p>All control by the device's metering and focusing (3A)
8391routines is disabled,<wbr/> and no other settings in
8392android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
8393<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
8394device to select post-processing values for processing
8395blocks that do not allow for manual control,<wbr/> or are not
8396exposed by the camera API.<wbr/></p>
8397<p>However,<wbr/> the camera device's 3A routines may continue to
8398collect statistics and update their internal state so that
8399when control is switched to AUTO mode,<wbr/> good control values
8400can be immediately applied.<wbr/></p></span>
8401                  </li>
8402                  <li>
8403                    <span class="entry_type_enum_name">AUTO</span>
8404                    <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
8405<p>Manual control of capture parameters is disabled.<wbr/> All
8406controls in android.<wbr/>control.<wbr/>* besides sceneMode take
8407effect.<wbr/></p></span>
8408                  </li>
8409                  <li>
8410                    <span class="entry_type_enum_name">USE_SCENE_MODE</span>
8411                    <span class="entry_type_enum_optional">[optional]</span>
8412                    <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
8413<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
8414control.<wbr/>afMode controls; the camera device will ignore
8415those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
8416FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
8417This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
8418<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
8419contain some modes other than DISABLED).<wbr/></p></span>
8420                  </li>
8421                  <li>
8422                    <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
8423                    <span class="entry_type_enum_optional">[optional]</span>
8424                    <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
8425used by camera device background auto-exposure,<wbr/> auto-white balance and
8426auto-focus algorithms (3A) to update their statistics.<wbr/></p>
8427<p>Specifically,<wbr/> the 3A routines are locked to the last
8428values set from a request with AUTO,<wbr/> OFF,<wbr/> or
8429USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
8430collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
8431discarded by the camera device.<wbr/></p></span>
8432                  </li>
8433                </ul>
8434
8435            </td> <!-- entry_type -->
8436
8437            <td class="entry_description">
8438              <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
8439routines.<wbr/></p>
8440            </td>
8441
8442            <td class="entry_units">
8443            </td>
8444
8445            <td class="entry_range">
8446              <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
8447            </td>
8448
8449            <td class="entry_tags">
8450              <ul class="entry_tags">
8451                  <li><a href="#tag_BC">BC</a></li>
8452              </ul>
8453            </td>
8454
8455          </tr>
8456          <tr class="entries_header">
8457            <th class="th_details" colspan="5">Details</th>
8458          </tr>
8459          <tr class="entry_cont">
8460            <td class="entry_details" colspan="5">
8461              <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
8462by the camera device is disabled.<wbr/> The application must set the fields for
8463capture parameters itself.<wbr/></p>
8464<p>When set to AUTO,<wbr/> the individual algorithm controls in
8465android.<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>
8466<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
8467android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
8468one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
8469as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
8470<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
8471<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
8472is that this frame will not be used by camera device background 3A statistics
8473update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
8474where the application doesn't want a 3A manual control capture to affect
8475the subsequent auto 3A capture results.<wbr/></p>
8476            </td>
8477          </tr>
8478
8479
8480          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8481           <!-- end of entry -->
8482
8483
8484          <tr class="entry" id="dynamic_android.control.sceneMode">
8485            <td class="entry_name
8486             " rowspan="5">
8487              android.<wbr/>control.<wbr/>scene<wbr/>Mode
8488            </td>
8489            <td class="entry_type">
8490                <span class="entry_type_name entry_type_name_enum">byte</span>
8491
8492              <span class="entry_type_visibility"> [public]</span>
8493
8494
8495              <span class="entry_type_hwlevel">[legacy] </span>
8496
8497
8498
8499                <ul class="entry_type_enum">
8500                  <li>
8501                    <span class="entry_type_enum_name">DISABLED</span>
8502                    <span class="entry_type_enum_value">0</span>
8503                    <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
8504                  </li>
8505                  <li>
8506                    <span class="entry_type_enum_name">FACE_PRIORITY</span>
8507                    <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
8508detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
8509auto-exposure routines.<wbr/></p>
8510<p>If face detection statistics are disabled
8511(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/>
8512this should still operate correctly (but will not return
8513face detection statistics to the framework).<wbr/></p>
8514<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8515<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>
8516remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
8517                  </li>
8518                  <li>
8519                    <span class="entry_type_enum_name">ACTION</span>
8520                    <span class="entry_type_enum_optional">[optional]</span>
8521                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
8522<p>Similar to SPORTS.<wbr/></p></span>
8523                  </li>
8524                  <li>
8525                    <span class="entry_type_enum_name">PORTRAIT</span>
8526                    <span class="entry_type_enum_optional">[optional]</span>
8527                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
8528                  </li>
8529                  <li>
8530                    <span class="entry_type_enum_name">LANDSCAPE</span>
8531                    <span class="entry_type_enum_optional">[optional]</span>
8532                    <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
8533                  </li>
8534                  <li>
8535                    <span class="entry_type_enum_name">NIGHT</span>
8536                    <span class="entry_type_enum_optional">[optional]</span>
8537                    <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
8538                  </li>
8539                  <li>
8540                    <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
8541                    <span class="entry_type_enum_optional">[optional]</span>
8542                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
8543settings.<wbr/></p></span>
8544                  </li>
8545                  <li>
8546                    <span class="entry_type_enum_name">THEATRE</span>
8547                    <span class="entry_type_enum_optional">[optional]</span>
8548                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
8549remain off.<wbr/></p></span>
8550                  </li>
8551                  <li>
8552                    <span class="entry_type_enum_name">BEACH</span>
8553                    <span class="entry_type_enum_optional">[optional]</span>
8554                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
8555                  </li>
8556                  <li>
8557                    <span class="entry_type_enum_name">SNOW</span>
8558                    <span class="entry_type_enum_optional">[optional]</span>
8559                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
8560                  </li>
8561                  <li>
8562                    <span class="entry_type_enum_name">SUNSET</span>
8563                    <span class="entry_type_enum_optional">[optional]</span>
8564                    <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
8565                  </li>
8566                  <li>
8567                    <span class="entry_type_enum_name">STEADYPHOTO</span>
8568                    <span class="entry_type_enum_optional">[optional]</span>
8569                    <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
8570device motion (for example: due to hand shake).<wbr/></p></span>
8571                  </li>
8572                  <li>
8573                    <span class="entry_type_enum_name">FIREWORKS</span>
8574                    <span class="entry_type_enum_optional">[optional]</span>
8575                    <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
8576                  </li>
8577                  <li>
8578                    <span class="entry_type_enum_name">SPORTS</span>
8579                    <span class="entry_type_enum_optional">[optional]</span>
8580                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
8581<p>Similar to ACTION.<wbr/></p></span>
8582                  </li>
8583                  <li>
8584                    <span class="entry_type_enum_name">PARTY</span>
8585                    <span class="entry_type_enum_optional">[optional]</span>
8586                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
8587people.<wbr/></p></span>
8588                  </li>
8589                  <li>
8590                    <span class="entry_type_enum_name">CANDLELIGHT</span>
8591                    <span class="entry_type_enum_optional">[optional]</span>
8592                    <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
8593is a flame.<wbr/></p></span>
8594                  </li>
8595                  <li>
8596                    <span class="entry_type_enum_name">BARCODE</span>
8597                    <span class="entry_type_enum_optional">[optional]</span>
8598                    <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
8599for use by camera applications that wish to read the
8600barcode value.<wbr/></p></span>
8601                  </li>
8602                  <li>
8603                    <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
8604                    <span class="entry_type_enum_deprecated">[deprecated]</span>
8605                    <span class="entry_type_enum_optional">[optional]</span>
8606                    <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>
8607and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
8608for high speed video recording.<wbr/></p>
8609<p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
8610<p>The supported high speed video sizes and fps ranges are specified in
8611<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
8612output frame rates,<wbr/> the application is only allowed to select video size
8613and fps range combinations listed in this static metadata.<wbr/> The fps range
8614can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
8615<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
8616ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
8617controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
8618and post-processing parameters is possible.<wbr/> All other controls operate the
8619same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
8620android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
8621<ul>
8622<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
8623<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
8624<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
8625<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
8626<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
8627<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
8628<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
8629<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
8630<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
8631<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
8632</ul>
8633<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
8634<ul>
8635<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>
8636<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
8637<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
8638<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
8639</ul>
8640<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
8641be lower than what camera can output,<wbr/> depending on the destination Surfaces for
8642the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
8643the application need check if the video encoder is capable of supporting the
8644high frame rate for a given video size,<wbr/> or it will end up with lower recording
8645frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
8646rate will be bounded by the screen refresh rate.<wbr/></p>
8647<p>The camera device will only support up to 2 output high speed streams
8648(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
8649in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
8650<ul>
8651<li>The application created no more than maxNumHighSpeedStreams processed non-stalling
8652format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
8653min(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>
8654<li>The stream sizes are selected from the sizes reported by
8655<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
8656<li>No processed non-stalling or raw streams are configured.<wbr/></li>
8657</ul>
8658<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
8659<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/>
8660the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
8661and the returned capture result metadata will give the fps range choosen
8662by the camera device.<wbr/></p>
8663<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
8664reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
8665the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
8666                  </li>
8667                  <li>
8668                    <span class="entry_type_enum_name">HDR</span>
8669                    <span class="entry_type_enum_optional">[optional]</span>
8670                    <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
8671<p>In this scene mode,<wbr/> the camera device captures images
8672that keep a larger range of scene illumination levels
8673visible in the final image.<wbr/> For example,<wbr/> when taking a
8674picture of a object in front of a bright window,<wbr/> both
8675the object and the scene through the window may be
8676visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
8677one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
8678HDR mode generally takes much longer to capture a single
8679image,<wbr/> has no user control,<wbr/> and may have other artifacts
8680depending on the HDR method used.<wbr/></p>
8681<p>Therefore,<wbr/> HDR captures operate at a much slower rate
8682than regular captures.<wbr/></p>
8683<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
8684is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
8685STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
8686using a high dynamic range capture technique.<wbr/>  On LEGACY
8687devices,<wbr/> captures that target a JPEG-format output will
8688be captured with HDR,<wbr/> and the capture intent is not
8689relevant.<wbr/></p>
8690<p>The HDR capture may involve the device capturing a burst
8691of images internally and combining them into one,<wbr/> or it
8692may involve the device using specialized high dynamic
8693range capture hardware.<wbr/> In all cases,<wbr/> a single image is
8694produced in response to a capture request submitted
8695while in HDR mode.<wbr/></p>
8696<p>Since substantial post-processing is generally needed to
8697produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
8698outputs are supported for LIMITED/<wbr/>FULL device HDR
8699captures,<wbr/> and only JPEG outputs are supported for LEGACY
8700HDR captures.<wbr/> Using a RAW output for HDR capture is not
8701supported.<wbr/></p>
8702<p>Some devices may also support always-on HDR,<wbr/> which
8703applies HDR processing at full frame rate.<wbr/>  For these
8704devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
8705produce an HDR output with no frame rate impact compared
8706to normal operation,<wbr/> though the quality may be lower
8707than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
8708<p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
8709or capture intents,<wbr/> the images captured will be as if
8710the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
8711                  </li>
8712                  <li>
8713                    <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span>
8714                    <span class="entry_type_enum_optional">[optional]</span>
8715                    <span class="entry_type_enum_hidden">[hidden]</span>
8716                    <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
8717device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
8718under low light conditions.<wbr/></p>
8719<p>The camera device may be tuned to expose the images in a reduced
8720sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
8721if 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/>
8722the camera device auto-exposure routine tuning process may limit the actual
8723exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
8724exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
8725low light may be under-exposed when the sensor max exposure time (bounded by the
8726<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
8727ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
8728camera device auto-exposure routine to increase the sensitivity up to the max
8729sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
8730dark and the max exposure time is reached.<wbr/> The captured images may be noisier
8731compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
8732recommended that the application only use this scene mode when it is capable of
8733reducing the noise level of the captured images.<wbr/></p>
8734<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8735<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>
8736remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
8737                  </li>
8738                  <li>
8739                    <span class="entry_type_enum_name">DEVICE_CUSTOM_START</span>
8740                    <span class="entry_type_enum_optional">[optional]</span>
8741                    <span class="entry_type_enum_hidden">[hidden]</span>
8742                    <span class="entry_type_enum_value">100</span>
8743                    <span class="entry_type_enum_notes"><p>Scene mode values within the range of
8744<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
8745customized scene modes.<wbr/></p></span>
8746                  </li>
8747                  <li>
8748                    <span class="entry_type_enum_name">DEVICE_CUSTOM_END</span>
8749                    <span class="entry_type_enum_optional">[optional]</span>
8750                    <span class="entry_type_enum_hidden">[hidden]</span>
8751                    <span class="entry_type_enum_value">127</span>
8752                    <span class="entry_type_enum_notes"><p>Scene mode values within the range of
8753<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
8754customized scene modes.<wbr/></p></span>
8755                  </li>
8756                </ul>
8757
8758            </td> <!-- entry_type -->
8759
8760            <td class="entry_description">
8761              <p>Control for which scene mode is currently active.<wbr/></p>
8762            </td>
8763
8764            <td class="entry_units">
8765            </td>
8766
8767            <td class="entry_range">
8768              <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
8769            </td>
8770
8771            <td class="entry_tags">
8772              <ul class="entry_tags">
8773                  <li><a href="#tag_BC">BC</a></li>
8774              </ul>
8775            </td>
8776
8777          </tr>
8778          <tr class="entries_header">
8779            <th class="th_details" colspan="5">Details</th>
8780          </tr>
8781          <tr class="entry_cont">
8782            <td class="entry_details" colspan="5">
8783              <p>Scene modes are custom camera modes optimized for a certain set of conditions and
8784capture settings.<wbr/></p>
8785<p>This is the mode that that is active when
8786<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
8787disable <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>
8788while in use.<wbr/></p>
8789<p>The interpretation and implementation of these scene modes is left
8790to the implementor of the camera device.<wbr/> Their behavior will not be
8791consistent across all devices,<wbr/> and any given device may only implement
8792a subset of these modes.<wbr/></p>
8793            </td>
8794          </tr>
8795
8796          <tr class="entries_header">
8797            <th class="th_details" colspan="5">HAL Implementation Details</th>
8798          </tr>
8799          <tr class="entry_cont">
8800            <td class="entry_details" colspan="5">
8801              <p>HAL implementations that include scene modes are expected to provide
8802the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8803<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
8804<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
8805<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/>
8806the HAL must list supported video size and fps range in
8807<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/>
88081280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming
8809mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture
8810requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/>
8811This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
8812<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
8813capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
8814            </td>
8815          </tr>
8816
8817          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8818           <!-- end of entry -->
8819
8820
8821          <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
8822            <td class="entry_name
8823             " rowspan="3">
8824              android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
8825            </td>
8826            <td class="entry_type">
8827                <span class="entry_type_name entry_type_name_enum">byte</span>
8828
8829              <span class="entry_type_visibility"> [public]</span>
8830
8831
8832              <span class="entry_type_hwlevel">[legacy] </span>
8833
8834
8835
8836                <ul class="entry_type_enum">
8837                  <li>
8838                    <span class="entry_type_enum_name">OFF</span>
8839                    <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
8840                  </li>
8841                  <li>
8842                    <span class="entry_type_enum_name">ON</span>
8843                    <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
8844                  </li>
8845                </ul>
8846
8847            </td> <!-- entry_type -->
8848
8849            <td class="entry_description">
8850              <p>Whether video stabilization is
8851active.<wbr/></p>
8852            </td>
8853
8854            <td class="entry_units">
8855            </td>
8856
8857            <td class="entry_range">
8858            </td>
8859
8860            <td class="entry_tags">
8861              <ul class="entry_tags">
8862                  <li><a href="#tag_BC">BC</a></li>
8863              </ul>
8864            </td>
8865
8866          </tr>
8867          <tr class="entries_header">
8868            <th class="th_details" colspan="5">Details</th>
8869          </tr>
8870          <tr class="entry_cont">
8871            <td class="entry_details" colspan="5">
8872              <p>Video stabilization automatically warps images from
8873the camera in order to stabilize motion between consecutive frames.<wbr/></p>
8874<p>If enabled,<wbr/> video stabilization can modify the
8875<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
8876<p>Switching between different video stabilization modes may take several
8877frames to initialize,<wbr/> the camera device will report the current mode
8878in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
8879the video stabilization modes in the first several capture results may
8880still be "OFF",<wbr/> and it will become "ON" when the initialization is
8881done.<wbr/></p>
8882<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
8883stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
8884that an output targeting a MediaRecorder or MediaCodec will be stabilized if
8885the recording resolution is less than or equal to 1920 x 1080 (width less than
8886or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
8887frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
8888<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
8889OFF if the recording output is not stabilized,<wbr/> or if there are no output
8890Surface types that can be stabilized.<wbr/></p>
8891<p>If a camera device supports both this mode and OIS
8892(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
8893produce undesirable interaction,<wbr/> so it is recommended not to enable
8894both at the same time.<wbr/></p>
8895            </td>
8896          </tr>
8897
8898
8899          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8900           <!-- end of entry -->
8901
8902
8903          <tr class="entry" id="dynamic_android.control.postRawSensitivityBoost">
8904            <td class="entry_name
8905             " rowspan="3">
8906              android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
8907            </td>
8908            <td class="entry_type">
8909                <span class="entry_type_name">int32</span>
8910
8911              <span class="entry_type_visibility"> [public]</span>
8912
8913
8914
8915
8916
8917
8918            </td> <!-- entry_type -->
8919
8920            <td class="entry_description">
8921              <p>The amount of additional sensitivity boost applied to output images
8922after RAW sensor data is captured.<wbr/></p>
8923            </td>
8924
8925            <td class="entry_units">
8926              ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
8927            </td>
8928
8929            <td class="entry_range">
8930              <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
8931            </td>
8932
8933            <td class="entry_tags">
8934            </td>
8935
8936          </tr>
8937          <tr class="entries_header">
8938            <th class="th_details" colspan="5">Details</th>
8939          </tr>
8940          <tr class="entry_cont">
8941            <td class="entry_details" colspan="5">
8942              <p>Some camera devices support additional digital sensitivity boosting in the
8943camera processing pipeline after sensor RAW image is captured.<wbr/>
8944Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
8945have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
8946<p>This key will be <code>null</code> for devices that do not support any RAW format
8947outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
8948present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
8949list <code>100</code> in this key.<wbr/></p>
8950<p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
8951boost to the nearest supported value.<wbr/>
8952The final boost value used will be available in the output capture result.<wbr/></p>
8953<p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
8954of such device will have the total sensitivity of
8955<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>
8956The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
8957<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
8958OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
8959            </td>
8960          </tr>
8961
8962
8963          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8964           <!-- end of entry -->
8965
8966
8967          <tr class="entry" id="dynamic_android.control.enableZsl">
8968            <td class="entry_name
8969             " rowspan="5">
8970              android.<wbr/>control.<wbr/>enable<wbr/>Zsl
8971            </td>
8972            <td class="entry_type">
8973                <span class="entry_type_name entry_type_name_enum">byte</span>
8974
8975              <span class="entry_type_visibility"> [public as boolean]</span>
8976
8977
8978
8979
8980
8981                <ul class="entry_type_enum">
8982                  <li>
8983                    <span class="entry_type_enum_name">FALSE</span>
8984                    <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
8985after previous requests.<wbr/></p></span>
8986                  </li>
8987                  <li>
8988                    <span class="entry_type_enum_name">TRUE</span>
8989                    <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
8990captured before previous requests.<wbr/></p></span>
8991                  </li>
8992                </ul>
8993
8994            </td> <!-- entry_type -->
8995
8996            <td class="entry_description">
8997              <p>Allow camera device to enable zero-shutter-lag mode for requests with
8998<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
8999            </td>
9000
9001            <td class="entry_units">
9002            </td>
9003
9004            <td class="entry_range">
9005            </td>
9006
9007            <td class="entry_tags">
9008            </td>
9009
9010          </tr>
9011          <tr class="entries_header">
9012            <th class="th_details" colspan="5">Details</th>
9013          </tr>
9014          <tr class="entry_cont">
9015            <td class="entry_details" colspan="5">
9016              <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
9017STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
9018produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
9019<a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
9020Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
9021compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
9022capture intents.<wbr/></p>
9023<p>For example,<wbr/> when requests are submitted in the following order:
9024  Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
9025  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>
9026<p>The output images for request B may have contents captured before the output images for
9027request A,<wbr/> and the result metadata for request B may be older than the result metadata for
9028request A.<wbr/></p>
9029<p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
9030the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
9031<p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
9032TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
9033<code>false</code> if present.<wbr/></p>
9034<p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
9035capture templates is always <code>false</code> if present.<wbr/></p>
9036<p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
9037            </td>
9038          </tr>
9039
9040          <tr class="entries_header">
9041            <th class="th_details" colspan="5">HAL Implementation Details</th>
9042          </tr>
9043          <tr class="entry_cont">
9044            <td class="entry_details" colspan="5">
9045              <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
9046capture intent.<wbr/></p>
9047            </td>
9048          </tr>
9049
9050          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9051           <!-- end of entry -->
9052
9053
9054
9055      <!-- end of kind -->
9056      </tbody>
9057
9058  <!-- end of section -->
9059  <tr><td colspan="6" id="section_demosaic" class="section">demosaic</td></tr>
9060
9061
9062      <tr><td colspan="6" class="kind">controls</td></tr>
9063
9064      <thead class="entries_header">
9065        <tr>
9066          <th class="th_name">Property Name</th>
9067          <th class="th_type">Type</th>
9068          <th class="th_description">Description</th>
9069          <th class="th_units">Units</th>
9070          <th class="th_range">Range</th>
9071          <th class="th_tags">Tags</th>
9072        </tr>
9073      </thead>
9074
9075      <tbody>
9076
9077
9078
9079
9080
9081
9082
9083
9084
9085
9086          <tr class="entry" id="controls_android.demosaic.mode">
9087            <td class="entry_name
9088             " rowspan="1">
9089              android.<wbr/>demosaic.<wbr/>mode
9090            </td>
9091            <td class="entry_type">
9092                <span class="entry_type_name entry_type_name_enum">byte</span>
9093
9094              <span class="entry_type_visibility"> [system]</span>
9095
9096
9097
9098
9099
9100                <ul class="entry_type_enum">
9101                  <li>
9102                    <span class="entry_type_enum_name">FAST</span>
9103                    <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
9104Bayer RAW output.<wbr/></p></span>
9105                  </li>
9106                  <li>
9107                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
9108                    <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down
9109relative to raw output.<wbr/></p></span>
9110                  </li>
9111                </ul>
9112
9113            </td> <!-- entry_type -->
9114
9115            <td class="entry_description">
9116              <p>Controls the quality of the demosaicing
9117processing.<wbr/></p>
9118            </td>
9119
9120            <td class="entry_units">
9121            </td>
9122
9123            <td class="entry_range">
9124            </td>
9125
9126            <td class="entry_tags">
9127              <ul class="entry_tags">
9128                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9129              </ul>
9130            </td>
9131
9132          </tr>
9133
9134
9135          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9136           <!-- end of entry -->
9137
9138
9139
9140      <!-- end of kind -->
9141      </tbody>
9142
9143  <!-- end of section -->
9144  <tr><td colspan="6" id="section_edge" class="section">edge</td></tr>
9145
9146
9147      <tr><td colspan="6" class="kind">controls</td></tr>
9148
9149      <thead class="entries_header">
9150        <tr>
9151          <th class="th_name">Property Name</th>
9152          <th class="th_type">Type</th>
9153          <th class="th_description">Description</th>
9154          <th class="th_units">Units</th>
9155          <th class="th_range">Range</th>
9156          <th class="th_tags">Tags</th>
9157        </tr>
9158      </thead>
9159
9160      <tbody>
9161
9162
9163
9164
9165
9166
9167
9168
9169
9170
9171          <tr class="entry" id="controls_android.edge.mode">
9172            <td class="entry_name
9173             " rowspan="5">
9174              android.<wbr/>edge.<wbr/>mode
9175            </td>
9176            <td class="entry_type">
9177                <span class="entry_type_name entry_type_name_enum">byte</span>
9178
9179              <span class="entry_type_visibility"> [public]</span>
9180
9181
9182              <span class="entry_type_hwlevel">[full] </span>
9183
9184
9185
9186                <ul class="entry_type_enum">
9187                  <li>
9188                    <span class="entry_type_enum_name">OFF</span>
9189                    <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9190                  </li>
9191                  <li>
9192                    <span class="entry_type_enum_name">FAST</span>
9193                    <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9194relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9195slow down frame rate relative to sensor.<wbr/></p></span>
9196                  </li>
9197                  <li>
9198                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
9199                    <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>
9200                  </li>
9201                  <li>
9202                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
9203                    <span class="entry_type_enum_optional">[optional]</span>
9204                    <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/>
9205based 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>) or below have
9206edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement
9207applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that
9208frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it
9209is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9210<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9211with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9212high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9213produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
9214high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9215preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9216buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9217reasonable preview quality.<wbr/></p>
9218<p>This mode is guaranteed to be supported by devices that support either the
9219YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9220(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9221be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9222                  </li>
9223                </ul>
9224
9225            </td> <!-- entry_type -->
9226
9227            <td class="entry_description">
9228              <p>Operation mode for edge
9229enhancement.<wbr/></p>
9230            </td>
9231
9232            <td class="entry_units">
9233            </td>
9234
9235            <td class="entry_range">
9236              <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9237            </td>
9238
9239            <td class="entry_tags">
9240              <ul class="entry_tags">
9241                  <li><a href="#tag_V1">V1</a></li>
9242                  <li><a href="#tag_REPROC">REPROC</a></li>
9243              </ul>
9244            </td>
9245
9246          </tr>
9247          <tr class="entries_header">
9248            <th class="th_details" colspan="5">Details</th>
9249          </tr>
9250          <tr class="entry_cont">
9251            <td class="entry_details" colspan="5">
9252              <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9253no enhancement will be applied by the camera device.<wbr/></p>
9254<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9255will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9256camera device will use the highest-quality enhancement algorithms,<wbr/>
9257even if it slows down capture rate.<wbr/> FAST means the camera device will
9258not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9259edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9260amount of enhancement applied.<wbr/></p>
9261<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9262buffer of high-resolution images during preview and reprocess image(s) from that buffer
9263into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9264edge enhancement to low-resolution streams (below maximum recording resolution) to
9265maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9266since those will be reprocessed later if necessary.<wbr/></p>
9267<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9268device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9269The camera device may adjust its internal edge enhancement parameters for best
9270image 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>
9271            </td>
9272          </tr>
9273
9274          <tr class="entries_header">
9275            <th class="th_details" colspan="5">HAL Implementation Details</th>
9276          </tr>
9277          <tr class="entry_cont">
9278            <td class="entry_details" colspan="5">
9279              <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
9280adjust the internal edge enhancement reduction parameters appropriately to get the best
9281quality images.<wbr/></p>
9282            </td>
9283          </tr>
9284
9285          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9286           <!-- end of entry -->
9287
9288
9289          <tr class="entry" id="controls_android.edge.strength">
9290            <td class="entry_name
9291             " rowspan="1">
9292              android.<wbr/>edge.<wbr/>strength
9293            </td>
9294            <td class="entry_type">
9295                <span class="entry_type_name">byte</span>
9296
9297              <span class="entry_type_visibility"> [system]</span>
9298
9299
9300
9301
9302
9303
9304            </td> <!-- entry_type -->
9305
9306            <td class="entry_description">
9307              <p>Control the amount of edge enhancement
9308applied to the images</p>
9309            </td>
9310
9311            <td class="entry_units">
9312              1-10; 10 is maximum sharpening
9313            </td>
9314
9315            <td class="entry_range">
9316            </td>
9317
9318            <td class="entry_tags">
9319              <ul class="entry_tags">
9320                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9321              </ul>
9322            </td>
9323
9324          </tr>
9325
9326
9327          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9328           <!-- end of entry -->
9329
9330
9331
9332      <!-- end of kind -->
9333      </tbody>
9334      <tr><td colspan="6" class="kind">static</td></tr>
9335
9336      <thead class="entries_header">
9337        <tr>
9338          <th class="th_name">Property Name</th>
9339          <th class="th_type">Type</th>
9340          <th class="th_description">Description</th>
9341          <th class="th_units">Units</th>
9342          <th class="th_range">Range</th>
9343          <th class="th_tags">Tags</th>
9344        </tr>
9345      </thead>
9346
9347      <tbody>
9348
9349
9350
9351
9352
9353
9354
9355
9356
9357
9358          <tr class="entry" id="static_android.edge.availableEdgeModes">
9359            <td class="entry_name
9360             " rowspan="5">
9361              android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
9362            </td>
9363            <td class="entry_type">
9364                <span class="entry_type_name">byte</span>
9365                <span class="entry_type_container">x</span>
9366
9367                <span class="entry_type_array">
9368                  n
9369                </span>
9370              <span class="entry_type_visibility"> [public as enumList]</span>
9371
9372
9373              <span class="entry_type_hwlevel">[full] </span>
9374
9375
9376                <div class="entry_type_notes">list of enums</div>
9377
9378
9379            </td> <!-- entry_type -->
9380
9381            <td class="entry_description">
9382              <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
9383device.<wbr/></p>
9384            </td>
9385
9386            <td class="entry_units">
9387            </td>
9388
9389            <td class="entry_range">
9390              <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
9391            </td>
9392
9393            <td class="entry_tags">
9394              <ul class="entry_tags">
9395                  <li><a href="#tag_V1">V1</a></li>
9396                  <li><a href="#tag_REPROC">REPROC</a></li>
9397              </ul>
9398            </td>
9399
9400          </tr>
9401          <tr class="entries_header">
9402            <th class="th_details" colspan="5">Details</th>
9403          </tr>
9404          <tr class="entry_cont">
9405            <td class="entry_details" colspan="5">
9406              <p>Full-capability camera devices must always support OFF; camera devices that support
9407YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will
9408list FAST.<wbr/></p>
9409            </td>
9410          </tr>
9411
9412          <tr class="entries_header">
9413            <th class="th_details" colspan="5">HAL Implementation Details</th>
9414          </tr>
9415          <tr class="entry_cont">
9416            <td class="entry_details" colspan="5">
9417              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available
9418on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
9419That is,<wbr/> if the highest quality implementation on the camera device does not slow down
9420capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
9421            </td>
9422          </tr>
9423
9424          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9425           <!-- end of entry -->
9426
9427
9428
9429      <!-- end of kind -->
9430      </tbody>
9431      <tr><td colspan="6" class="kind">dynamic</td></tr>
9432
9433      <thead class="entries_header">
9434        <tr>
9435          <th class="th_name">Property Name</th>
9436          <th class="th_type">Type</th>
9437          <th class="th_description">Description</th>
9438          <th class="th_units">Units</th>
9439          <th class="th_range">Range</th>
9440          <th class="th_tags">Tags</th>
9441        </tr>
9442      </thead>
9443
9444      <tbody>
9445
9446
9447
9448
9449
9450
9451
9452
9453
9454
9455          <tr class="entry" id="dynamic_android.edge.mode">
9456            <td class="entry_name
9457             " rowspan="5">
9458              android.<wbr/>edge.<wbr/>mode
9459            </td>
9460            <td class="entry_type">
9461                <span class="entry_type_name entry_type_name_enum">byte</span>
9462
9463              <span class="entry_type_visibility"> [public]</span>
9464
9465
9466              <span class="entry_type_hwlevel">[full] </span>
9467
9468
9469
9470                <ul class="entry_type_enum">
9471                  <li>
9472                    <span class="entry_type_enum_name">OFF</span>
9473                    <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9474                  </li>
9475                  <li>
9476                    <span class="entry_type_enum_name">FAST</span>
9477                    <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9478relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9479slow down frame rate relative to sensor.<wbr/></p></span>
9480                  </li>
9481                  <li>
9482                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
9483                    <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>
9484                  </li>
9485                  <li>
9486                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
9487                    <span class="entry_type_enum_optional">[optional]</span>
9488                    <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/>
9489based 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>) or below have
9490edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement
9491applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that
9492frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it
9493is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9494<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9495with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9496high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9497produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
9498high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9499preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9500buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9501reasonable preview quality.<wbr/></p>
9502<p>This mode is guaranteed to be supported by devices that support either the
9503YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9504(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9505be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9506                  </li>
9507                </ul>
9508
9509            </td> <!-- entry_type -->
9510
9511            <td class="entry_description">
9512              <p>Operation mode for edge
9513enhancement.<wbr/></p>
9514            </td>
9515
9516            <td class="entry_units">
9517            </td>
9518
9519            <td class="entry_range">
9520              <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9521            </td>
9522
9523            <td class="entry_tags">
9524              <ul class="entry_tags">
9525                  <li><a href="#tag_V1">V1</a></li>
9526                  <li><a href="#tag_REPROC">REPROC</a></li>
9527              </ul>
9528            </td>
9529
9530          </tr>
9531          <tr class="entries_header">
9532            <th class="th_details" colspan="5">Details</th>
9533          </tr>
9534          <tr class="entry_cont">
9535            <td class="entry_details" colspan="5">
9536              <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9537no enhancement will be applied by the camera device.<wbr/></p>
9538<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9539will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9540camera device will use the highest-quality enhancement algorithms,<wbr/>
9541even if it slows down capture rate.<wbr/> FAST means the camera device will
9542not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9543edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9544amount of enhancement applied.<wbr/></p>
9545<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9546buffer of high-resolution images during preview and reprocess image(s) from that buffer
9547into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9548edge enhancement to low-resolution streams (below maximum recording resolution) to
9549maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9550since those will be reprocessed later if necessary.<wbr/></p>
9551<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9552device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9553The camera device may adjust its internal edge enhancement parameters for best
9554image 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>
9555            </td>
9556          </tr>
9557
9558          <tr class="entries_header">
9559            <th class="th_details" colspan="5">HAL Implementation Details</th>
9560          </tr>
9561          <tr class="entry_cont">
9562            <td class="entry_details" colspan="5">
9563              <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
9564adjust the internal edge enhancement reduction parameters appropriately to get the best
9565quality images.<wbr/></p>
9566            </td>
9567          </tr>
9568
9569          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9570           <!-- end of entry -->
9571
9572
9573
9574      <!-- end of kind -->
9575      </tbody>
9576
9577  <!-- end of section -->
9578  <tr><td colspan="6" id="section_flash" class="section">flash</td></tr>
9579
9580
9581      <tr><td colspan="6" class="kind">controls</td></tr>
9582
9583      <thead class="entries_header">
9584        <tr>
9585          <th class="th_name">Property Name</th>
9586          <th class="th_type">Type</th>
9587          <th class="th_description">Description</th>
9588          <th class="th_units">Units</th>
9589          <th class="th_range">Range</th>
9590          <th class="th_tags">Tags</th>
9591        </tr>
9592      </thead>
9593
9594      <tbody>
9595
9596
9597
9598
9599
9600
9601
9602
9603
9604
9605          <tr class="entry" id="controls_android.flash.firingPower">
9606            <td class="entry_name
9607             " rowspan="3">
9608              android.<wbr/>flash.<wbr/>firing<wbr/>Power
9609            </td>
9610            <td class="entry_type">
9611                <span class="entry_type_name">byte</span>
9612
9613              <span class="entry_type_visibility"> [system]</span>
9614
9615
9616
9617
9618
9619
9620            </td> <!-- entry_type -->
9621
9622            <td class="entry_description">
9623              <p>Power for flash firing/<wbr/>torch</p>
9624            </td>
9625
9626            <td class="entry_units">
9627              10 is max power; 0 is no flash.<wbr/> Linear
9628            </td>
9629
9630            <td class="entry_range">
9631              <p>0 - 10</p>
9632            </td>
9633
9634            <td class="entry_tags">
9635              <ul class="entry_tags">
9636                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9637              </ul>
9638            </td>
9639
9640          </tr>
9641          <tr class="entries_header">
9642            <th class="th_details" colspan="5">Details</th>
9643          </tr>
9644          <tr class="entry_cont">
9645            <td class="entry_details" colspan="5">
9646              <p>Power for snapshot may use a different scale than
9647for torch mode.<wbr/> Only one entry for torch mode will be
9648used</p>
9649            </td>
9650          </tr>
9651
9652
9653          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9654           <!-- end of entry -->
9655
9656
9657          <tr class="entry" id="controls_android.flash.firingTime">
9658            <td class="entry_name
9659             " rowspan="3">
9660              android.<wbr/>flash.<wbr/>firing<wbr/>Time
9661            </td>
9662            <td class="entry_type">
9663                <span class="entry_type_name">int64</span>
9664
9665              <span class="entry_type_visibility"> [system]</span>
9666
9667
9668
9669
9670
9671
9672            </td> <!-- entry_type -->
9673
9674            <td class="entry_description">
9675              <p>Firing time of flash relative to start of
9676exposure</p>
9677            </td>
9678
9679            <td class="entry_units">
9680              nanoseconds
9681            </td>
9682
9683            <td class="entry_range">
9684              <p>0-(exposure time-flash duration)</p>
9685            </td>
9686
9687            <td class="entry_tags">
9688              <ul class="entry_tags">
9689                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9690              </ul>
9691            </td>
9692
9693          </tr>
9694          <tr class="entries_header">
9695            <th class="th_details" colspan="5">Details</th>
9696          </tr>
9697          <tr class="entry_cont">
9698            <td class="entry_details" colspan="5">
9699              <p>Clamped to (0,<wbr/> exposure time - flash
9700duration).<wbr/></p>
9701            </td>
9702          </tr>
9703
9704
9705          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9706           <!-- end of entry -->
9707
9708
9709          <tr class="entry" id="controls_android.flash.mode">
9710            <td class="entry_name
9711             " rowspan="3">
9712              android.<wbr/>flash.<wbr/>mode
9713            </td>
9714            <td class="entry_type">
9715                <span class="entry_type_name entry_type_name_enum">byte</span>
9716
9717              <span class="entry_type_visibility"> [public]</span>
9718
9719
9720              <span class="entry_type_hwlevel">[legacy] </span>
9721
9722
9723
9724                <ul class="entry_type_enum">
9725                  <li>
9726                    <span class="entry_type_enum_name">OFF</span>
9727                    <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
9728                  </li>
9729                  <li>
9730                    <span class="entry_type_enum_name">SINGLE</span>
9731                    <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
9732for this capture.<wbr/></p></span>
9733                  </li>
9734                  <li>
9735                    <span class="entry_type_enum_name">TORCH</span>
9736                    <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
9737                  </li>
9738                </ul>
9739
9740            </td> <!-- entry_type -->
9741
9742            <td class="entry_description">
9743              <p>The desired mode for for the camera device's flash control.<wbr/></p>
9744            </td>
9745
9746            <td class="entry_units">
9747            </td>
9748
9749            <td class="entry_range">
9750            </td>
9751
9752            <td class="entry_tags">
9753              <ul class="entry_tags">
9754                  <li><a href="#tag_BC">BC</a></li>
9755              </ul>
9756            </td>
9757
9758          </tr>
9759          <tr class="entries_header">
9760            <th class="th_details" colspan="5">Details</th>
9761          </tr>
9762          <tr class="entry_cont">
9763            <td class="entry_details" colspan="5">
9764              <p>This control is only effective when flash unit is available
9765(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
9766<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/>
9767Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
9768ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
9769<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
9770<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
9771device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
9772control should be used along with auto-exposure (AE) precapture metering sequence
9773(<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>
9774<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
9775for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
9776<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>
9777            </td>
9778          </tr>
9779
9780
9781          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9782           <!-- end of entry -->
9783
9784
9785
9786      <!-- end of kind -->
9787      </tbody>
9788      <tr><td colspan="6" class="kind">static</td></tr>
9789
9790      <thead class="entries_header">
9791        <tr>
9792          <th class="th_name">Property Name</th>
9793          <th class="th_type">Type</th>
9794          <th class="th_description">Description</th>
9795          <th class="th_units">Units</th>
9796          <th class="th_range">Range</th>
9797          <th class="th_tags">Tags</th>
9798        </tr>
9799      </thead>
9800
9801      <tbody>
9802
9803
9804
9805
9806
9807
9808
9809
9810
9811
9812
9813
9814          <tr class="entry" id="static_android.flash.info.available">
9815            <td class="entry_name
9816             " rowspan="3">
9817              android.<wbr/>flash.<wbr/>info.<wbr/>available
9818            </td>
9819            <td class="entry_type">
9820                <span class="entry_type_name entry_type_name_enum">byte</span>
9821
9822              <span class="entry_type_visibility"> [public as boolean]</span>
9823
9824
9825              <span class="entry_type_hwlevel">[legacy] </span>
9826
9827
9828
9829                <ul class="entry_type_enum">
9830                  <li>
9831                    <span class="entry_type_enum_name">FALSE</span>
9832                  </li>
9833                  <li>
9834                    <span class="entry_type_enum_name">TRUE</span>
9835                  </li>
9836                </ul>
9837
9838            </td> <!-- entry_type -->
9839
9840            <td class="entry_description">
9841              <p>Whether this camera device has a
9842flash unit.<wbr/></p>
9843            </td>
9844
9845            <td class="entry_units">
9846            </td>
9847
9848            <td class="entry_range">
9849            </td>
9850
9851            <td class="entry_tags">
9852              <ul class="entry_tags">
9853                  <li><a href="#tag_BC">BC</a></li>
9854              </ul>
9855            </td>
9856
9857          </tr>
9858          <tr class="entries_header">
9859            <th class="th_details" colspan="5">Details</th>
9860          </tr>
9861          <tr class="entry_cont">
9862            <td class="entry_details" colspan="5">
9863              <p>Will be <code>false</code> if no flash is available.<wbr/></p>
9864<p>If there is no flash unit,<wbr/> none of the flash controls do
9865anything.<wbr/></p>
9866            </td>
9867          </tr>
9868
9869
9870          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9871           <!-- end of entry -->
9872
9873
9874          <tr class="entry" id="static_android.flash.info.chargeDuration">
9875            <td class="entry_name
9876             " rowspan="3">
9877              android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
9878            </td>
9879            <td class="entry_type">
9880                <span class="entry_type_name">int64</span>
9881
9882              <span class="entry_type_visibility"> [system]</span>
9883
9884
9885
9886
9887
9888
9889            </td> <!-- entry_type -->
9890
9891            <td class="entry_description">
9892              <p>Time taken before flash can fire
9893again</p>
9894            </td>
9895
9896            <td class="entry_units">
9897              nanoseconds
9898            </td>
9899
9900            <td class="entry_range">
9901              <p>0-1e9</p>
9902            </td>
9903
9904            <td class="entry_tags">
9905              <ul class="entry_tags">
9906                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9907              </ul>
9908            </td>
9909
9910          </tr>
9911          <tr class="entries_header">
9912            <th class="th_details" colspan="5">Details</th>
9913          </tr>
9914          <tr class="entry_cont">
9915            <td class="entry_details" colspan="5">
9916              <p>1 second too long/<wbr/>too short for recharge? Should
9917this be power-dependent?</p>
9918            </td>
9919          </tr>
9920
9921
9922          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9923           <!-- end of entry -->
9924
9925
9926
9927
9928
9929          <tr class="entry" id="static_android.flash.colorTemperature">
9930            <td class="entry_name
9931             " rowspan="1">
9932              android.<wbr/>flash.<wbr/>color<wbr/>Temperature
9933            </td>
9934            <td class="entry_type">
9935                <span class="entry_type_name">byte</span>
9936
9937              <span class="entry_type_visibility"> [system]</span>
9938
9939
9940
9941
9942
9943
9944            </td> <!-- entry_type -->
9945
9946            <td class="entry_description">
9947              <p>The x,<wbr/>y whitepoint of the
9948flash</p>
9949            </td>
9950
9951            <td class="entry_units">
9952              pair of floats
9953            </td>
9954
9955            <td class="entry_range">
9956              <p>0-1 for both</p>
9957            </td>
9958
9959            <td class="entry_tags">
9960              <ul class="entry_tags">
9961                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9962              </ul>
9963            </td>
9964
9965          </tr>
9966
9967
9968          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9969           <!-- end of entry -->
9970
9971
9972          <tr class="entry" id="static_android.flash.maxEnergy">
9973            <td class="entry_name
9974             " rowspan="1">
9975              android.<wbr/>flash.<wbr/>max<wbr/>Energy
9976            </td>
9977            <td class="entry_type">
9978                <span class="entry_type_name">byte</span>
9979
9980              <span class="entry_type_visibility"> [system]</span>
9981
9982
9983
9984
9985
9986
9987            </td> <!-- entry_type -->
9988
9989            <td class="entry_description">
9990              <p>Max energy output of the flash for a full
9991power single flash</p>
9992            </td>
9993
9994            <td class="entry_units">
9995              lumen-seconds
9996            </td>
9997
9998            <td class="entry_range">
9999              <p>&gt;= 0</p>
10000            </td>
10001
10002            <td class="entry_tags">
10003              <ul class="entry_tags">
10004                  <li><a href="#tag_FUTURE">FUTURE</a></li>
10005              </ul>
10006            </td>
10007
10008          </tr>
10009
10010
10011          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10012           <!-- end of entry -->
10013
10014
10015
10016      <!-- end of kind -->
10017      </tbody>
10018      <tr><td colspan="6" class="kind">dynamic</td></tr>
10019
10020      <thead class="entries_header">
10021        <tr>
10022          <th class="th_name">Property Name</th>
10023          <th class="th_type">Type</th>
10024          <th class="th_description">Description</th>
10025          <th class="th_units">Units</th>
10026          <th class="th_range">Range</th>
10027          <th class="th_tags">Tags</th>
10028        </tr>
10029      </thead>
10030
10031      <tbody>
10032
10033
10034
10035
10036
10037
10038
10039
10040
10041
10042          <tr class="entry" id="dynamic_android.flash.firingPower">
10043            <td class="entry_name
10044             " rowspan="3">
10045              android.<wbr/>flash.<wbr/>firing<wbr/>Power
10046            </td>
10047            <td class="entry_type">
10048                <span class="entry_type_name">byte</span>
10049
10050              <span class="entry_type_visibility"> [system]</span>
10051
10052
10053
10054
10055
10056
10057            </td> <!-- entry_type -->
10058
10059            <td class="entry_description">
10060              <p>Power for flash firing/<wbr/>torch</p>
10061            </td>
10062
10063            <td class="entry_units">
10064              10 is max power; 0 is no flash.<wbr/> Linear
10065            </td>
10066
10067            <td class="entry_range">
10068              <p>0 - 10</p>
10069            </td>
10070
10071            <td class="entry_tags">
10072              <ul class="entry_tags">
10073                  <li><a href="#tag_FUTURE">FUTURE</a></li>
10074              </ul>
10075            </td>
10076
10077          </tr>
10078          <tr class="entries_header">
10079            <th class="th_details" colspan="5">Details</th>
10080          </tr>
10081          <tr class="entry_cont">
10082            <td class="entry_details" colspan="5">
10083              <p>Power for snapshot may use a different scale than
10084for torch mode.<wbr/> Only one entry for torch mode will be
10085used</p>
10086            </td>
10087          </tr>
10088
10089
10090          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10091           <!-- end of entry -->
10092
10093
10094          <tr class="entry" id="dynamic_android.flash.firingTime">
10095            <td class="entry_name
10096             " rowspan="3">
10097              android.<wbr/>flash.<wbr/>firing<wbr/>Time
10098            </td>
10099            <td class="entry_type">
10100                <span class="entry_type_name">int64</span>
10101
10102              <span class="entry_type_visibility"> [system]</span>
10103
10104
10105
10106
10107
10108
10109            </td> <!-- entry_type -->
10110
10111            <td class="entry_description">
10112              <p>Firing time of flash relative to start of
10113exposure</p>
10114            </td>
10115
10116            <td class="entry_units">
10117              nanoseconds
10118            </td>
10119
10120            <td class="entry_range">
10121              <p>0-(exposure time-flash duration)</p>
10122            </td>
10123
10124            <td class="entry_tags">
10125              <ul class="entry_tags">
10126                  <li><a href="#tag_FUTURE">FUTURE</a></li>
10127              </ul>
10128            </td>
10129
10130          </tr>
10131          <tr class="entries_header">
10132            <th class="th_details" colspan="5">Details</th>
10133          </tr>
10134          <tr class="entry_cont">
10135            <td class="entry_details" colspan="5">
10136              <p>Clamped to (0,<wbr/> exposure time - flash
10137duration).<wbr/></p>
10138            </td>
10139          </tr>
10140
10141
10142          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10143           <!-- end of entry -->
10144
10145
10146          <tr class="entry" id="dynamic_android.flash.mode">
10147            <td class="entry_name
10148             " rowspan="3">
10149              android.<wbr/>flash.<wbr/>mode
10150            </td>
10151            <td class="entry_type">
10152                <span class="entry_type_name entry_type_name_enum">byte</span>
10153
10154              <span class="entry_type_visibility"> [public]</span>
10155
10156
10157              <span class="entry_type_hwlevel">[legacy] </span>
10158
10159
10160
10161                <ul class="entry_type_enum">
10162                  <li>
10163                    <span class="entry_type_enum_name">OFF</span>
10164                    <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
10165                  </li>
10166                  <li>
10167                    <span class="entry_type_enum_name">SINGLE</span>
10168                    <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
10169for this capture.<wbr/></p></span>
10170                  </li>
10171                  <li>
10172                    <span class="entry_type_enum_name">TORCH</span>
10173                    <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
10174                  </li>
10175                </ul>
10176
10177            </td> <!-- entry_type -->
10178
10179            <td class="entry_description">
10180              <p>The desired mode for for the camera device's flash control.<wbr/></p>
10181            </td>
10182
10183            <td class="entry_units">
10184            </td>
10185
10186            <td class="entry_range">
10187            </td>
10188
10189            <td class="entry_tags">
10190              <ul class="entry_tags">
10191                  <li><a href="#tag_BC">BC</a></li>
10192              </ul>
10193            </td>
10194
10195          </tr>
10196          <tr class="entries_header">
10197            <th class="th_details" colspan="5">Details</th>
10198          </tr>
10199          <tr class="entry_cont">
10200            <td class="entry_details" colspan="5">
10201              <p>This control is only effective when flash unit is available
10202(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10203<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/>
10204Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10205ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10206<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10207<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10208device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10209control should be used along with auto-exposure (AE) precapture metering sequence
10210(<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>
10211<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10212for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10213<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>
10214            </td>
10215          </tr>
10216
10217
10218          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10219           <!-- end of entry -->
10220
10221
10222          <tr class="entry" id="dynamic_android.flash.state">
10223            <td class="entry_name
10224             " rowspan="3">
10225              android.<wbr/>flash.<wbr/>state
10226            </td>
10227            <td class="entry_type">
10228                <span class="entry_type_name entry_type_name_enum">byte</span>
10229
10230              <span class="entry_type_visibility"> [public]</span>
10231
10232
10233              <span class="entry_type_hwlevel">[limited] </span>
10234
10235
10236
10237                <ul class="entry_type_enum">
10238                  <li>
10239                    <span class="entry_type_enum_name">UNAVAILABLE</span>
10240                    <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
10241                  </li>
10242                  <li>
10243                    <span class="entry_type_enum_name">CHARGING</span>
10244                    <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
10245                  </li>
10246                  <li>
10247                    <span class="entry_type_enum_name">READY</span>
10248                    <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
10249                  </li>
10250                  <li>
10251                    <span class="entry_type_enum_name">FIRED</span>
10252                    <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
10253                  </li>
10254                  <li>
10255                    <span class="entry_type_enum_name">PARTIAL</span>
10256                    <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
10257<p>This is usually due to the next or previous frame having
10258the flash fire,<wbr/> and the flash spilling into this capture
10259due to hardware limitations.<wbr/></p></span>
10260                  </li>
10261                </ul>
10262
10263            </td> <!-- entry_type -->
10264
10265            <td class="entry_description">
10266              <p>Current state of the flash
10267unit.<wbr/></p>
10268            </td>
10269
10270            <td class="entry_units">
10271            </td>
10272
10273            <td class="entry_range">
10274            </td>
10275
10276            <td class="entry_tags">
10277            </td>
10278
10279          </tr>
10280          <tr class="entries_header">
10281            <th class="th_details" colspan="5">Details</th>
10282          </tr>
10283          <tr class="entry_cont">
10284            <td class="entry_details" colspan="5">
10285              <p>When the camera device doesn't have flash unit
10286(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/>
10287Other states indicate the current flash status.<wbr/></p>
10288<p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p>
10289<ul>
10290<li>Flash-less cameras always return UNAVAILABLE.<wbr/></li>
10291<li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH
10292   will always return FIRED.<wbr/></li>
10293<li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH
10294   will always return FIRED.<wbr/></li>
10295</ul>
10296<p>In all other conditions the state will not be available on
10297LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p>
10298            </td>
10299          </tr>
10300
10301
10302          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10303           <!-- end of entry -->
10304
10305
10306
10307      <!-- end of kind -->
10308      </tbody>
10309
10310  <!-- end of section -->
10311  <tr><td colspan="6" id="section_hotPixel" class="section">hotPixel</td></tr>
10312
10313
10314      <tr><td colspan="6" class="kind">controls</td></tr>
10315
10316      <thead class="entries_header">
10317        <tr>
10318          <th class="th_name">Property Name</th>
10319          <th class="th_type">Type</th>
10320          <th class="th_description">Description</th>
10321          <th class="th_units">Units</th>
10322          <th class="th_range">Range</th>
10323          <th class="th_tags">Tags</th>
10324        </tr>
10325      </thead>
10326
10327      <tbody>
10328
10329
10330
10331
10332
10333
10334
10335
10336
10337
10338          <tr class="entry" id="controls_android.hotPixel.mode">
10339            <td class="entry_name
10340             " rowspan="3">
10341              android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
10342            </td>
10343            <td class="entry_type">
10344                <span class="entry_type_name entry_type_name_enum">byte</span>
10345
10346              <span class="entry_type_visibility"> [public]</span>
10347
10348
10349
10350
10351
10352                <ul class="entry_type_enum">
10353                  <li>
10354                    <span class="entry_type_enum_name">OFF</span>
10355                    <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
10356<p>The frame rate must not be reduced relative to sensor raw output
10357for this option.<wbr/></p>
10358<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>
10359                  </li>
10360                  <li>
10361                    <span class="entry_type_enum_name">FAST</span>
10362                    <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
10363rate relative to sensor raw output.<wbr/></p>
10364<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>
10365                  </li>
10366                  <li>
10367                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
10368                    <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
10369of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
10370<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>
10371                  </li>
10372                </ul>
10373
10374            </td> <!-- entry_type -->
10375
10376            <td class="entry_description">
10377              <p>Operational mode for hot pixel correction.<wbr/></p>
10378            </td>
10379
10380            <td class="entry_units">
10381            </td>
10382
10383            <td class="entry_range">
10384              <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
10385            </td>
10386
10387            <td class="entry_tags">
10388              <ul class="entry_tags">
10389                  <li><a href="#tag_V1">V1</a></li>
10390                  <li><a href="#tag_RAW">RAW</a></li>
10391              </ul>
10392            </td>
10393
10394          </tr>
10395          <tr class="entries_header">
10396            <th class="th_details" colspan="5">Details</th>
10397          </tr>
10398          <tr class="entry_cont">
10399            <td class="entry_details" colspan="5">
10400              <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
10401that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
10402are stuck at an arbitrary value or are oversensitive).<wbr/></p>
10403            </td>
10404          </tr>
10405
10406
10407          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10408           <!-- end of entry -->
10409
10410
10411
10412      <!-- end of kind -->
10413      </tbody>
10414      <tr><td colspan="6" class="kind">static</td></tr>
10415
10416      <thead class="entries_header">
10417        <tr>
10418          <th class="th_name">Property Name</th>
10419          <th class="th_type">Type</th>
10420          <th class="th_description">Description</th>
10421          <th class="th_units">Units</th>
10422          <th class="th_range">Range</th>
10423          <th class="th_tags">Tags</th>
10424        </tr>
10425      </thead>
10426
10427      <tbody>
10428
10429
10430
10431
10432
10433
10434
10435
10436
10437
10438          <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
10439            <td class="entry_name
10440             " rowspan="5">
10441              android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
10442            </td>
10443            <td class="entry_type">
10444                <span class="entry_type_name">byte</span>
10445                <span class="entry_type_container">x</span>
10446
10447                <span class="entry_type_array">
10448                  n
10449                </span>
10450              <span class="entry_type_visibility"> [public as enumList]</span>
10451
10452
10453
10454
10455                <div class="entry_type_notes">list of enums</div>
10456
10457
10458            </td> <!-- entry_type -->
10459
10460            <td class="entry_description">
10461              <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
10462camera device.<wbr/></p>
10463            </td>
10464
10465            <td class="entry_units">
10466            </td>
10467
10468            <td class="entry_range">
10469              <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
10470            </td>
10471
10472            <td class="entry_tags">
10473              <ul class="entry_tags">
10474                  <li><a href="#tag_V1">V1</a></li>
10475                  <li><a href="#tag_RAW">RAW</a></li>
10476              </ul>
10477            </td>
10478
10479          </tr>
10480          <tr class="entries_header">
10481            <th class="th_details" colspan="5">Details</th>
10482          </tr>
10483          <tr class="entry_cont">
10484            <td class="entry_details" colspan="5">
10485              <p>FULL mode camera devices will always support FAST.<wbr/></p>
10486            </td>
10487          </tr>
10488
10489          <tr class="entries_header">
10490            <th class="th_details" colspan="5">HAL Implementation Details</th>
10491          </tr>
10492          <tr class="entry_cont">
10493            <td class="entry_details" colspan="5">
10494              <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
10495pixels than actual pixels on the camera sensor.<wbr/>
10496HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available
10497on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
10498That is,<wbr/> if the highest quality implementation on the camera device does not slow down
10499capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
10500            </td>
10501          </tr>
10502
10503          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10504           <!-- end of entry -->
10505
10506
10507
10508      <!-- end of kind -->
10509      </tbody>
10510      <tr><td colspan="6" class="kind">dynamic</td></tr>
10511
10512      <thead class="entries_header">
10513        <tr>
10514          <th class="th_name">Property Name</th>
10515          <th class="th_type">Type</th>
10516          <th class="th_description">Description</th>
10517          <th class="th_units">Units</th>
10518          <th class="th_range">Range</th>
10519          <th class="th_tags">Tags</th>
10520        </tr>
10521      </thead>
10522
10523      <tbody>
10524
10525
10526
10527
10528
10529
10530
10531
10532
10533
10534          <tr class="entry" id="dynamic_android.hotPixel.mode">
10535            <td class="entry_name
10536             " rowspan="3">
10537              android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
10538            </td>
10539            <td class="entry_type">
10540                <span class="entry_type_name entry_type_name_enum">byte</span>
10541
10542              <span class="entry_type_visibility"> [public]</span>
10543
10544
10545
10546
10547
10548                <ul class="entry_type_enum">
10549                  <li>
10550                    <span class="entry_type_enum_name">OFF</span>
10551                    <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
10552<p>The frame rate must not be reduced relative to sensor raw output
10553for this option.<wbr/></p>
10554<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>
10555                  </li>
10556                  <li>
10557                    <span class="entry_type_enum_name">FAST</span>
10558                    <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
10559rate relative to sensor raw output.<wbr/></p>
10560<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>
10561                  </li>
10562                  <li>
10563                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
10564                    <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
10565of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
10566<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>
10567                  </li>
10568                </ul>
10569
10570            </td> <!-- entry_type -->
10571
10572            <td class="entry_description">
10573              <p>Operational mode for hot pixel correction.<wbr/></p>
10574            </td>
10575
10576            <td class="entry_units">
10577            </td>
10578
10579            <td class="entry_range">
10580              <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
10581            </td>
10582
10583            <td class="entry_tags">
10584              <ul class="entry_tags">
10585                  <li><a href="#tag_V1">V1</a></li>
10586                  <li><a href="#tag_RAW">RAW</a></li>
10587              </ul>
10588            </td>
10589
10590          </tr>
10591          <tr class="entries_header">
10592            <th class="th_details" colspan="5">Details</th>
10593          </tr>
10594          <tr class="entry_cont">
10595            <td class="entry_details" colspan="5">
10596              <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
10597that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
10598are stuck at an arbitrary value or are oversensitive).<wbr/></p>
10599            </td>
10600          </tr>
10601
10602
10603          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10604           <!-- end of entry -->
10605
10606
10607
10608      <!-- end of kind -->
10609      </tbody>
10610
10611  <!-- end of section -->
10612  <tr><td colspan="6" id="section_jpeg" class="section">jpeg</td></tr>
10613
10614
10615      <tr><td colspan="6" class="kind">controls</td></tr>
10616
10617      <thead class="entries_header">
10618        <tr>
10619          <th class="th_name">Property Name</th>
10620          <th class="th_type">Type</th>
10621          <th class="th_description">Description</th>
10622          <th class="th_units">Units</th>
10623          <th class="th_range">Range</th>
10624          <th class="th_tags">Tags</th>
10625        </tr>
10626      </thead>
10627
10628      <tbody>
10629
10630
10631
10632
10633
10634
10635
10636
10637
10638
10639          <tr class="entry" id="controls_android.jpeg.gpsLocation">
10640            <td class="entry_name
10641             " rowspan="3">
10642              android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
10643            </td>
10644            <td class="entry_type">
10645                <span class="entry_type_name">byte</span>
10646
10647              <span class="entry_type_visibility"> [java_public as location]</span>
10648
10649              <span class="entry_type_synthetic">[synthetic] </span>
10650
10651              <span class="entry_type_hwlevel">[legacy] </span>
10652
10653
10654
10655
10656            </td> <!-- entry_type -->
10657
10658            <td class="entry_description">
10659              <p>A location object to use when generating image GPS metadata.<wbr/></p>
10660            </td>
10661
10662            <td class="entry_units">
10663            </td>
10664
10665            <td class="entry_range">
10666            </td>
10667
10668            <td class="entry_tags">
10669            </td>
10670
10671          </tr>
10672          <tr class="entries_header">
10673            <th class="th_details" colspan="5">Details</th>
10674          </tr>
10675          <tr class="entry_cont">
10676            <td class="entry_details" colspan="5">
10677              <p>Setting a location object in a request will include the GPS coordinates of the location
10678into any JPEG images captured based on the request.<wbr/> These coordinates can then be
10679viewed by anyone who receives the JPEG image.<wbr/></p>
10680            </td>
10681          </tr>
10682
10683
10684          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10685           <!-- end of entry -->
10686
10687
10688          <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
10689            <td class="entry_name
10690             " rowspan="1">
10691              android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
10692            </td>
10693            <td class="entry_type">
10694                <span class="entry_type_name">double</span>
10695                <span class="entry_type_container">x</span>
10696
10697                <span class="entry_type_array">
10698                  3
10699                </span>
10700              <span class="entry_type_visibility"> [ndk_public]</span>
10701
10702
10703              <span class="entry_type_hwlevel">[legacy] </span>
10704
10705
10706                <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
10707
10708
10709            </td> <!-- entry_type -->
10710
10711            <td class="entry_description">
10712              <p>GPS coordinates to include in output JPEG
10713EXIF.<wbr/></p>
10714            </td>
10715
10716            <td class="entry_units">
10717            </td>
10718
10719            <td class="entry_range">
10720              <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
10721            </td>
10722
10723            <td class="entry_tags">
10724              <ul class="entry_tags">
10725                  <li><a href="#tag_BC">BC</a></li>
10726              </ul>
10727            </td>
10728
10729          </tr>
10730
10731
10732          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10733           <!-- end of entry -->
10734
10735
10736          <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
10737            <td class="entry_name
10738             " rowspan="1">
10739              android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
10740            </td>
10741            <td class="entry_type">
10742                <span class="entry_type_name">byte</span>
10743
10744              <span class="entry_type_visibility"> [ndk_public as string]</span>
10745
10746
10747              <span class="entry_type_hwlevel">[legacy] </span>
10748
10749
10750
10751
10752            </td> <!-- entry_type -->
10753
10754            <td class="entry_description">
10755              <p>32 characters describing GPS algorithm to
10756include in EXIF.<wbr/></p>
10757            </td>
10758
10759            <td class="entry_units">
10760              UTF-8 null-terminated string
10761            </td>
10762
10763            <td class="entry_range">
10764            </td>
10765
10766            <td class="entry_tags">
10767              <ul class="entry_tags">
10768                  <li><a href="#tag_BC">BC</a></li>
10769              </ul>
10770            </td>
10771
10772          </tr>
10773
10774
10775          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10776           <!-- end of entry -->
10777
10778
10779          <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
10780            <td class="entry_name
10781             " rowspan="1">
10782              android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
10783            </td>
10784            <td class="entry_type">
10785                <span class="entry_type_name">int64</span>
10786
10787              <span class="entry_type_visibility"> [ndk_public]</span>
10788
10789
10790              <span class="entry_type_hwlevel">[legacy] </span>
10791
10792
10793
10794
10795            </td> <!-- entry_type -->
10796
10797            <td class="entry_description">
10798              <p>Time GPS fix was made to include in
10799EXIF.<wbr/></p>
10800            </td>
10801
10802            <td class="entry_units">
10803              UTC in seconds since January 1,<wbr/> 1970
10804            </td>
10805
10806            <td class="entry_range">
10807            </td>
10808
10809            <td class="entry_tags">
10810              <ul class="entry_tags">
10811                  <li><a href="#tag_BC">BC</a></li>
10812              </ul>
10813            </td>
10814
10815          </tr>
10816
10817
10818          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10819           <!-- end of entry -->
10820
10821
10822          <tr class="entry" id="controls_android.jpeg.orientation">
10823            <td class="entry_name
10824             " rowspan="3">
10825              android.<wbr/>jpeg.<wbr/>orientation
10826            </td>
10827            <td class="entry_type">
10828                <span class="entry_type_name">int32</span>
10829
10830              <span class="entry_type_visibility"> [public]</span>
10831
10832
10833              <span class="entry_type_hwlevel">[legacy] </span>
10834
10835
10836
10837
10838            </td> <!-- entry_type -->
10839
10840            <td class="entry_description">
10841              <p>The orientation for a JPEG image.<wbr/></p>
10842            </td>
10843
10844            <td class="entry_units">
10845              Degrees in multiples of 90
10846            </td>
10847
10848            <td class="entry_range">
10849              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
10850            </td>
10851
10852            <td class="entry_tags">
10853              <ul class="entry_tags">
10854                  <li><a href="#tag_BC">BC</a></li>
10855              </ul>
10856            </td>
10857
10858          </tr>
10859          <tr class="entries_header">
10860            <th class="th_details" colspan="5">Details</th>
10861          </tr>
10862          <tr class="entry_cont">
10863            <td class="entry_details" colspan="5">
10864              <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
10865to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
10866upright.<wbr/></p>
10867<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
10868rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
10869the thumbnail data will also be rotated.<wbr/></p>
10870<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
10871by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
10872<p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
10873sample code may be used:</p>
10874<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
10875    if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
10876    int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
10877
10878    //<wbr/> Round device orientation to a multiple of 90
10879    deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
10880
10881    //<wbr/> Reverse device orientation for front-facing cameras
10882    boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
10883    if (facingFront) deviceOrientation = -deviceOrientation;
10884
10885    //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
10886    //<wbr/> the image upright relative to the device orientation
10887    int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
10888
10889    return jpegOrientation;
10890}
10891</code></pre>
10892            </td>
10893          </tr>
10894
10895
10896          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10897           <!-- end of entry -->
10898
10899
10900          <tr class="entry" id="controls_android.jpeg.quality">
10901            <td class="entry_name
10902             " rowspan="3">
10903              android.<wbr/>jpeg.<wbr/>quality
10904            </td>
10905            <td class="entry_type">
10906                <span class="entry_type_name">byte</span>
10907
10908              <span class="entry_type_visibility"> [public]</span>
10909
10910
10911              <span class="entry_type_hwlevel">[legacy] </span>
10912
10913
10914
10915
10916            </td> <!-- entry_type -->
10917
10918            <td class="entry_description">
10919              <p>Compression quality of the final JPEG
10920image.<wbr/></p>
10921            </td>
10922
10923            <td class="entry_units">
10924            </td>
10925
10926            <td class="entry_range">
10927              <p>1-100; larger is higher quality</p>
10928            </td>
10929
10930            <td class="entry_tags">
10931              <ul class="entry_tags">
10932                  <li><a href="#tag_BC">BC</a></li>
10933              </ul>
10934            </td>
10935
10936          </tr>
10937          <tr class="entries_header">
10938            <th class="th_details" colspan="5">Details</th>
10939          </tr>
10940          <tr class="entry_cont">
10941            <td class="entry_details" colspan="5">
10942              <p>85-95 is typical usage range.<wbr/></p>
10943            </td>
10944          </tr>
10945
10946
10947          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10948           <!-- end of entry -->
10949
10950
10951          <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
10952            <td class="entry_name
10953             " rowspan="1">
10954              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
10955            </td>
10956            <td class="entry_type">
10957                <span class="entry_type_name">byte</span>
10958
10959              <span class="entry_type_visibility"> [public]</span>
10960
10961
10962              <span class="entry_type_hwlevel">[legacy] </span>
10963
10964
10965
10966
10967            </td> <!-- entry_type -->
10968
10969            <td class="entry_description">
10970              <p>Compression quality of JPEG
10971thumbnail.<wbr/></p>
10972            </td>
10973
10974            <td class="entry_units">
10975            </td>
10976
10977            <td class="entry_range">
10978              <p>1-100; larger is higher quality</p>
10979            </td>
10980
10981            <td class="entry_tags">
10982              <ul class="entry_tags">
10983                  <li><a href="#tag_BC">BC</a></li>
10984              </ul>
10985            </td>
10986
10987          </tr>
10988
10989
10990          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10991           <!-- end of entry -->
10992
10993
10994          <tr class="entry" id="controls_android.jpeg.thumbnailSize">
10995            <td class="entry_name
10996             " rowspan="5">
10997              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
10998            </td>
10999            <td class="entry_type">
11000                <span class="entry_type_name">int32</span>
11001                <span class="entry_type_container">x</span>
11002
11003                <span class="entry_type_array">
11004                  2
11005                </span>
11006              <span class="entry_type_visibility"> [public as size]</span>
11007
11008
11009              <span class="entry_type_hwlevel">[legacy] </span>
11010
11011
11012
11013
11014            </td> <!-- entry_type -->
11015
11016            <td class="entry_description">
11017              <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
11018            </td>
11019
11020            <td class="entry_units">
11021            </td>
11022
11023            <td class="entry_range">
11024              <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
11025            </td>
11026
11027            <td class="entry_tags">
11028              <ul class="entry_tags">
11029                  <li><a href="#tag_BC">BC</a></li>
11030              </ul>
11031            </td>
11032
11033          </tr>
11034          <tr class="entries_header">
11035            <th class="th_details" colspan="5">Details</th>
11036          </tr>
11037          <tr class="entry_cont">
11038            <td class="entry_details" colspan="5">
11039              <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
11040but the captured JPEG will still be a valid image.<wbr/></p>
11041<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
11042should have the same aspect ratio as the main JPEG output.<wbr/></p>
11043<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
11044ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
11045For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
1104616:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
11047generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
11048Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
11049<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
11050the camera device will handle thumbnail rotation in one of the following ways:</p>
11051<ul>
11052<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
11053  and keep jpeg and thumbnail image data unrotated.<wbr/></li>
11054<li>Rotate the jpeg and thumbnail image data and not set
11055  <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
11056  case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
11057  capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
11058  orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
11059  size.<wbr/></li>
11060</ul>
11061            </td>
11062          </tr>
11063
11064          <tr class="entries_header">
11065            <th class="th_details" colspan="5">HAL Implementation Details</th>
11066          </tr>
11067          <tr class="entry_cont">
11068            <td class="entry_details" colspan="5">
11069              <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
11070The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
11071The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
11072thumbnail image cropping.<wbr/></p>
11073            </td>
11074          </tr>
11075
11076          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11077           <!-- end of entry -->
11078
11079
11080
11081      <!-- end of kind -->
11082      </tbody>
11083      <tr><td colspan="6" class="kind">static</td></tr>
11084
11085      <thead class="entries_header">
11086        <tr>
11087          <th class="th_name">Property Name</th>
11088          <th class="th_type">Type</th>
11089          <th class="th_description">Description</th>
11090          <th class="th_units">Units</th>
11091          <th class="th_range">Range</th>
11092          <th class="th_tags">Tags</th>
11093        </tr>
11094      </thead>
11095
11096      <tbody>
11097
11098
11099
11100
11101
11102
11103
11104
11105
11106
11107          <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
11108            <td class="entry_name
11109             " rowspan="3">
11110              android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
11111            </td>
11112            <td class="entry_type">
11113                <span class="entry_type_name">int32</span>
11114                <span class="entry_type_container">x</span>
11115
11116                <span class="entry_type_array">
11117                  2 x n
11118                </span>
11119              <span class="entry_type_visibility"> [public as size]</span>
11120
11121
11122              <span class="entry_type_hwlevel">[legacy] </span>
11123
11124
11125
11126
11127            </td> <!-- entry_type -->
11128
11129            <td class="entry_description">
11130              <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
11131camera device.<wbr/></p>
11132            </td>
11133
11134            <td class="entry_units">
11135            </td>
11136
11137            <td class="entry_range">
11138            </td>
11139
11140            <td class="entry_tags">
11141              <ul class="entry_tags">
11142                  <li><a href="#tag_BC">BC</a></li>
11143              </ul>
11144            </td>
11145
11146          </tr>
11147          <tr class="entries_header">
11148            <th class="th_details" colspan="5">Details</th>
11149          </tr>
11150          <tr class="entry_cont">
11151            <td class="entry_details" colspan="5">
11152              <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
11153thumbnail should be generated.<wbr/></p>
11154<p>Below condiditions will be satisfied for this size list:</p>
11155<ul>
11156<li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
11157If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
11158<li>The aspect ratio of the largest thumbnail size will be same as the
11159aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
11160The largest size is defined as the size that has the largest pixel area
11161in a given size list.<wbr/></li>
11162<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
11163one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
11164and vice versa.<wbr/></li>
11165<li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
11166</ul>
11167            </td>
11168          </tr>
11169
11170
11171          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11172           <!-- end of entry -->
11173
11174
11175          <tr class="entry" id="static_android.jpeg.maxSize">
11176            <td class="entry_name
11177             " rowspan="3">
11178              android.<wbr/>jpeg.<wbr/>max<wbr/>Size
11179            </td>
11180            <td class="entry_type">
11181                <span class="entry_type_name">int32</span>
11182
11183              <span class="entry_type_visibility"> [system]</span>
11184
11185
11186
11187
11188
11189
11190            </td> <!-- entry_type -->
11191
11192            <td class="entry_description">
11193              <p>Maximum size in bytes for the compressed
11194JPEG buffer</p>
11195            </td>
11196
11197            <td class="entry_units">
11198            </td>
11199
11200            <td class="entry_range">
11201              <p>Must be large enough to fit any JPEG produced by
11202the camera</p>
11203            </td>
11204
11205            <td class="entry_tags">
11206            </td>
11207
11208          </tr>
11209          <tr class="entries_header">
11210            <th class="th_details" colspan="5">Details</th>
11211          </tr>
11212          <tr class="entry_cont">
11213            <td class="entry_details" colspan="5">
11214              <p>This is used for sizing the gralloc buffers for
11215JPEG</p>
11216            </td>
11217          </tr>
11218
11219
11220          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11221           <!-- end of entry -->
11222
11223
11224
11225      <!-- end of kind -->
11226      </tbody>
11227      <tr><td colspan="6" class="kind">dynamic</td></tr>
11228
11229      <thead class="entries_header">
11230        <tr>
11231          <th class="th_name">Property Name</th>
11232          <th class="th_type">Type</th>
11233          <th class="th_description">Description</th>
11234          <th class="th_units">Units</th>
11235          <th class="th_range">Range</th>
11236          <th class="th_tags">Tags</th>
11237        </tr>
11238      </thead>
11239
11240      <tbody>
11241
11242
11243
11244
11245
11246
11247
11248
11249
11250
11251          <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
11252            <td class="entry_name
11253             " rowspan="3">
11254              android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11255            </td>
11256            <td class="entry_type">
11257                <span class="entry_type_name">byte</span>
11258
11259              <span class="entry_type_visibility"> [java_public as location]</span>
11260
11261              <span class="entry_type_synthetic">[synthetic] </span>
11262
11263              <span class="entry_type_hwlevel">[legacy] </span>
11264
11265
11266
11267
11268            </td> <!-- entry_type -->
11269
11270            <td class="entry_description">
11271              <p>A location object to use when generating image GPS metadata.<wbr/></p>
11272            </td>
11273
11274            <td class="entry_units">
11275            </td>
11276
11277            <td class="entry_range">
11278            </td>
11279
11280            <td class="entry_tags">
11281            </td>
11282
11283          </tr>
11284          <tr class="entries_header">
11285            <th class="th_details" colspan="5">Details</th>
11286          </tr>
11287          <tr class="entry_cont">
11288            <td class="entry_details" colspan="5">
11289              <p>Setting a location object in a request will include the GPS coordinates of the location
11290into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11291viewed by anyone who receives the JPEG image.<wbr/></p>
11292            </td>
11293          </tr>
11294
11295
11296          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11297           <!-- end of entry -->
11298
11299
11300          <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
11301            <td class="entry_name
11302             " rowspan="1">
11303              android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11304            </td>
11305            <td class="entry_type">
11306                <span class="entry_type_name">double</span>
11307                <span class="entry_type_container">x</span>
11308
11309                <span class="entry_type_array">
11310                  3
11311                </span>
11312              <span class="entry_type_visibility"> [ndk_public]</span>
11313
11314
11315              <span class="entry_type_hwlevel">[legacy] </span>
11316
11317
11318                <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11319
11320
11321            </td> <!-- entry_type -->
11322
11323            <td class="entry_description">
11324              <p>GPS coordinates to include in output JPEG
11325EXIF.<wbr/></p>
11326            </td>
11327
11328            <td class="entry_units">
11329            </td>
11330
11331            <td class="entry_range">
11332              <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11333            </td>
11334
11335            <td class="entry_tags">
11336              <ul class="entry_tags">
11337                  <li><a href="#tag_BC">BC</a></li>
11338              </ul>
11339            </td>
11340
11341          </tr>
11342
11343
11344          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11345           <!-- end of entry -->
11346
11347
11348          <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
11349            <td class="entry_name
11350             " rowspan="1">
11351              android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11352            </td>
11353            <td class="entry_type">
11354                <span class="entry_type_name">byte</span>
11355
11356              <span class="entry_type_visibility"> [ndk_public as string]</span>
11357
11358
11359              <span class="entry_type_hwlevel">[legacy] </span>
11360
11361
11362
11363
11364            </td> <!-- entry_type -->
11365
11366            <td class="entry_description">
11367              <p>32 characters describing GPS algorithm to
11368include in EXIF.<wbr/></p>
11369            </td>
11370
11371            <td class="entry_units">
11372              UTF-8 null-terminated string
11373            </td>
11374
11375            <td class="entry_range">
11376            </td>
11377
11378            <td class="entry_tags">
11379              <ul class="entry_tags">
11380                  <li><a href="#tag_BC">BC</a></li>
11381              </ul>
11382            </td>
11383
11384          </tr>
11385
11386
11387          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11388           <!-- end of entry -->
11389
11390
11391          <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
11392            <td class="entry_name
11393             " rowspan="1">
11394              android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
11395            </td>
11396            <td class="entry_type">
11397                <span class="entry_type_name">int64</span>
11398
11399              <span class="entry_type_visibility"> [ndk_public]</span>
11400
11401
11402              <span class="entry_type_hwlevel">[legacy] </span>
11403
11404
11405
11406
11407            </td> <!-- entry_type -->
11408
11409            <td class="entry_description">
11410              <p>Time GPS fix was made to include in
11411EXIF.<wbr/></p>
11412            </td>
11413
11414            <td class="entry_units">
11415              UTC in seconds since January 1,<wbr/> 1970
11416            </td>
11417
11418            <td class="entry_range">
11419            </td>
11420
11421            <td class="entry_tags">
11422              <ul class="entry_tags">
11423                  <li><a href="#tag_BC">BC</a></li>
11424              </ul>
11425            </td>
11426
11427          </tr>
11428
11429
11430          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11431           <!-- end of entry -->
11432
11433
11434          <tr class="entry" id="dynamic_android.jpeg.orientation">
11435            <td class="entry_name
11436             " rowspan="3">
11437              android.<wbr/>jpeg.<wbr/>orientation
11438            </td>
11439            <td class="entry_type">
11440                <span class="entry_type_name">int32</span>
11441
11442              <span class="entry_type_visibility"> [public]</span>
11443
11444
11445              <span class="entry_type_hwlevel">[legacy] </span>
11446
11447
11448
11449
11450            </td> <!-- entry_type -->
11451
11452            <td class="entry_description">
11453              <p>The orientation for a JPEG image.<wbr/></p>
11454            </td>
11455
11456            <td class="entry_units">
11457              Degrees in multiples of 90
11458            </td>
11459
11460            <td class="entry_range">
11461              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
11462            </td>
11463
11464            <td class="entry_tags">
11465              <ul class="entry_tags">
11466                  <li><a href="#tag_BC">BC</a></li>
11467              </ul>
11468            </td>
11469
11470          </tr>
11471          <tr class="entries_header">
11472            <th class="th_details" colspan="5">Details</th>
11473          </tr>
11474          <tr class="entry_cont">
11475            <td class="entry_details" colspan="5">
11476              <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
11477to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
11478upright.<wbr/></p>
11479<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
11480rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
11481the thumbnail data will also be rotated.<wbr/></p>
11482<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
11483by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
11484<p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
11485sample code may be used:</p>
11486<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
11487    if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
11488    int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
11489
11490    //<wbr/> Round device orientation to a multiple of 90
11491    deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
11492
11493    //<wbr/> Reverse device orientation for front-facing cameras
11494    boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
11495    if (facingFront) deviceOrientation = -deviceOrientation;
11496
11497    //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
11498    //<wbr/> the image upright relative to the device orientation
11499    int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
11500
11501    return jpegOrientation;
11502}
11503</code></pre>
11504            </td>
11505          </tr>
11506
11507
11508          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11509           <!-- end of entry -->
11510
11511
11512          <tr class="entry" id="dynamic_android.jpeg.quality">
11513            <td class="entry_name
11514             " rowspan="3">
11515              android.<wbr/>jpeg.<wbr/>quality
11516            </td>
11517            <td class="entry_type">
11518                <span class="entry_type_name">byte</span>
11519
11520              <span class="entry_type_visibility"> [public]</span>
11521
11522
11523              <span class="entry_type_hwlevel">[legacy] </span>
11524
11525
11526
11527
11528            </td> <!-- entry_type -->
11529
11530            <td class="entry_description">
11531              <p>Compression quality of the final JPEG
11532image.<wbr/></p>
11533            </td>
11534
11535            <td class="entry_units">
11536            </td>
11537
11538            <td class="entry_range">
11539              <p>1-100; larger is higher quality</p>
11540            </td>
11541
11542            <td class="entry_tags">
11543              <ul class="entry_tags">
11544                  <li><a href="#tag_BC">BC</a></li>
11545              </ul>
11546            </td>
11547
11548          </tr>
11549          <tr class="entries_header">
11550            <th class="th_details" colspan="5">Details</th>
11551          </tr>
11552          <tr class="entry_cont">
11553            <td class="entry_details" colspan="5">
11554              <p>85-95 is typical usage range.<wbr/></p>
11555            </td>
11556          </tr>
11557
11558
11559          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11560           <!-- end of entry -->
11561
11562
11563          <tr class="entry" id="dynamic_android.jpeg.size">
11564            <td class="entry_name
11565             " rowspan="3">
11566              android.<wbr/>jpeg.<wbr/>size
11567            </td>
11568            <td class="entry_type">
11569                <span class="entry_type_name">int32</span>
11570
11571              <span class="entry_type_visibility"> [system]</span>
11572
11573
11574
11575
11576
11577
11578            </td> <!-- entry_type -->
11579
11580            <td class="entry_description">
11581              <p>The size of the compressed JPEG image,<wbr/> in
11582bytes</p>
11583            </td>
11584
11585            <td class="entry_units">
11586            </td>
11587
11588            <td class="entry_range">
11589              <p>&gt;= 0</p>
11590            </td>
11591
11592            <td class="entry_tags">
11593              <ul class="entry_tags">
11594                  <li><a href="#tag_FUTURE">FUTURE</a></li>
11595              </ul>
11596            </td>
11597
11598          </tr>
11599          <tr class="entries_header">
11600            <th class="th_details" colspan="5">Details</th>
11601          </tr>
11602          <tr class="entry_cont">
11603            <td class="entry_details" colspan="5">
11604              <p>If no JPEG output is produced for the request,<wbr/>
11605this must be 0.<wbr/></p>
11606<p>Otherwise,<wbr/> this describes the real size of the compressed
11607JPEG image placed in the output stream.<wbr/>  More specifically,<wbr/>
11608if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
11609has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
11610the JPEG stream will be 1000000 bytes,<wbr/> of which the first
11611500000 make up the real data.<wbr/></p>
11612            </td>
11613          </tr>
11614
11615
11616          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11617           <!-- end of entry -->
11618
11619
11620          <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
11621            <td class="entry_name
11622             " rowspan="1">
11623              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
11624            </td>
11625            <td class="entry_type">
11626                <span class="entry_type_name">byte</span>
11627
11628              <span class="entry_type_visibility"> [public]</span>
11629
11630
11631              <span class="entry_type_hwlevel">[legacy] </span>
11632
11633
11634
11635
11636            </td> <!-- entry_type -->
11637
11638            <td class="entry_description">
11639              <p>Compression quality of JPEG
11640thumbnail.<wbr/></p>
11641            </td>
11642
11643            <td class="entry_units">
11644            </td>
11645
11646            <td class="entry_range">
11647              <p>1-100; larger is higher quality</p>
11648            </td>
11649
11650            <td class="entry_tags">
11651              <ul class="entry_tags">
11652                  <li><a href="#tag_BC">BC</a></li>
11653              </ul>
11654            </td>
11655
11656          </tr>
11657
11658
11659          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11660           <!-- end of entry -->
11661
11662
11663          <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
11664            <td class="entry_name
11665             " rowspan="5">
11666              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
11667            </td>
11668            <td class="entry_type">
11669                <span class="entry_type_name">int32</span>
11670                <span class="entry_type_container">x</span>
11671
11672                <span class="entry_type_array">
11673                  2
11674                </span>
11675              <span class="entry_type_visibility"> [public as size]</span>
11676
11677
11678              <span class="entry_type_hwlevel">[legacy] </span>
11679
11680
11681
11682
11683            </td> <!-- entry_type -->
11684
11685            <td class="entry_description">
11686              <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
11687            </td>
11688
11689            <td class="entry_units">
11690            </td>
11691
11692            <td class="entry_range">
11693              <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
11694            </td>
11695
11696            <td class="entry_tags">
11697              <ul class="entry_tags">
11698                  <li><a href="#tag_BC">BC</a></li>
11699              </ul>
11700            </td>
11701
11702          </tr>
11703          <tr class="entries_header">
11704            <th class="th_details" colspan="5">Details</th>
11705          </tr>
11706          <tr class="entry_cont">
11707            <td class="entry_details" colspan="5">
11708              <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
11709but the captured JPEG will still be a valid image.<wbr/></p>
11710<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
11711should have the same aspect ratio as the main JPEG output.<wbr/></p>
11712<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
11713ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
11714For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
1171516:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
11716generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
11717Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
11718<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
11719the camera device will handle thumbnail rotation in one of the following ways:</p>
11720<ul>
11721<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
11722  and keep jpeg and thumbnail image data unrotated.<wbr/></li>
11723<li>Rotate the jpeg and thumbnail image data and not set
11724  <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
11725  case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
11726  capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
11727  orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
11728  size.<wbr/></li>
11729</ul>
11730            </td>
11731          </tr>
11732
11733          <tr class="entries_header">
11734            <th class="th_details" colspan="5">HAL Implementation Details</th>
11735          </tr>
11736          <tr class="entry_cont">
11737            <td class="entry_details" colspan="5">
11738              <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
11739The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
11740The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
11741thumbnail image cropping.<wbr/></p>
11742            </td>
11743          </tr>
11744
11745          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11746           <!-- end of entry -->
11747
11748
11749
11750      <!-- end of kind -->
11751      </tbody>
11752
11753  <!-- end of section -->
11754  <tr><td colspan="6" id="section_lens" class="section">lens</td></tr>
11755
11756
11757      <tr><td colspan="6" class="kind">controls</td></tr>
11758
11759      <thead class="entries_header">
11760        <tr>
11761          <th class="th_name">Property Name</th>
11762          <th class="th_type">Type</th>
11763          <th class="th_description">Description</th>
11764          <th class="th_units">Units</th>
11765          <th class="th_range">Range</th>
11766          <th class="th_tags">Tags</th>
11767        </tr>
11768      </thead>
11769
11770      <tbody>
11771
11772
11773
11774
11775
11776
11777
11778
11779
11780
11781          <tr class="entry" id="controls_android.lens.aperture">
11782            <td class="entry_name
11783             " rowspan="3">
11784              android.<wbr/>lens.<wbr/>aperture
11785            </td>
11786            <td class="entry_type">
11787                <span class="entry_type_name">float</span>
11788
11789              <span class="entry_type_visibility"> [public]</span>
11790
11791
11792              <span class="entry_type_hwlevel">[full] </span>
11793
11794
11795
11796
11797            </td> <!-- entry_type -->
11798
11799            <td class="entry_description">
11800              <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
11801effective aperture diameter.<wbr/></p>
11802            </td>
11803
11804            <td class="entry_units">
11805              The f-number (f/<wbr/>N)
11806            </td>
11807
11808            <td class="entry_range">
11809              <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
11810            </td>
11811
11812            <td class="entry_tags">
11813              <ul class="entry_tags">
11814                  <li><a href="#tag_V1">V1</a></li>
11815              </ul>
11816            </td>
11817
11818          </tr>
11819          <tr class="entries_header">
11820            <th class="th_details" colspan="5">Details</th>
11821          </tr>
11822          <tr class="entry_cont">
11823            <td class="entry_details" colspan="5">
11824              <p>Setting this value is only supported on the camera devices that have a variable
11825aperture lens.<wbr/></p>
11826<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
11827this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
11828<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>
11829to achieve manual exposure control.<wbr/></p>
11830<p>The requested aperture value may take several frames to reach the
11831requested value; the camera device will report the current (intermediate)
11832aperture size in capture result metadata while the aperture is changing.<wbr/>
11833While 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>
11834<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
11835the ON modes,<wbr/> this will be overridden by the camera device
11836auto-exposure algorithm,<wbr/> the overridden values are then provided
11837back to the user in the corresponding result.<wbr/></p>
11838            </td>
11839          </tr>
11840
11841
11842          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11843           <!-- end of entry -->
11844
11845
11846          <tr class="entry" id="controls_android.lens.filterDensity">
11847            <td class="entry_name
11848             " rowspan="3">
11849              android.<wbr/>lens.<wbr/>filter<wbr/>Density
11850            </td>
11851            <td class="entry_type">
11852                <span class="entry_type_name">float</span>
11853
11854              <span class="entry_type_visibility"> [public]</span>
11855
11856
11857              <span class="entry_type_hwlevel">[full] </span>
11858
11859
11860
11861
11862            </td> <!-- entry_type -->
11863
11864            <td class="entry_description">
11865              <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
11866            </td>
11867
11868            <td class="entry_units">
11869              Exposure Value (EV)
11870            </td>
11871
11872            <td class="entry_range">
11873              <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
11874            </td>
11875
11876            <td class="entry_tags">
11877              <ul class="entry_tags">
11878                  <li><a href="#tag_V1">V1</a></li>
11879              </ul>
11880            </td>
11881
11882          </tr>
11883          <tr class="entries_header">
11884            <th class="th_details" colspan="5">Details</th>
11885          </tr>
11886          <tr class="entry_cont">
11887            <td class="entry_details" colspan="5">
11888              <p>This control will not be supported on most camera devices.<wbr/></p>
11889<p>Lens filters are typically used to lower the amount of light the
11890sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
11891step is the standard logarithmic representation,<wbr/> which are
11892non-negative,<wbr/> and inversely proportional to the amount of light
11893hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
11894in no reduction of the incoming light,<wbr/> and setting this to 2 would
11895mean that the filter is set to reduce incoming light by two stops
11896(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
11897<p>It may take several frames before the lens filter density changes
11898to the requested value.<wbr/> While the filter density is still changing,<wbr/>
11899<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
11900            </td>
11901          </tr>
11902
11903
11904          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11905           <!-- end of entry -->
11906
11907
11908          <tr class="entry" id="controls_android.lens.focalLength">
11909            <td class="entry_name
11910             " rowspan="3">
11911              android.<wbr/>lens.<wbr/>focal<wbr/>Length
11912            </td>
11913            <td class="entry_type">
11914                <span class="entry_type_name">float</span>
11915
11916              <span class="entry_type_visibility"> [public]</span>
11917
11918
11919              <span class="entry_type_hwlevel">[legacy] </span>
11920
11921
11922
11923
11924            </td> <!-- entry_type -->
11925
11926            <td class="entry_description">
11927              <p>The desired lens focal length; used for optical zoom.<wbr/></p>
11928            </td>
11929
11930            <td class="entry_units">
11931              Millimeters
11932            </td>
11933
11934            <td class="entry_range">
11935              <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
11936            </td>
11937
11938            <td class="entry_tags">
11939              <ul class="entry_tags">
11940                  <li><a href="#tag_V1">V1</a></li>
11941              </ul>
11942            </td>
11943
11944          </tr>
11945          <tr class="entries_header">
11946            <th class="th_details" colspan="5">Details</th>
11947          </tr>
11948          <tr class="entry_cont">
11949            <td class="entry_details" colspan="5">
11950              <p>This setting controls the physical focal length of the camera
11951device's lens.<wbr/> Changing the focal length changes the field of
11952view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
11953<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
11954setting won't be applied instantaneously,<wbr/> and it may take several
11955frames before the lens can change to the requested focal length.<wbr/>
11956While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
11957be set to MOVING.<wbr/></p>
11958<p>Optical zoom will not be supported on most devices.<wbr/></p>
11959            </td>
11960          </tr>
11961
11962
11963          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11964           <!-- end of entry -->
11965
11966
11967          <tr class="entry" id="controls_android.lens.focusDistance">
11968            <td class="entry_name
11969             " rowspan="3">
11970              android.<wbr/>lens.<wbr/>focus<wbr/>Distance
11971            </td>
11972            <td class="entry_type">
11973                <span class="entry_type_name">float</span>
11974
11975              <span class="entry_type_visibility"> [public]</span>
11976
11977
11978              <span class="entry_type_hwlevel">[full] </span>
11979
11980
11981
11982
11983            </td> <!-- entry_type -->
11984
11985            <td class="entry_description">
11986              <p>Desired distance to plane of sharpest focus,<wbr/>
11987measured from frontmost surface of the lens.<wbr/></p>
11988            </td>
11989
11990            <td class="entry_units">
11991              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
11992            </td>
11993
11994            <td class="entry_range">
11995              <p>&gt;= 0</p>
11996            </td>
11997
11998            <td class="entry_tags">
11999              <ul class="entry_tags">
12000                  <li><a href="#tag_BC">BC</a></li>
12001                  <li><a href="#tag_V1">V1</a></li>
12002              </ul>
12003            </td>
12004
12005          </tr>
12006          <tr class="entries_header">
12007            <th class="th_details" colspan="5">Details</th>
12008          </tr>
12009          <tr class="entry_cont">
12010            <td class="entry_details" colspan="5">
12011              <p>This control can be used for setting manual focus,<wbr/> on devices that support
12012the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
12013<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
12014<p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
12015<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>
12016<p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
12017instantaneously,<wbr/> and it may take several frames before the lens
12018can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
12019<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12020<p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
12021for infinity focus.<wbr/></p>
12022            </td>
12023          </tr>
12024
12025
12026          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12027           <!-- end of entry -->
12028
12029
12030          <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
12031            <td class="entry_name
12032             " rowspan="3">
12033              android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
12034            </td>
12035            <td class="entry_type">
12036                <span class="entry_type_name entry_type_name_enum">byte</span>
12037
12038              <span class="entry_type_visibility"> [public]</span>
12039
12040
12041              <span class="entry_type_hwlevel">[limited] </span>
12042
12043
12044
12045                <ul class="entry_type_enum">
12046                  <li>
12047                    <span class="entry_type_enum_name">OFF</span>
12048                    <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
12049                  </li>
12050                  <li>
12051                    <span class="entry_type_enum_name">ON</span>
12052                    <span class="entry_type_enum_optional">[optional]</span>
12053                    <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
12054                  </li>
12055                </ul>
12056
12057            </td> <!-- entry_type -->
12058
12059            <td class="entry_description">
12060              <p>Sets whether the camera device uses optical image stabilization (OIS)
12061when capturing images.<wbr/></p>
12062            </td>
12063
12064            <td class="entry_units">
12065            </td>
12066
12067            <td class="entry_range">
12068              <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
12069            </td>
12070
12071            <td class="entry_tags">
12072              <ul class="entry_tags">
12073                  <li><a href="#tag_V1">V1</a></li>
12074              </ul>
12075            </td>
12076
12077          </tr>
12078          <tr class="entries_header">
12079            <th class="th_details" colspan="5">Details</th>
12080          </tr>
12081          <tr class="entry_cont">
12082            <td class="entry_details" colspan="5">
12083              <p>OIS is used to compensate for motion blur due to small
12084movements of the camera during capture.<wbr/> Unlike digital image
12085stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
12086makes use of mechanical elements to stabilize the camera
12087sensor,<wbr/> and thus allows for longer exposure times before
12088camera shake becomes apparent.<wbr/></p>
12089<p>Switching between different optical stabilization modes may take several
12090frames to initialize,<wbr/> the camera device will report the current mode in
12091capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
12092optical stabilization modes in the first several capture results may still
12093be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
12094<p>If a camera device supports both OIS and digital image stabilization
12095(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
12096interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
12097<p>Not all devices will support OIS; see
12098<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
12099available controls.<wbr/></p>
12100            </td>
12101          </tr>
12102
12103
12104          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12105           <!-- end of entry -->
12106
12107
12108
12109      <!-- end of kind -->
12110      </tbody>
12111      <tr><td colspan="6" class="kind">static</td></tr>
12112
12113      <thead class="entries_header">
12114        <tr>
12115          <th class="th_name">Property Name</th>
12116          <th class="th_type">Type</th>
12117          <th class="th_description">Description</th>
12118          <th class="th_units">Units</th>
12119          <th class="th_range">Range</th>
12120          <th class="th_tags">Tags</th>
12121        </tr>
12122      </thead>
12123
12124      <tbody>
12125
12126
12127
12128
12129
12130
12131
12132
12133
12134
12135
12136
12137          <tr class="entry" id="static_android.lens.info.availableApertures">
12138            <td class="entry_name
12139             " rowspan="3">
12140              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
12141            </td>
12142            <td class="entry_type">
12143                <span class="entry_type_name">float</span>
12144                <span class="entry_type_container">x</span>
12145
12146                <span class="entry_type_array">
12147                  n
12148                </span>
12149              <span class="entry_type_visibility"> [public]</span>
12150
12151
12152              <span class="entry_type_hwlevel">[full] </span>
12153
12154
12155
12156
12157            </td> <!-- entry_type -->
12158
12159            <td class="entry_description">
12160              <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
12161supported by this camera device.<wbr/></p>
12162            </td>
12163
12164            <td class="entry_units">
12165              The aperture f-number
12166            </td>
12167
12168            <td class="entry_range">
12169            </td>
12170
12171            <td class="entry_tags">
12172              <ul class="entry_tags">
12173                  <li><a href="#tag_V1">V1</a></li>
12174              </ul>
12175            </td>
12176
12177          </tr>
12178          <tr class="entries_header">
12179            <th class="th_details" colspan="5">Details</th>
12180          </tr>
12181          <tr class="entry_cont">
12182            <td class="entry_details" colspan="5">
12183              <p>If the camera device doesn't support a variable lens aperture,<wbr/>
12184this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
12185<p>If the camera device supports a variable aperture,<wbr/> the aperture values
12186in this list will be sorted in ascending order.<wbr/></p>
12187            </td>
12188          </tr>
12189
12190
12191          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12192           <!-- end of entry -->
12193
12194
12195          <tr class="entry" id="static_android.lens.info.availableFilterDensities">
12196            <td class="entry_name
12197             " rowspan="3">
12198              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
12199            </td>
12200            <td class="entry_type">
12201                <span class="entry_type_name">float</span>
12202                <span class="entry_type_container">x</span>
12203
12204                <span class="entry_type_array">
12205                  n
12206                </span>
12207              <span class="entry_type_visibility"> [public]</span>
12208
12209
12210              <span class="entry_type_hwlevel">[full] </span>
12211
12212
12213
12214
12215            </td> <!-- entry_type -->
12216
12217            <td class="entry_description">
12218              <p>List of neutral density filter values for
12219<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
12220            </td>
12221
12222            <td class="entry_units">
12223              Exposure value (EV)
12224            </td>
12225
12226            <td class="entry_range">
12227              <p>Values are &gt;= 0</p>
12228            </td>
12229
12230            <td class="entry_tags">
12231              <ul class="entry_tags">
12232                  <li><a href="#tag_V1">V1</a></li>
12233              </ul>
12234            </td>
12235
12236          </tr>
12237          <tr class="entries_header">
12238            <th class="th_details" colspan="5">Details</th>
12239          </tr>
12240          <tr class="entry_cont">
12241            <td class="entry_details" colspan="5">
12242              <p>If a neutral density filter is not supported by this camera device,<wbr/>
12243this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
12244filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
12245            </td>
12246          </tr>
12247
12248
12249          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12250           <!-- end of entry -->
12251
12252
12253          <tr class="entry" id="static_android.lens.info.availableFocalLengths">
12254            <td class="entry_name
12255             " rowspan="3">
12256              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
12257            </td>
12258            <td class="entry_type">
12259                <span class="entry_type_name">float</span>
12260                <span class="entry_type_container">x</span>
12261
12262                <span class="entry_type_array">
12263                  n
12264                </span>
12265              <span class="entry_type_visibility"> [public]</span>
12266
12267
12268              <span class="entry_type_hwlevel">[legacy] </span>
12269
12270
12271                <div class="entry_type_notes">The list of available focal lengths</div>
12272
12273
12274            </td> <!-- entry_type -->
12275
12276            <td class="entry_description">
12277              <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
12278device.<wbr/></p>
12279            </td>
12280
12281            <td class="entry_units">
12282              Millimeters
12283            </td>
12284
12285            <td class="entry_range">
12286              <p>Values are &gt; 0</p>
12287            </td>
12288
12289            <td class="entry_tags">
12290              <ul class="entry_tags">
12291                  <li><a href="#tag_BC">BC</a></li>
12292                  <li><a href="#tag_V1">V1</a></li>
12293              </ul>
12294            </td>
12295
12296          </tr>
12297          <tr class="entries_header">
12298            <th class="th_details" colspan="5">Details</th>
12299          </tr>
12300          <tr class="entry_cont">
12301            <td class="entry_details" colspan="5">
12302              <p>If optical zoom is not supported,<wbr/> this list will only contain
12303a single value corresponding to the fixed focal length of the
12304device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
12305by the camera device,<wbr/> in ascending order.<wbr/></p>
12306            </td>
12307          </tr>
12308
12309
12310          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12311           <!-- end of entry -->
12312
12313
12314          <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
12315            <td class="entry_name
12316             " rowspan="3">
12317              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
12318            </td>
12319            <td class="entry_type">
12320                <span class="entry_type_name">byte</span>
12321                <span class="entry_type_container">x</span>
12322
12323                <span class="entry_type_array">
12324                  n
12325                </span>
12326              <span class="entry_type_visibility"> [public as enumList]</span>
12327
12328
12329              <span class="entry_type_hwlevel">[limited] </span>
12330
12331
12332                <div class="entry_type_notes">list of enums</div>
12333
12334
12335            </td> <!-- entry_type -->
12336
12337            <td class="entry_description">
12338              <p>List of optical image stabilization (OIS) modes for
12339<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>
12340            </td>
12341
12342            <td class="entry_units">
12343            </td>
12344
12345            <td class="entry_range">
12346              <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
12347            </td>
12348
12349            <td class="entry_tags">
12350              <ul class="entry_tags">
12351                  <li><a href="#tag_V1">V1</a></li>
12352              </ul>
12353            </td>
12354
12355          </tr>
12356          <tr class="entries_header">
12357            <th class="th_details" colspan="5">Details</th>
12358          </tr>
12359          <tr class="entry_cont">
12360            <td class="entry_details" colspan="5">
12361              <p>If OIS is not supported by a given camera device,<wbr/> this list will
12362contain only OFF.<wbr/></p>
12363            </td>
12364          </tr>
12365
12366
12367          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12368           <!-- end of entry -->
12369
12370
12371          <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
12372            <td class="entry_name
12373             " rowspan="3">
12374              android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
12375            </td>
12376            <td class="entry_type">
12377                <span class="entry_type_name">float</span>
12378
12379              <span class="entry_type_visibility"> [public]</span>
12380
12381
12382              <span class="entry_type_hwlevel">[limited] </span>
12383
12384
12385
12386
12387            </td> <!-- entry_type -->
12388
12389            <td class="entry_description">
12390              <p>Hyperfocal distance for this lens.<wbr/></p>
12391            </td>
12392
12393            <td class="entry_units">
12394              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12395            </td>
12396
12397            <td class="entry_range">
12398              <p>If lens is fixed focus,<wbr/> &gt;= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
12399within <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>
12400            </td>
12401
12402            <td class="entry_tags">
12403            </td>
12404
12405          </tr>
12406          <tr class="entries_header">
12407            <th class="th_details" colspan="5">Details</th>
12408          </tr>
12409          <tr class="entry_cont">
12410            <td class="entry_details" colspan="5">
12411              <p>If the lens is not fixed focus,<wbr/> the camera device will report this
12412field 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>
12413            </td>
12414          </tr>
12415
12416
12417          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12418           <!-- end of entry -->
12419
12420
12421          <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
12422            <td class="entry_name
12423             " rowspan="5">
12424              android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
12425            </td>
12426            <td class="entry_type">
12427                <span class="entry_type_name">float</span>
12428
12429              <span class="entry_type_visibility"> [public]</span>
12430
12431
12432              <span class="entry_type_hwlevel">[limited] </span>
12433
12434
12435
12436
12437            </td> <!-- entry_type -->
12438
12439            <td class="entry_description">
12440              <p>Shortest distance from frontmost surface
12441of the lens that can be brought into sharp focus.<wbr/></p>
12442            </td>
12443
12444            <td class="entry_units">
12445              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12446            </td>
12447
12448            <td class="entry_range">
12449              <p>&gt;= 0</p>
12450            </td>
12451
12452            <td class="entry_tags">
12453              <ul class="entry_tags">
12454                  <li><a href="#tag_V1">V1</a></li>
12455              </ul>
12456            </td>
12457
12458          </tr>
12459          <tr class="entries_header">
12460            <th class="th_details" colspan="5">Details</th>
12461          </tr>
12462          <tr class="entry_cont">
12463            <td class="entry_details" colspan="5">
12464              <p>If the lens is fixed-focus,<wbr/> this will be
124650.<wbr/></p>
12466            </td>
12467          </tr>
12468
12469          <tr class="entries_header">
12470            <th class="th_details" colspan="5">HAL Implementation Details</th>
12471          </tr>
12472          <tr class="entry_cont">
12473            <td class="entry_details" colspan="5">
12474              <p>Mandatory for FULL devices; LIMITED devices
12475must always set this value to 0 for fixed-focus; and may omit
12476the minimum focus distance otherwise.<wbr/></p>
12477<p>This field is also mandatory for all devices advertising
12478the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
12479            </td>
12480          </tr>
12481
12482          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12483           <!-- end of entry -->
12484
12485
12486          <tr class="entry" id="static_android.lens.info.shadingMapSize">
12487            <td class="entry_name
12488             " rowspan="3">
12489              android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
12490            </td>
12491            <td class="entry_type">
12492                <span class="entry_type_name">int32</span>
12493                <span class="entry_type_container">x</span>
12494
12495                <span class="entry_type_array">
12496                  2
12497                </span>
12498              <span class="entry_type_visibility"> [ndk_public as size]</span>
12499
12500
12501              <span class="entry_type_hwlevel">[full] </span>
12502
12503
12504                <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
12505
12506
12507            </td> <!-- entry_type -->
12508
12509            <td class="entry_description">
12510              <p>Dimensions of lens shading map.<wbr/></p>
12511            </td>
12512
12513            <td class="entry_units">
12514            </td>
12515
12516            <td class="entry_range">
12517              <p>Both values &gt;= 1</p>
12518            </td>
12519
12520            <td class="entry_tags">
12521              <ul class="entry_tags">
12522                  <li><a href="#tag_V1">V1</a></li>
12523              </ul>
12524            </td>
12525
12526          </tr>
12527          <tr class="entries_header">
12528            <th class="th_details" colspan="5">Details</th>
12529          </tr>
12530          <tr class="entry_cont">
12531            <td class="entry_details" colspan="5">
12532              <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
12533must be smaller than 64x64.<wbr/></p>
12534            </td>
12535          </tr>
12536
12537
12538          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12539           <!-- end of entry -->
12540
12541
12542          <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
12543            <td class="entry_name
12544             " rowspan="5">
12545              android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
12546            </td>
12547            <td class="entry_type">
12548                <span class="entry_type_name entry_type_name_enum">byte</span>
12549
12550              <span class="entry_type_visibility"> [public]</span>
12551
12552
12553              <span class="entry_type_hwlevel">[limited] </span>
12554
12555
12556
12557                <ul class="entry_type_enum">
12558                  <li>
12559                    <span class="entry_type_enum_name">UNCALIBRATED</span>
12560                    <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
12561<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
12562<p>Setting the lens to the same focus distance on separate occasions may
12563result in a different real focus distance,<wbr/> depending on factors such
12564as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
12565and the device temperature.<wbr/> The focus distance value will still be
12566in 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
12567represents the farthest focus.<wbr/></p></span>
12568                  </li>
12569                  <li>
12570                    <span class="entry_type_enum_name">APPROXIMATE</span>
12571                    <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
12572<p>However,<wbr/> setting the lens to the same focus distance
12573on separate occasions may result in a different real
12574focus distance,<wbr/> depending on factors such as the
12575orientation of the device,<wbr/> the age of the focusing
12576mechanism,<wbr/> and the device temperature.<wbr/></p></span>
12577                  </li>
12578                  <li>
12579                    <span class="entry_type_enum_name">CALIBRATED</span>
12580                    <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
12581is calibrated.<wbr/></p>
12582<p>The lens mechanism is calibrated so that setting the
12583same focus distance is repeatable on multiple
12584occasions with good accuracy,<wbr/> and the focus distance
12585corresponds to the real physical distance to the plane
12586of best focus.<wbr/></p></span>
12587                  </li>
12588                </ul>
12589
12590            </td> <!-- entry_type -->
12591
12592            <td class="entry_description">
12593              <p>The lens focus distance calibration quality.<wbr/></p>
12594            </td>
12595
12596            <td class="entry_units">
12597            </td>
12598
12599            <td class="entry_range">
12600            </td>
12601
12602            <td class="entry_tags">
12603              <ul class="entry_tags">
12604                  <li><a href="#tag_V1">V1</a></li>
12605              </ul>
12606            </td>
12607
12608          </tr>
12609          <tr class="entries_header">
12610            <th class="th_details" colspan="5">Details</th>
12611          </tr>
12612          <tr class="entry_cont">
12613            <td class="entry_details" colspan="5">
12614              <p>The lens focus distance calibration quality determines the reliability of
12615focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
12616<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
12617<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
12618<p>APPROXIMATE and CALIBRATED devices report the focus metadata in
12619units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
12620and increasing positive numbers represent focusing closer and closer
12621to the camera device.<wbr/> The focus distance control also uses diopters
12622on these devices.<wbr/></p>
12623<p>UNCALIBRATED devices do not use units that are directly comparable
12624to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
12625focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
12626nearest focus the device can achieve.<wbr/></p>
12627            </td>
12628          </tr>
12629
12630          <tr class="entries_header">
12631            <th class="th_details" colspan="5">HAL Implementation Details</th>
12632          </tr>
12633          <tr class="entry_cont">
12634            <td class="entry_details" colspan="5">
12635              <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
12636focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
12637and the lens focus distance is set to 0 diopters
12638(<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
12639and is stably focused at infinity even if the device tilts.<wbr/> It may take the
12640lens some time to move; during the move the lens state should be MOVING and
12641the output diopter value should be changing toward 0.<wbr/></p>
12642            </td>
12643          </tr>
12644
12645          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12646           <!-- end of entry -->
12647
12648
12649
12650
12651
12652          <tr class="entry" id="static_android.lens.facing">
12653            <td class="entry_name
12654             " rowspan="1">
12655              android.<wbr/>lens.<wbr/>facing
12656            </td>
12657            <td class="entry_type">
12658                <span class="entry_type_name entry_type_name_enum">byte</span>
12659
12660              <span class="entry_type_visibility"> [public]</span>
12661
12662
12663              <span class="entry_type_hwlevel">[legacy] </span>
12664
12665
12666
12667                <ul class="entry_type_enum">
12668                  <li>
12669                    <span class="entry_type_enum_name">FRONT</span>
12670                    <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
12671                  </li>
12672                  <li>
12673                    <span class="entry_type_enum_name">BACK</span>
12674                    <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
12675                  </li>
12676                  <li>
12677                    <span class="entry_type_enum_name">EXTERNAL</span>
12678                    <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
12679device's screen.<wbr/></p></span>
12680                  </li>
12681                </ul>
12682
12683            </td> <!-- entry_type -->
12684
12685            <td class="entry_description">
12686              <p>Direction the camera faces relative to
12687device screen.<wbr/></p>
12688            </td>
12689
12690            <td class="entry_units">
12691            </td>
12692
12693            <td class="entry_range">
12694            </td>
12695
12696            <td class="entry_tags">
12697            </td>
12698
12699          </tr>
12700
12701
12702          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12703           <!-- end of entry -->
12704
12705
12706          <tr class="entry" id="static_android.lens.poseRotation">
12707            <td class="entry_name
12708             " rowspan="3">
12709              android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
12710            </td>
12711            <td class="entry_type">
12712                <span class="entry_type_name">float</span>
12713                <span class="entry_type_container">x</span>
12714
12715                <span class="entry_type_array">
12716                  4
12717                </span>
12718              <span class="entry_type_visibility"> [public]</span>
12719
12720
12721
12722
12723
12724
12725            </td> <!-- entry_type -->
12726
12727            <td class="entry_description">
12728              <p>The orientation of the camera relative to the sensor
12729coordinate system.<wbr/></p>
12730            </td>
12731
12732            <td class="entry_units">
12733
12734            Quaternion coefficients
12735
12736            </td>
12737
12738            <td class="entry_range">
12739            </td>
12740
12741            <td class="entry_tags">
12742              <ul class="entry_tags">
12743                  <li><a href="#tag_DEPTH">DEPTH</a></li>
12744              </ul>
12745            </td>
12746
12747          </tr>
12748          <tr class="entries_header">
12749            <th class="th_details" colspan="5">Details</th>
12750          </tr>
12751          <tr class="entry_cont">
12752            <td class="entry_details" colspan="5">
12753              <p>The four coefficients that describe the quaternion
12754rotation from the Android sensor coordinate system to a
12755camera-aligned coordinate system where the X-axis is
12756aligned with the long side of the image sensor,<wbr/> the Y-axis
12757is aligned with the short side of the image sensor,<wbr/> and
12758the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
12759<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
12760to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
12761amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
12762<pre><code> theta = 2 * acos(w)
12763a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
12764a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
12765a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
12766</code></pre>
12767<p>To create a 3x3 rotation matrix that applies the rotation
12768defined by this quaternion,<wbr/> the following matrix can be
12769used:</p>
12770<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
12771           2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
12772           2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
12773</code></pre>
12774<p>This matrix can then be used to apply the rotation to a
12775 column vector point with</p>
12776<p><code>p' = Rp</code></p>
12777<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
12778 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
12779            </td>
12780          </tr>
12781
12782
12783          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12784           <!-- end of entry -->
12785
12786
12787          <tr class="entry" id="static_android.lens.poseTranslation">
12788            <td class="entry_name
12789             " rowspan="3">
12790              android.<wbr/>lens.<wbr/>pose<wbr/>Translation
12791            </td>
12792            <td class="entry_type">
12793                <span class="entry_type_name">float</span>
12794                <span class="entry_type_container">x</span>
12795
12796                <span class="entry_type_array">
12797                  3
12798                </span>
12799              <span class="entry_type_visibility"> [public]</span>
12800
12801
12802
12803
12804
12805
12806            </td> <!-- entry_type -->
12807
12808            <td class="entry_description">
12809              <p>Position of the camera optical center.<wbr/></p>
12810            </td>
12811
12812            <td class="entry_units">
12813              Meters
12814            </td>
12815
12816            <td class="entry_range">
12817            </td>
12818
12819            <td class="entry_tags">
12820              <ul class="entry_tags">
12821                  <li><a href="#tag_DEPTH">DEPTH</a></li>
12822              </ul>
12823            </td>
12824
12825          </tr>
12826          <tr class="entries_header">
12827            <th class="th_details" colspan="5">Details</th>
12828          </tr>
12829          <tr class="entry_cont">
12830            <td class="entry_details" colspan="5">
12831              <p>The position of the camera device's lens optical center,<wbr/>
12832as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
12833optical center of the largest camera device facing in the
12834same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
12835axes</a>.<wbr/> Note that only the axis definitions are shared with
12836the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
12837<p>If this device is the largest or only camera device with a
12838given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
12839camera device with a lens optical center located 3 cm from
12840the main sensor along the +X axis (to the right from the
12841user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
12842<p>To transform a pixel coordinates between two cameras
12843facing the same direction,<wbr/> first the source camera
12844<a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/>  Then
12845the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
12846to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
12847of the source camera,<wbr/> the translation of the source camera
12848relative to the destination camera,<wbr/> the
12849<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
12850finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
12851of the destination camera.<wbr/> This obtains a
12852radial-distortion-free coordinate in the destination
12853camera pixel coordinates.<wbr/></p>
12854<p>To compare this against a real image from the destination
12855camera,<wbr/> the destination camera image then needs to be
12856corrected for radial distortion before comparison or
12857sampling.<wbr/></p>
12858            </td>
12859          </tr>
12860
12861
12862          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12863           <!-- end of entry -->
12864
12865
12866          <tr class="entry" id="static_android.lens.intrinsicCalibration">
12867            <td class="entry_name
12868             " rowspan="3">
12869              android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
12870            </td>
12871            <td class="entry_type">
12872                <span class="entry_type_name">float</span>
12873                <span class="entry_type_container">x</span>
12874
12875                <span class="entry_type_array">
12876                  5
12877                </span>
12878              <span class="entry_type_visibility"> [public]</span>
12879
12880
12881
12882
12883
12884
12885            </td> <!-- entry_type -->
12886
12887            <td class="entry_description">
12888              <p>The parameters for this camera device's intrinsic
12889calibration.<wbr/></p>
12890            </td>
12891
12892            <td class="entry_units">
12893
12894            Pixels in the
12895            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
12896            coordinate system.<wbr/>
12897
12898            </td>
12899
12900            <td class="entry_range">
12901            </td>
12902
12903            <td class="entry_tags">
12904              <ul class="entry_tags">
12905                  <li><a href="#tag_DEPTH">DEPTH</a></li>
12906              </ul>
12907            </td>
12908
12909          </tr>
12910          <tr class="entries_header">
12911            <th class="th_details" colspan="5">Details</th>
12912          </tr>
12913          <tr class="entry_cont">
12914            <td class="entry_details" colspan="5">
12915              <p>The five calibration parameters that describe the
12916transform from camera-centric 3D coordinates to sensor
12917pixel coordinates:</p>
12918<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
12919</code></pre>
12920<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
12921focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
12922axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
12923being aligned with the lens plane.<wbr/></p>
12924<p>These are typically used within a transformation matrix K:</p>
12925<pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
12926       0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
12927       0    0,<wbr/>   1 ]
12928</code></pre>
12929<p>which can then be combined with the camera pose rotation
12930<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
12931<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
12932complete transform from world coordinates to pixel
12933coordinates:</p>
12934<pre><code>P = [ K 0   * [ R t
12935     0 1 ]     0 1 ]
12936</code></pre>
12937<p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
12938and <code>p_<wbr/>s</code> being a point in the camera active pixel array
12939coordinate system,<wbr/> and with the mapping including the
12940homogeneous division by z:</p>
12941<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
12942p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
12943</code></pre>
12944<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
12945point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
12946(depth) in pixel coordinates.<wbr/></p>
12947<p>Note that the coordinate system for this transform is the
12948<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/>
12949where <code>(0,<wbr/>0)</code> is the top-left of the
12950preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
12951intrinsic calibration transforms have been applied to a
12952world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
12953transform needs to be applied,<wbr/> and the result adjusted to
12954be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
12955system (where <code>(0,<wbr/> 0)</code> is the top-left of the
12956activeArraySize rectangle),<wbr/> to determine the final pixel
12957coordinate of the world point for processed (non-RAW)
12958output buffers.<wbr/></p>
12959            </td>
12960          </tr>
12961
12962
12963          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12964           <!-- end of entry -->
12965
12966
12967          <tr class="entry" id="static_android.lens.radialDistortion">
12968            <td class="entry_name
12969             " rowspan="3">
12970              android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
12971            </td>
12972            <td class="entry_type">
12973                <span class="entry_type_name">float</span>
12974                <span class="entry_type_container">x</span>
12975
12976                <span class="entry_type_array">
12977                  6
12978                </span>
12979              <span class="entry_type_visibility"> [public]</span>
12980
12981
12982
12983
12984
12985
12986            </td> <!-- entry_type -->
12987
12988            <td class="entry_description">
12989              <p>The correction coefficients to correct for this camera device's
12990radial and tangential lens distortion.<wbr/></p>
12991            </td>
12992
12993            <td class="entry_units">
12994
12995            Unitless coefficients.<wbr/>
12996
12997            </td>
12998
12999            <td class="entry_range">
13000            </td>
13001
13002            <td class="entry_tags">
13003              <ul class="entry_tags">
13004                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13005              </ul>
13006            </td>
13007
13008          </tr>
13009          <tr class="entries_header">
13010            <th class="th_details" colspan="5">Details</th>
13011          </tr>
13012          <tr class="entry_cont">
13013            <td class="entry_details" colspan="5">
13014              <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13015kappa_<wbr/>3]</code> and two tangential distortion coefficients
13016<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13017lens's geometric distortion with the mapping equations:</p>
13018<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 ) +
13019       kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13020 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13021       kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13022</code></pre>
13023<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13024input image that correspond to the pixel values in the
13025corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13026<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13027</code></pre>
13028<p>The pixel coordinates are defined in a normalized
13029coordinate system related to the
13030<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
13031Both <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
13032lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
13033of both x and y coordinates are normalized to be 1 at the
13034edge further from the optical center,<wbr/> so the range
13035for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
13036<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13037optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
13038is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
13039<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13040            </td>
13041          </tr>
13042
13043
13044          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13045           <!-- end of entry -->
13046
13047
13048
13049      <!-- end of kind -->
13050      </tbody>
13051      <tr><td colspan="6" class="kind">dynamic</td></tr>
13052
13053      <thead class="entries_header">
13054        <tr>
13055          <th class="th_name">Property Name</th>
13056          <th class="th_type">Type</th>
13057          <th class="th_description">Description</th>
13058          <th class="th_units">Units</th>
13059          <th class="th_range">Range</th>
13060          <th class="th_tags">Tags</th>
13061        </tr>
13062      </thead>
13063
13064      <tbody>
13065
13066
13067
13068
13069
13070
13071
13072
13073
13074
13075          <tr class="entry" id="dynamic_android.lens.aperture">
13076            <td class="entry_name
13077             " rowspan="3">
13078              android.<wbr/>lens.<wbr/>aperture
13079            </td>
13080            <td class="entry_type">
13081                <span class="entry_type_name">float</span>
13082
13083              <span class="entry_type_visibility"> [public]</span>
13084
13085
13086              <span class="entry_type_hwlevel">[full] </span>
13087
13088
13089
13090
13091            </td> <!-- entry_type -->
13092
13093            <td class="entry_description">
13094              <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
13095effective aperture diameter.<wbr/></p>
13096            </td>
13097
13098            <td class="entry_units">
13099              The f-number (f/<wbr/>N)
13100            </td>
13101
13102            <td class="entry_range">
13103              <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
13104            </td>
13105
13106            <td class="entry_tags">
13107              <ul class="entry_tags">
13108                  <li><a href="#tag_V1">V1</a></li>
13109              </ul>
13110            </td>
13111
13112          </tr>
13113          <tr class="entries_header">
13114            <th class="th_details" colspan="5">Details</th>
13115          </tr>
13116          <tr class="entry_cont">
13117            <td class="entry_details" colspan="5">
13118              <p>Setting this value is only supported on the camera devices that have a variable
13119aperture lens.<wbr/></p>
13120<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
13121this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
13122<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>
13123to achieve manual exposure control.<wbr/></p>
13124<p>The requested aperture value may take several frames to reach the
13125requested value; the camera device will report the current (intermediate)
13126aperture size in capture result metadata while the aperture is changing.<wbr/>
13127While 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>
13128<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
13129the ON modes,<wbr/> this will be overridden by the camera device
13130auto-exposure algorithm,<wbr/> the overridden values are then provided
13131back to the user in the corresponding result.<wbr/></p>
13132            </td>
13133          </tr>
13134
13135
13136          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13137           <!-- end of entry -->
13138
13139
13140          <tr class="entry" id="dynamic_android.lens.filterDensity">
13141            <td class="entry_name
13142             " rowspan="3">
13143              android.<wbr/>lens.<wbr/>filter<wbr/>Density
13144            </td>
13145            <td class="entry_type">
13146                <span class="entry_type_name">float</span>
13147
13148              <span class="entry_type_visibility"> [public]</span>
13149
13150
13151              <span class="entry_type_hwlevel">[full] </span>
13152
13153
13154
13155
13156            </td> <!-- entry_type -->
13157
13158            <td class="entry_description">
13159              <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
13160            </td>
13161
13162            <td class="entry_units">
13163              Exposure Value (EV)
13164            </td>
13165
13166            <td class="entry_range">
13167              <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
13168            </td>
13169
13170            <td class="entry_tags">
13171              <ul class="entry_tags">
13172                  <li><a href="#tag_V1">V1</a></li>
13173              </ul>
13174            </td>
13175
13176          </tr>
13177          <tr class="entries_header">
13178            <th class="th_details" colspan="5">Details</th>
13179          </tr>
13180          <tr class="entry_cont">
13181            <td class="entry_details" colspan="5">
13182              <p>This control will not be supported on most camera devices.<wbr/></p>
13183<p>Lens filters are typically used to lower the amount of light the
13184sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
13185step is the standard logarithmic representation,<wbr/> which are
13186non-negative,<wbr/> and inversely proportional to the amount of light
13187hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
13188in no reduction of the incoming light,<wbr/> and setting this to 2 would
13189mean that the filter is set to reduce incoming light by two stops
13190(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
13191<p>It may take several frames before the lens filter density changes
13192to the requested value.<wbr/> While the filter density is still changing,<wbr/>
13193<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
13194            </td>
13195          </tr>
13196
13197
13198          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13199           <!-- end of entry -->
13200
13201
13202          <tr class="entry" id="dynamic_android.lens.focalLength">
13203            <td class="entry_name
13204             " rowspan="3">
13205              android.<wbr/>lens.<wbr/>focal<wbr/>Length
13206            </td>
13207            <td class="entry_type">
13208                <span class="entry_type_name">float</span>
13209
13210              <span class="entry_type_visibility"> [public]</span>
13211
13212
13213              <span class="entry_type_hwlevel">[legacy] </span>
13214
13215
13216
13217
13218            </td> <!-- entry_type -->
13219
13220            <td class="entry_description">
13221              <p>The desired lens focal length; used for optical zoom.<wbr/></p>
13222            </td>
13223
13224            <td class="entry_units">
13225              Millimeters
13226            </td>
13227
13228            <td class="entry_range">
13229              <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
13230            </td>
13231
13232            <td class="entry_tags">
13233              <ul class="entry_tags">
13234                  <li><a href="#tag_BC">BC</a></li>
13235              </ul>
13236            </td>
13237
13238          </tr>
13239          <tr class="entries_header">
13240            <th class="th_details" colspan="5">Details</th>
13241          </tr>
13242          <tr class="entry_cont">
13243            <td class="entry_details" colspan="5">
13244              <p>This setting controls the physical focal length of the camera
13245device's lens.<wbr/> Changing the focal length changes the field of
13246view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
13247<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
13248setting won't be applied instantaneously,<wbr/> and it may take several
13249frames before the lens can change to the requested focal length.<wbr/>
13250While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
13251be set to MOVING.<wbr/></p>
13252<p>Optical zoom will not be supported on most devices.<wbr/></p>
13253            </td>
13254          </tr>
13255
13256
13257          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13258           <!-- end of entry -->
13259
13260
13261          <tr class="entry" id="dynamic_android.lens.focusDistance">
13262            <td class="entry_name
13263             " rowspan="3">
13264              android.<wbr/>lens.<wbr/>focus<wbr/>Distance
13265            </td>
13266            <td class="entry_type">
13267                <span class="entry_type_name">float</span>
13268
13269              <span class="entry_type_visibility"> [public]</span>
13270
13271
13272              <span class="entry_type_hwlevel">[full] </span>
13273
13274
13275
13276
13277            </td> <!-- entry_type -->
13278
13279            <td class="entry_description">
13280              <p>Desired distance to plane of sharpest focus,<wbr/>
13281measured from frontmost surface of the lens.<wbr/></p>
13282            </td>
13283
13284            <td class="entry_units">
13285              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13286            </td>
13287
13288            <td class="entry_range">
13289              <p>&gt;= 0</p>
13290            </td>
13291
13292            <td class="entry_tags">
13293              <ul class="entry_tags">
13294                  <li><a href="#tag_BC">BC</a></li>
13295              </ul>
13296            </td>
13297
13298          </tr>
13299          <tr class="entries_header">
13300            <th class="th_details" colspan="5">Details</th>
13301          </tr>
13302          <tr class="entry_cont">
13303            <td class="entry_details" colspan="5">
13304              <p>Should be zero for fixed-focus cameras</p>
13305            </td>
13306          </tr>
13307
13308
13309          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13310           <!-- end of entry -->
13311
13312
13313          <tr class="entry" id="dynamic_android.lens.focusRange">
13314            <td class="entry_name
13315             " rowspan="3">
13316              android.<wbr/>lens.<wbr/>focus<wbr/>Range
13317            </td>
13318            <td class="entry_type">
13319                <span class="entry_type_name">float</span>
13320                <span class="entry_type_container">x</span>
13321
13322                <span class="entry_type_array">
13323                  2
13324                </span>
13325              <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
13326
13327
13328              <span class="entry_type_hwlevel">[limited] </span>
13329
13330
13331                <div class="entry_type_notes">Range of scene distances that are in focus</div>
13332
13333
13334            </td> <!-- entry_type -->
13335
13336            <td class="entry_description">
13337              <p>The range of scene distances that are in
13338sharp focus (depth of field).<wbr/></p>
13339            </td>
13340
13341            <td class="entry_units">
13342              A pair of focus distances in diopters: (near,<wbr/>
13343          far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
13344            </td>
13345
13346            <td class="entry_range">
13347              <p>&gt;=0</p>
13348            </td>
13349
13350            <td class="entry_tags">
13351              <ul class="entry_tags">
13352                  <li><a href="#tag_BC">BC</a></li>
13353              </ul>
13354            </td>
13355
13356          </tr>
13357          <tr class="entries_header">
13358            <th class="th_details" colspan="5">Details</th>
13359          </tr>
13360          <tr class="entry_cont">
13361            <td class="entry_details" colspan="5">
13362              <p>If variable focus not supported,<wbr/> can still report
13363fixed depth of field range</p>
13364            </td>
13365          </tr>
13366
13367
13368          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13369           <!-- end of entry -->
13370
13371
13372          <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
13373            <td class="entry_name
13374             " rowspan="3">
13375              android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
13376            </td>
13377            <td class="entry_type">
13378                <span class="entry_type_name entry_type_name_enum">byte</span>
13379
13380              <span class="entry_type_visibility"> [public]</span>
13381
13382
13383              <span class="entry_type_hwlevel">[limited] </span>
13384
13385
13386
13387                <ul class="entry_type_enum">
13388                  <li>
13389                    <span class="entry_type_enum_name">OFF</span>
13390                    <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
13391                  </li>
13392                  <li>
13393                    <span class="entry_type_enum_name">ON</span>
13394                    <span class="entry_type_enum_optional">[optional]</span>
13395                    <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
13396                  </li>
13397                </ul>
13398
13399            </td> <!-- entry_type -->
13400
13401            <td class="entry_description">
13402              <p>Sets whether the camera device uses optical image stabilization (OIS)
13403when capturing images.<wbr/></p>
13404            </td>
13405
13406            <td class="entry_units">
13407            </td>
13408
13409            <td class="entry_range">
13410              <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
13411            </td>
13412
13413            <td class="entry_tags">
13414              <ul class="entry_tags">
13415                  <li><a href="#tag_V1">V1</a></li>
13416              </ul>
13417            </td>
13418
13419          </tr>
13420          <tr class="entries_header">
13421            <th class="th_details" colspan="5">Details</th>
13422          </tr>
13423          <tr class="entry_cont">
13424            <td class="entry_details" colspan="5">
13425              <p>OIS is used to compensate for motion blur due to small
13426movements of the camera during capture.<wbr/> Unlike digital image
13427stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
13428makes use of mechanical elements to stabilize the camera
13429sensor,<wbr/> and thus allows for longer exposure times before
13430camera shake becomes apparent.<wbr/></p>
13431<p>Switching between different optical stabilization modes may take several
13432frames to initialize,<wbr/> the camera device will report the current mode in
13433capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
13434optical stabilization modes in the first several capture results may still
13435be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
13436<p>If a camera device supports both OIS and digital image stabilization
13437(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
13438interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
13439<p>Not all devices will support OIS; see
13440<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
13441available controls.<wbr/></p>
13442            </td>
13443          </tr>
13444
13445
13446          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13447           <!-- end of entry -->
13448
13449
13450          <tr class="entry" id="dynamic_android.lens.state">
13451            <td class="entry_name
13452             " rowspan="3">
13453              android.<wbr/>lens.<wbr/>state
13454            </td>
13455            <td class="entry_type">
13456                <span class="entry_type_name entry_type_name_enum">byte</span>
13457
13458              <span class="entry_type_visibility"> [public]</span>
13459
13460
13461              <span class="entry_type_hwlevel">[limited] </span>
13462
13463
13464
13465                <ul class="entry_type_enum">
13466                  <li>
13467                    <span class="entry_type_enum_name">STATIONARY</span>
13468                    <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/>
13469<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>
13470                  </li>
13471                  <li>
13472                    <span class="entry_type_enum_name">MOVING</span>
13473                    <span class="entry_type_enum_notes"><p>One or several of the lens parameters
13474(<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/>
13475<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
13476currently changing.<wbr/></p></span>
13477                  </li>
13478                </ul>
13479
13480            </td> <!-- entry_type -->
13481
13482            <td class="entry_description">
13483              <p>Current lens status.<wbr/></p>
13484            </td>
13485
13486            <td class="entry_units">
13487            </td>
13488
13489            <td class="entry_range">
13490            </td>
13491
13492            <td class="entry_tags">
13493              <ul class="entry_tags">
13494                  <li><a href="#tag_V1">V1</a></li>
13495              </ul>
13496            </td>
13497
13498          </tr>
13499          <tr class="entries_header">
13500            <th class="th_details" colspan="5">Details</th>
13501          </tr>
13502          <tr class="entry_cont">
13503            <td class="entry_details" colspan="5">
13504              <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/>
13505<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/>
13506they may take several frames to reach the requested values.<wbr/> This state indicates
13507the current status of the lens parameters.<wbr/></p>
13508<p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
13509either because the parameters are all fixed,<wbr/> or because the lens has had enough
13510time to reach the most recently-requested values.<wbr/>
13511If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
13512<ul>
13513<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
13514<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
13515<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/>
13516which means the optical zoom is not supported.<wbr/></li>
13517<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>
13518<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>
13519</ul>
13520<p>Then this state will always be STATIONARY.<wbr/></p>
13521<p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
13522is changing.<wbr/></p>
13523            </td>
13524          </tr>
13525
13526
13527          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13528           <!-- end of entry -->
13529
13530
13531          <tr class="entry" id="dynamic_android.lens.poseRotation">
13532            <td class="entry_name
13533             " rowspan="3">
13534              android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
13535            </td>
13536            <td class="entry_type">
13537                <span class="entry_type_name">float</span>
13538                <span class="entry_type_container">x</span>
13539
13540                <span class="entry_type_array">
13541                  4
13542                </span>
13543              <span class="entry_type_visibility"> [public]</span>
13544
13545
13546
13547
13548
13549
13550            </td> <!-- entry_type -->
13551
13552            <td class="entry_description">
13553              <p>The orientation of the camera relative to the sensor
13554coordinate system.<wbr/></p>
13555            </td>
13556
13557            <td class="entry_units">
13558
13559            Quaternion coefficients
13560
13561            </td>
13562
13563            <td class="entry_range">
13564            </td>
13565
13566            <td class="entry_tags">
13567              <ul class="entry_tags">
13568                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13569              </ul>
13570            </td>
13571
13572          </tr>
13573          <tr class="entries_header">
13574            <th class="th_details" colspan="5">Details</th>
13575          </tr>
13576          <tr class="entry_cont">
13577            <td class="entry_details" colspan="5">
13578              <p>The four coefficients that describe the quaternion
13579rotation from the Android sensor coordinate system to a
13580camera-aligned coordinate system where the X-axis is
13581aligned with the long side of the image sensor,<wbr/> the Y-axis
13582is aligned with the short side of the image sensor,<wbr/> and
13583the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
13584<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
13585to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
13586amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
13587<pre><code> theta = 2 * acos(w)
13588a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
13589a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
13590a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
13591</code></pre>
13592<p>To create a 3x3 rotation matrix that applies the rotation
13593defined by this quaternion,<wbr/> the following matrix can be
13594used:</p>
13595<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
13596           2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
13597           2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
13598</code></pre>
13599<p>This matrix can then be used to apply the rotation to a
13600 column vector point with</p>
13601<p><code>p' = Rp</code></p>
13602<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
13603 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
13604            </td>
13605          </tr>
13606
13607
13608          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13609           <!-- end of entry -->
13610
13611
13612          <tr class="entry" id="dynamic_android.lens.poseTranslation">
13613            <td class="entry_name
13614             " rowspan="3">
13615              android.<wbr/>lens.<wbr/>pose<wbr/>Translation
13616            </td>
13617            <td class="entry_type">
13618                <span class="entry_type_name">float</span>
13619                <span class="entry_type_container">x</span>
13620
13621                <span class="entry_type_array">
13622                  3
13623                </span>
13624              <span class="entry_type_visibility"> [public]</span>
13625
13626
13627
13628
13629
13630
13631            </td> <!-- entry_type -->
13632
13633            <td class="entry_description">
13634              <p>Position of the camera optical center.<wbr/></p>
13635            </td>
13636
13637            <td class="entry_units">
13638              Meters
13639            </td>
13640
13641            <td class="entry_range">
13642            </td>
13643
13644            <td class="entry_tags">
13645              <ul class="entry_tags">
13646                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13647              </ul>
13648            </td>
13649
13650          </tr>
13651          <tr class="entries_header">
13652            <th class="th_details" colspan="5">Details</th>
13653          </tr>
13654          <tr class="entry_cont">
13655            <td class="entry_details" colspan="5">
13656              <p>The position of the camera device's lens optical center,<wbr/>
13657as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
13658optical center of the largest camera device facing in the
13659same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
13660axes</a>.<wbr/> Note that only the axis definitions are shared with
13661the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
13662<p>If this device is the largest or only camera device with a
13663given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
13664camera device with a lens optical center located 3 cm from
13665the main sensor along the +X axis (to the right from the
13666user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
13667<p>To transform a pixel coordinates between two cameras
13668facing the same direction,<wbr/> first the source camera
13669<a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/>  Then
13670the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
13671to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
13672of the source camera,<wbr/> the translation of the source camera
13673relative to the destination camera,<wbr/> the
13674<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
13675finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
13676of the destination camera.<wbr/> This obtains a
13677radial-distortion-free coordinate in the destination
13678camera pixel coordinates.<wbr/></p>
13679<p>To compare this against a real image from the destination
13680camera,<wbr/> the destination camera image then needs to be
13681corrected for radial distortion before comparison or
13682sampling.<wbr/></p>
13683            </td>
13684          </tr>
13685
13686
13687          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13688           <!-- end of entry -->
13689
13690
13691          <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
13692            <td class="entry_name
13693             " rowspan="3">
13694              android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
13695            </td>
13696            <td class="entry_type">
13697                <span class="entry_type_name">float</span>
13698                <span class="entry_type_container">x</span>
13699
13700                <span class="entry_type_array">
13701                  5
13702                </span>
13703              <span class="entry_type_visibility"> [public]</span>
13704
13705
13706
13707
13708
13709
13710            </td> <!-- entry_type -->
13711
13712            <td class="entry_description">
13713              <p>The parameters for this camera device's intrinsic
13714calibration.<wbr/></p>
13715            </td>
13716
13717            <td class="entry_units">
13718
13719            Pixels in the
13720            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
13721            coordinate system.<wbr/>
13722
13723            </td>
13724
13725            <td class="entry_range">
13726            </td>
13727
13728            <td class="entry_tags">
13729              <ul class="entry_tags">
13730                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13731              </ul>
13732            </td>
13733
13734          </tr>
13735          <tr class="entries_header">
13736            <th class="th_details" colspan="5">Details</th>
13737          </tr>
13738          <tr class="entry_cont">
13739            <td class="entry_details" colspan="5">
13740              <p>The five calibration parameters that describe the
13741transform from camera-centric 3D coordinates to sensor
13742pixel coordinates:</p>
13743<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
13744</code></pre>
13745<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
13746focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
13747axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
13748being aligned with the lens plane.<wbr/></p>
13749<p>These are typically used within a transformation matrix K:</p>
13750<pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
13751       0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
13752       0    0,<wbr/>   1 ]
13753</code></pre>
13754<p>which can then be combined with the camera pose rotation
13755<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
13756<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
13757complete transform from world coordinates to pixel
13758coordinates:</p>
13759<pre><code>P = [ K 0   * [ R t
13760     0 1 ]     0 1 ]
13761</code></pre>
13762<p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
13763and <code>p_<wbr/>s</code> being a point in the camera active pixel array
13764coordinate system,<wbr/> and with the mapping including the
13765homogeneous division by z:</p>
13766<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
13767p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
13768</code></pre>
13769<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
13770point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
13771(depth) in pixel coordinates.<wbr/></p>
13772<p>Note that the coordinate system for this transform is the
13773<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/>
13774where <code>(0,<wbr/>0)</code> is the top-left of the
13775preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
13776intrinsic calibration transforms have been applied to a
13777world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
13778transform needs to be applied,<wbr/> and the result adjusted to
13779be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
13780system (where <code>(0,<wbr/> 0)</code> is the top-left of the
13781activeArraySize rectangle),<wbr/> to determine the final pixel
13782coordinate of the world point for processed (non-RAW)
13783output buffers.<wbr/></p>
13784            </td>
13785          </tr>
13786
13787
13788          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13789           <!-- end of entry -->
13790
13791
13792          <tr class="entry" id="dynamic_android.lens.radialDistortion">
13793            <td class="entry_name
13794             " rowspan="3">
13795              android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
13796            </td>
13797            <td class="entry_type">
13798                <span class="entry_type_name">float</span>
13799                <span class="entry_type_container">x</span>
13800
13801                <span class="entry_type_array">
13802                  6
13803                </span>
13804              <span class="entry_type_visibility"> [public]</span>
13805
13806
13807
13808
13809
13810
13811            </td> <!-- entry_type -->
13812
13813            <td class="entry_description">
13814              <p>The correction coefficients to correct for this camera device's
13815radial and tangential lens distortion.<wbr/></p>
13816            </td>
13817
13818            <td class="entry_units">
13819
13820            Unitless coefficients.<wbr/>
13821
13822            </td>
13823
13824            <td class="entry_range">
13825            </td>
13826
13827            <td class="entry_tags">
13828              <ul class="entry_tags">
13829                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13830              </ul>
13831            </td>
13832
13833          </tr>
13834          <tr class="entries_header">
13835            <th class="th_details" colspan="5">Details</th>
13836          </tr>
13837          <tr class="entry_cont">
13838            <td class="entry_details" colspan="5">
13839              <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13840kappa_<wbr/>3]</code> and two tangential distortion coefficients
13841<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13842lens's geometric distortion with the mapping equations:</p>
13843<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 ) +
13844       kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13845 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13846       kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13847</code></pre>
13848<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13849input image that correspond to the pixel values in the
13850corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13851<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13852</code></pre>
13853<p>The pixel coordinates are defined in a normalized
13854coordinate system related to the
13855<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
13856Both <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
13857lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
13858of both x and y coordinates are normalized to be 1 at the
13859edge further from the optical center,<wbr/> so the range
13860for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
13861<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13862optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
13863is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
13864<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13865            </td>
13866          </tr>
13867
13868
13869          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13870           <!-- end of entry -->
13871
13872
13873
13874      <!-- end of kind -->
13875      </tbody>
13876
13877  <!-- end of section -->
13878  <tr><td colspan="6" id="section_noiseReduction" class="section">noiseReduction</td></tr>
13879
13880
13881      <tr><td colspan="6" class="kind">controls</td></tr>
13882
13883      <thead class="entries_header">
13884        <tr>
13885          <th class="th_name">Property Name</th>
13886          <th class="th_type">Type</th>
13887          <th class="th_description">Description</th>
13888          <th class="th_units">Units</th>
13889          <th class="th_range">Range</th>
13890          <th class="th_tags">Tags</th>
13891        </tr>
13892      </thead>
13893
13894      <tbody>
13895
13896
13897
13898
13899
13900
13901
13902
13903
13904
13905          <tr class="entry" id="controls_android.noiseReduction.mode">
13906            <td class="entry_name
13907             " rowspan="5">
13908              android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
13909            </td>
13910            <td class="entry_type">
13911                <span class="entry_type_name entry_type_name_enum">byte</span>
13912
13913              <span class="entry_type_visibility"> [public]</span>
13914
13915
13916              <span class="entry_type_hwlevel">[full] </span>
13917
13918
13919
13920                <ul class="entry_type_enum">
13921                  <li>
13922                    <span class="entry_type_enum_name">OFF</span>
13923                    <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
13924                  </li>
13925                  <li>
13926                    <span class="entry_type_enum_name">FAST</span>
13927                    <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
13928output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
13929relative to sensor.<wbr/></p></span>
13930                  </li>
13931                  <li>
13932                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
13933                    <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
13934rate relative to sensor output.<wbr/></p></span>
13935                  </li>
13936                  <li>
13937                    <span class="entry_type_enum_name">MINIMAL</span>
13938                    <span class="entry_type_enum_optional">[optional]</span>
13939                    <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
13940sensor output.<wbr/> </p></span>
13941                  </li>
13942                  <li>
13943                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
13944                    <span class="entry_type_enum_optional">[optional]</span>
13945                    <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
13946based 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>) or below have noise
13947reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no
13948noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction
13949for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality
13950is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/>
13951quality may improve from FAST).<wbr/></p>
13952<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
13953with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
13954high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
13955produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
13956high-resolution buffers must not have noise reduction applied to maximize efficiency of
13957preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
13958low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
13959applied for reasonable preview quality.<wbr/></p>
13960<p>This mode is guaranteed to be supported by devices that support either the
13961YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
13962(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
13963be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
13964                  </li>
13965                </ul>
13966
13967            </td> <!-- entry_type -->
13968
13969            <td class="entry_description">
13970              <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
13971            </td>
13972
13973            <td class="entry_units">
13974            </td>
13975
13976            <td class="entry_range">
13977              <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
13978            </td>
13979
13980            <td class="entry_tags">
13981              <ul class="entry_tags">
13982                  <li><a href="#tag_V1">V1</a></li>
13983                  <li><a href="#tag_REPROC">REPROC</a></li>
13984              </ul>
13985            </td>
13986
13987          </tr>
13988          <tr class="entries_header">
13989            <th class="th_details" colspan="5">Details</th>
13990          </tr>
13991          <tr class="entry_cont">
13992            <td class="entry_details" colspan="5">
13993              <p>The noise reduction algorithm attempts to improve image quality by removing
13994excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
13995<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
13996YUV domain.<wbr/></p>
13997<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
13998demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
13999This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
14000<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>
14001<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
14002will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
14003will use the highest-quality noise filtering algorithms,<wbr/>
14004even if it slows down capture rate.<wbr/> FAST means the camera device will not
14005slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
14006MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
14007Every output stream will have a similar amount of enhancement applied.<wbr/></p>
14008<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
14009buffer of high-resolution images during preview and reprocess image(s) from that buffer
14010into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
14011noise reduction to low-resolution streams (below maximum recording resolution) to maximize
14012preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
14013those will be reprocessed later if necessary.<wbr/></p>
14014<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
14015will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
14016may adjust the noise reduction parameters for best image quality based on the
14017<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
14018            </td>
14019          </tr>
14020
14021          <tr class="entries_header">
14022            <th class="th_details" colspan="5">HAL Implementation Details</th>
14023          </tr>
14024          <tr class="entry_cont">
14025            <td class="entry_details" colspan="5">
14026              <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
14027adjust the internal noise reduction parameters appropriately to get the best quality
14028images.<wbr/></p>
14029            </td>
14030          </tr>
14031
14032          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14033           <!-- end of entry -->
14034
14035
14036          <tr class="entry" id="controls_android.noiseReduction.strength">
14037            <td class="entry_name
14038             " rowspan="1">
14039              android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
14040            </td>
14041            <td class="entry_type">
14042                <span class="entry_type_name">byte</span>
14043
14044              <span class="entry_type_visibility"> [system]</span>
14045
14046
14047
14048
14049
14050
14051            </td> <!-- entry_type -->
14052
14053            <td class="entry_description">
14054              <p>Control the amount of noise reduction
14055applied to the images</p>
14056            </td>
14057
14058            <td class="entry_units">
14059              1-10; 10 is max noise reduction
14060            </td>
14061
14062            <td class="entry_range">
14063              <p>1 - 10</p>
14064            </td>
14065
14066            <td class="entry_tags">
14067              <ul class="entry_tags">
14068                  <li><a href="#tag_FUTURE">FUTURE</a></li>
14069              </ul>
14070            </td>
14071
14072          </tr>
14073
14074
14075          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14076           <!-- end of entry -->
14077
14078
14079
14080      <!-- end of kind -->
14081      </tbody>
14082      <tr><td colspan="6" class="kind">static</td></tr>
14083
14084      <thead class="entries_header">
14085        <tr>
14086          <th class="th_name">Property Name</th>
14087          <th class="th_type">Type</th>
14088          <th class="th_description">Description</th>
14089          <th class="th_units">Units</th>
14090          <th class="th_range">Range</th>
14091          <th class="th_tags">Tags</th>
14092        </tr>
14093      </thead>
14094
14095      <tbody>
14096
14097
14098
14099
14100
14101
14102
14103
14104
14105
14106          <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
14107            <td class="entry_name
14108             " rowspan="5">
14109              android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
14110            </td>
14111            <td class="entry_type">
14112                <span class="entry_type_name">byte</span>
14113                <span class="entry_type_container">x</span>
14114
14115                <span class="entry_type_array">
14116                  n
14117                </span>
14118              <span class="entry_type_visibility"> [public as enumList]</span>
14119
14120
14121              <span class="entry_type_hwlevel">[limited] </span>
14122
14123
14124                <div class="entry_type_notes">list of enums</div>
14125
14126
14127            </td> <!-- entry_type -->
14128
14129            <td class="entry_description">
14130              <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
14131by this camera device.<wbr/></p>
14132            </td>
14133
14134            <td class="entry_units">
14135            </td>
14136
14137            <td class="entry_range">
14138              <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
14139            </td>
14140
14141            <td class="entry_tags">
14142              <ul class="entry_tags">
14143                  <li><a href="#tag_V1">V1</a></li>
14144                  <li><a href="#tag_REPROC">REPROC</a></li>
14145              </ul>
14146            </td>
14147
14148          </tr>
14149          <tr class="entries_header">
14150            <th class="th_details" colspan="5">Details</th>
14151          </tr>
14152          <tr class="entry_cont">
14153            <td class="entry_details" colspan="5">
14154              <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
14155<p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support
14156ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p>
14157<p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
14158            </td>
14159          </tr>
14160
14161          <tr class="entries_header">
14162            <th class="th_details" colspan="5">HAL Implementation Details</th>
14163          </tr>
14164          <tr class="entry_cont">
14165            <td class="entry_details" colspan="5">
14166              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
14167on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
14168That is,<wbr/> if the highest quality implementation on the camera device does not slow down
14169capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
14170            </td>
14171          </tr>
14172
14173          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14174           <!-- end of entry -->
14175
14176
14177
14178      <!-- end of kind -->
14179      </tbody>
14180      <tr><td colspan="6" class="kind">dynamic</td></tr>
14181
14182      <thead class="entries_header">
14183        <tr>
14184          <th class="th_name">Property Name</th>
14185          <th class="th_type">Type</th>
14186          <th class="th_description">Description</th>
14187          <th class="th_units">Units</th>
14188          <th class="th_range">Range</th>
14189          <th class="th_tags">Tags</th>
14190        </tr>
14191      </thead>
14192
14193      <tbody>
14194
14195
14196
14197
14198
14199
14200
14201
14202
14203
14204          <tr class="entry" id="dynamic_android.noiseReduction.mode">
14205            <td class="entry_name
14206             " rowspan="5">
14207              android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
14208            </td>
14209            <td class="entry_type">
14210                <span class="entry_type_name entry_type_name_enum">byte</span>
14211
14212              <span class="entry_type_visibility"> [public]</span>
14213
14214
14215              <span class="entry_type_hwlevel">[full] </span>
14216
14217
14218
14219                <ul class="entry_type_enum">
14220                  <li>
14221                    <span class="entry_type_enum_name">OFF</span>
14222                    <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
14223                  </li>
14224                  <li>
14225                    <span class="entry_type_enum_name">FAST</span>
14226                    <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
14227output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
14228relative to sensor.<wbr/></p></span>
14229                  </li>
14230                  <li>
14231                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
14232                    <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
14233rate relative to sensor output.<wbr/></p></span>
14234                  </li>
14235                  <li>
14236                    <span class="entry_type_enum_name">MINIMAL</span>
14237                    <span class="entry_type_enum_optional">[optional]</span>
14238                    <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
14239sensor output.<wbr/> </p></span>
14240                  </li>
14241                  <li>
14242                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
14243                    <span class="entry_type_enum_optional">[optional]</span>
14244                    <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
14245based 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>) or below have noise
14246reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no
14247noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction
14248for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality
14249is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/>
14250quality may improve from FAST).<wbr/></p>
14251<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
14252with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
14253high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
14254produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
14255high-resolution buffers must not have noise reduction applied to maximize efficiency of
14256preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
14257low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
14258applied for reasonable preview quality.<wbr/></p>
14259<p>This mode is guaranteed to be supported by devices that support either the
14260YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
14261(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
14262be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
14263                  </li>
14264                </ul>
14265
14266            </td> <!-- entry_type -->
14267
14268            <td class="entry_description">
14269              <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
14270            </td>
14271
14272            <td class="entry_units">
14273            </td>
14274
14275            <td class="entry_range">
14276              <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
14277            </td>
14278
14279            <td class="entry_tags">
14280              <ul class="entry_tags">
14281                  <li><a href="#tag_V1">V1</a></li>
14282                  <li><a href="#tag_REPROC">REPROC</a></li>
14283              </ul>
14284            </td>
14285
14286          </tr>
14287          <tr class="entries_header">
14288            <th class="th_details" colspan="5">Details</th>
14289          </tr>
14290          <tr class="entry_cont">
14291            <td class="entry_details" colspan="5">
14292              <p>The noise reduction algorithm attempts to improve image quality by removing
14293excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
14294<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
14295YUV domain.<wbr/></p>
14296<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
14297demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
14298This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
14299<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>
14300<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
14301will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
14302will use the highest-quality noise filtering algorithms,<wbr/>
14303even if it slows down capture rate.<wbr/> FAST means the camera device will not
14304slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
14305MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
14306Every output stream will have a similar amount of enhancement applied.<wbr/></p>
14307<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
14308buffer of high-resolution images during preview and reprocess image(s) from that buffer
14309into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
14310noise reduction to low-resolution streams (below maximum recording resolution) to maximize
14311preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
14312those will be reprocessed later if necessary.<wbr/></p>
14313<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
14314will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
14315may adjust the noise reduction parameters for best image quality based on the
14316<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
14317            </td>
14318          </tr>
14319
14320          <tr class="entries_header">
14321            <th class="th_details" colspan="5">HAL Implementation Details</th>
14322          </tr>
14323          <tr class="entry_cont">
14324            <td class="entry_details" colspan="5">
14325              <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
14326adjust the internal noise reduction parameters appropriately to get the best quality
14327images.<wbr/></p>
14328            </td>
14329          </tr>
14330
14331          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14332           <!-- end of entry -->
14333
14334
14335
14336      <!-- end of kind -->
14337      </tbody>
14338
14339  <!-- end of section -->
14340  <tr><td colspan="6" id="section_quirks" class="section">quirks</td></tr>
14341
14342
14343      <tr><td colspan="6" class="kind">static</td></tr>
14344
14345      <thead class="entries_header">
14346        <tr>
14347          <th class="th_name">Property Name</th>
14348          <th class="th_type">Type</th>
14349          <th class="th_description">Description</th>
14350          <th class="th_units">Units</th>
14351          <th class="th_range">Range</th>
14352          <th class="th_tags">Tags</th>
14353        </tr>
14354      </thead>
14355
14356      <tbody>
14357
14358
14359
14360
14361
14362
14363
14364
14365
14366
14367          <tr class="entry" id="static_android.quirks.meteringCropRegion">
14368            <td class="entry_name
14369                entry_name_deprecated
14370             " rowspan="3">
14371              android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
14372            </td>
14373            <td class="entry_type">
14374                <span class="entry_type_name">byte</span>
14375
14376              <span class="entry_type_visibility"> [system]</span>
14377
14378
14379
14380              <span class="entry_type_deprecated">[deprecated] </span>
14381
14382
14383
14384            </td> <!-- entry_type -->
14385
14386            <td class="entry_description">
14387              <p>If set to 1,<wbr/> the camera service does not
14388scale 'normalized' coordinates with respect to the crop
14389region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
14390and output (face rectangles).<wbr/></p>
14391            </td>
14392
14393            <td class="entry_units">
14394            </td>
14395
14396            <td class="entry_range">
14397              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14398            </td>
14399
14400            <td class="entry_tags">
14401            </td>
14402
14403          </tr>
14404          <tr class="entries_header">
14405            <th class="th_details" colspan="5">Details</th>
14406          </tr>
14407          <tr class="entry_cont">
14408            <td class="entry_details" colspan="5">
14409              <p>Normalized coordinates refer to those in the
14410(-1000,<wbr/>1000) range mentioned in the
14411android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
14412<p>HAL implementations should instead always use and emit
14413sensor array-relative coordinates for all region data.<wbr/> Does
14414not need to be listed in static metadata.<wbr/> Support will be
14415removed in future versions of camera service.<wbr/></p>
14416            </td>
14417          </tr>
14418
14419
14420          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14421           <!-- end of entry -->
14422
14423
14424          <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
14425            <td class="entry_name
14426                entry_name_deprecated
14427             " rowspan="3">
14428              android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
14429            </td>
14430            <td class="entry_type">
14431                <span class="entry_type_name">byte</span>
14432
14433              <span class="entry_type_visibility"> [system]</span>
14434
14435
14436
14437              <span class="entry_type_deprecated">[deprecated] </span>
14438
14439
14440
14441            </td> <!-- entry_type -->
14442
14443            <td class="entry_description">
14444              <p>If set to 1,<wbr/> then the camera service always
14445switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
14446trigger.<wbr/></p>
14447            </td>
14448
14449            <td class="entry_units">
14450            </td>
14451
14452            <td class="entry_range">
14453              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14454            </td>
14455
14456            <td class="entry_tags">
14457            </td>
14458
14459          </tr>
14460          <tr class="entries_header">
14461            <th class="th_details" colspan="5">Details</th>
14462          </tr>
14463          <tr class="entry_cont">
14464            <td class="entry_details" colspan="5">
14465              <p>HAL implementations should implement AF trigger
14466modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
14467CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
14468not need to be listed in static metadata.<wbr/> Support will be
14469removed in future versions of camera service</p>
14470            </td>
14471          </tr>
14472
14473
14474          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14475           <!-- end of entry -->
14476
14477
14478          <tr class="entry" id="static_android.quirks.useZslFormat">
14479            <td class="entry_name
14480                entry_name_deprecated
14481             " rowspan="3">
14482              android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
14483            </td>
14484            <td class="entry_type">
14485                <span class="entry_type_name">byte</span>
14486
14487              <span class="entry_type_visibility"> [system]</span>
14488
14489
14490
14491              <span class="entry_type_deprecated">[deprecated] </span>
14492
14493
14494
14495            </td> <!-- entry_type -->
14496
14497            <td class="entry_description">
14498              <p>If set to 1,<wbr/> the camera service uses
14499CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
14500HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
14501shutter lag stream</p>
14502            </td>
14503
14504            <td class="entry_units">
14505            </td>
14506
14507            <td class="entry_range">
14508              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14509            </td>
14510
14511            <td class="entry_tags">
14512            </td>
14513
14514          </tr>
14515          <tr class="entries_header">
14516            <th class="th_details" colspan="5">Details</th>
14517          </tr>
14518          <tr class="entry_cont">
14519            <td class="entry_details" colspan="5">
14520              <p>HAL implementations should use gralloc usage flags
14521to determine that a stream will be used for
14522zero-shutter-lag,<wbr/> instead of relying on an explicit
14523format setting.<wbr/> Does not need to be listed in static
14524metadata.<wbr/> Support will be removed in future versions of
14525camera service.<wbr/></p>
14526            </td>
14527          </tr>
14528
14529
14530          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14531           <!-- end of entry -->
14532
14533
14534          <tr class="entry" id="static_android.quirks.usePartialResult">
14535            <td class="entry_name
14536                entry_name_deprecated
14537             " rowspan="5">
14538              android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
14539            </td>
14540            <td class="entry_type">
14541                <span class="entry_type_name">byte</span>
14542
14543              <span class="entry_type_visibility"> [hidden]</span>
14544
14545
14546
14547              <span class="entry_type_deprecated">[deprecated] </span>
14548
14549
14550
14551            </td> <!-- entry_type -->
14552
14553            <td class="entry_description">
14554              <p>If set to 1,<wbr/> the HAL will always split result
14555metadata for a single capture into multiple buffers,<wbr/>
14556returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
14557            </td>
14558
14559            <td class="entry_units">
14560            </td>
14561
14562            <td class="entry_range">
14563              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14564            </td>
14565
14566            <td class="entry_tags">
14567            </td>
14568
14569          </tr>
14570          <tr class="entries_header">
14571            <th class="th_details" colspan="5">Details</th>
14572          </tr>
14573          <tr class="entry_cont">
14574            <td class="entry_details" colspan="5">
14575              <p>Does not need to be listed in static
14576metadata.<wbr/> Support for partial results will be reworked in
14577future versions of camera service.<wbr/> This quirk will stop
14578working at that point; DO NOT USE without careful
14579consideration of future support.<wbr/></p>
14580            </td>
14581          </tr>
14582
14583          <tr class="entries_header">
14584            <th class="th_details" colspan="5">HAL Implementation Details</th>
14585          </tr>
14586          <tr class="entry_cont">
14587            <td class="entry_details" colspan="5">
14588              <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
14589for information on how to implement partial results.<wbr/></p>
14590            </td>
14591          </tr>
14592
14593          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14594           <!-- end of entry -->
14595
14596
14597
14598      <!-- end of kind -->
14599      </tbody>
14600      <tr><td colspan="6" class="kind">dynamic</td></tr>
14601
14602      <thead class="entries_header">
14603        <tr>
14604          <th class="th_name">Property Name</th>
14605          <th class="th_type">Type</th>
14606          <th class="th_description">Description</th>
14607          <th class="th_units">Units</th>
14608          <th class="th_range">Range</th>
14609          <th class="th_tags">Tags</th>
14610        </tr>
14611      </thead>
14612
14613      <tbody>
14614
14615
14616
14617
14618
14619
14620
14621
14622
14623
14624          <tr class="entry" id="dynamic_android.quirks.partialResult">
14625            <td class="entry_name
14626                entry_name_deprecated
14627             " rowspan="5">
14628              android.<wbr/>quirks.<wbr/>partial<wbr/>Result
14629            </td>
14630            <td class="entry_type">
14631                <span class="entry_type_name entry_type_name_enum">byte</span>
14632
14633              <span class="entry_type_visibility"> [hidden as boolean]</span>
14634
14635
14636
14637              <span class="entry_type_deprecated">[deprecated] </span>
14638
14639
14640                <ul class="entry_type_enum">
14641                  <li>
14642                    <span class="entry_type_enum_name">FINAL</span>
14643                    <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
14644for this capture.<wbr/></p></span>
14645                  </li>
14646                  <li>
14647                    <span class="entry_type_enum_name">PARTIAL</span>
14648                    <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
14649capture.<wbr/> More result buffers for this capture will be sent
14650by the camera device,<wbr/> the last of which will be marked
14651FINAL.<wbr/></p></span>
14652                  </li>
14653                </ul>
14654
14655            </td> <!-- entry_type -->
14656
14657            <td class="entry_description">
14658              <p>Whether a result given to the framework is the
14659final one for the capture,<wbr/> or only a partial that contains a
14660subset of the full set of dynamic metadata
14661values.<wbr/></p>
14662            </td>
14663
14664            <td class="entry_units">
14665            </td>
14666
14667            <td class="entry_range">
14668              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14669              <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
14670            </td>
14671
14672            <td class="entry_tags">
14673            </td>
14674
14675          </tr>
14676          <tr class="entries_header">
14677            <th class="th_details" colspan="5">Details</th>
14678          </tr>
14679          <tr class="entry_cont">
14680            <td class="entry_details" colspan="5">
14681              <p>The entries in the result metadata buffers for a
14682single capture may not overlap,<wbr/> except for this entry.<wbr/> The
14683FINAL buffers must retain FIFO ordering relative to the
14684requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
14685always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
14686before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
14687in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
14688capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
14689only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
14690            </td>
14691          </tr>
14692
14693          <tr class="entries_header">
14694            <th class="th_details" colspan="5">HAL Implementation Details</th>
14695          </tr>
14696          <tr class="entry_cont">
14697            <td class="entry_details" colspan="5">
14698              <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
14699for information on how to implement partial results.<wbr/></p>
14700            </td>
14701          </tr>
14702
14703          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14704           <!-- end of entry -->
14705
14706
14707
14708      <!-- end of kind -->
14709      </tbody>
14710
14711  <!-- end of section -->
14712  <tr><td colspan="6" id="section_request" class="section">request</td></tr>
14713
14714
14715      <tr><td colspan="6" class="kind">controls</td></tr>
14716
14717      <thead class="entries_header">
14718        <tr>
14719          <th class="th_name">Property Name</th>
14720          <th class="th_type">Type</th>
14721          <th class="th_description">Description</th>
14722          <th class="th_units">Units</th>
14723          <th class="th_range">Range</th>
14724          <th class="th_tags">Tags</th>
14725        </tr>
14726      </thead>
14727
14728      <tbody>
14729
14730
14731
14732
14733
14734
14735
14736
14737
14738
14739          <tr class="entry" id="controls_android.request.frameCount">
14740            <td class="entry_name
14741                entry_name_deprecated
14742             " rowspan="1">
14743              android.<wbr/>request.<wbr/>frame<wbr/>Count
14744            </td>
14745            <td class="entry_type">
14746                <span class="entry_type_name">int32</span>
14747
14748              <span class="entry_type_visibility"> [system]</span>
14749
14750
14751
14752              <span class="entry_type_deprecated">[deprecated] </span>
14753
14754
14755
14756            </td> <!-- entry_type -->
14757
14758            <td class="entry_description">
14759              <p>A frame counter set by the framework.<wbr/> Must
14760be maintained unchanged in output frame.<wbr/> This value monotonically
14761increases with every new result (that is,<wbr/> each new result has a unique
14762frameCount value).<wbr/></p>
14763            </td>
14764
14765            <td class="entry_units">
14766              incrementing integer
14767            </td>
14768
14769            <td class="entry_range">
14770              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14771              <p>Any int.<wbr/></p>
14772            </td>
14773
14774            <td class="entry_tags">
14775            </td>
14776
14777          </tr>
14778
14779
14780          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14781           <!-- end of entry -->
14782
14783
14784          <tr class="entry" id="controls_android.request.id">
14785            <td class="entry_name
14786             " rowspan="1">
14787              android.<wbr/>request.<wbr/>id
14788            </td>
14789            <td class="entry_type">
14790                <span class="entry_type_name">int32</span>
14791
14792              <span class="entry_type_visibility"> [hidden]</span>
14793
14794
14795
14796
14797
14798
14799            </td> <!-- entry_type -->
14800
14801            <td class="entry_description">
14802              <p>An application-specified ID for the current
14803request.<wbr/> Must be maintained unchanged in output
14804frame</p>
14805            </td>
14806
14807            <td class="entry_units">
14808              arbitrary integer assigned by application
14809            </td>
14810
14811            <td class="entry_range">
14812              <p>Any int</p>
14813            </td>
14814
14815            <td class="entry_tags">
14816              <ul class="entry_tags">
14817                  <li><a href="#tag_V1">V1</a></li>
14818              </ul>
14819            </td>
14820
14821          </tr>
14822
14823
14824          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14825           <!-- end of entry -->
14826
14827
14828          <tr class="entry" id="controls_android.request.inputStreams">
14829            <td class="entry_name
14830                entry_name_deprecated
14831             " rowspan="3">
14832              android.<wbr/>request.<wbr/>input<wbr/>Streams
14833            </td>
14834            <td class="entry_type">
14835                <span class="entry_type_name">int32</span>
14836                <span class="entry_type_container">x</span>
14837
14838                <span class="entry_type_array">
14839                  n
14840                </span>
14841              <span class="entry_type_visibility"> [system]</span>
14842
14843
14844
14845              <span class="entry_type_deprecated">[deprecated] </span>
14846
14847
14848
14849            </td> <!-- entry_type -->
14850
14851            <td class="entry_description">
14852              <p>List which camera reprocess stream is used
14853for the source of reprocessing data.<wbr/></p>
14854            </td>
14855
14856            <td class="entry_units">
14857              List of camera reprocess stream IDs
14858            </td>
14859
14860            <td class="entry_range">
14861              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14862              <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
14863            </td>
14864
14865            <td class="entry_tags">
14866              <ul class="entry_tags">
14867                  <li><a href="#tag_HAL2">HAL2</a></li>
14868              </ul>
14869            </td>
14870
14871          </tr>
14872          <tr class="entries_header">
14873            <th class="th_details" colspan="5">Details</th>
14874          </tr>
14875          <tr class="entry_cont">
14876            <td class="entry_details" colspan="5">
14877              <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
14878REPROCESS.<wbr/> Ignored otherwise</p>
14879            </td>
14880          </tr>
14881
14882
14883          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14884           <!-- end of entry -->
14885
14886
14887          <tr class="entry" id="controls_android.request.metadataMode">
14888            <td class="entry_name
14889             " rowspan="1">
14890              android.<wbr/>request.<wbr/>metadata<wbr/>Mode
14891            </td>
14892            <td class="entry_type">
14893                <span class="entry_type_name entry_type_name_enum">byte</span>
14894
14895              <span class="entry_type_visibility"> [system]</span>
14896
14897
14898
14899
14900
14901                <ul class="entry_type_enum">
14902                  <li>
14903                    <span class="entry_type_enum_name">NONE</span>
14904                    <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
14905for application-bound buffer data.<wbr/> If no
14906application-bound streams exist,<wbr/> no frame should be
14907placed in the output frame queue.<wbr/> If such streams
14908exist,<wbr/> a frame should be placed on the output queue
14909with null metadata but with the necessary output buffer
14910information.<wbr/> Timestamp information should still be
14911included with any output stream buffers</p></span>
14912                  </li>
14913                  <li>
14914                    <span class="entry_type_enum_name">FULL</span>
14915                    <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
14916only be produced if they are separately
14917enabled</p></span>
14918                  </li>
14919                </ul>
14920
14921            </td> <!-- entry_type -->
14922
14923            <td class="entry_description">
14924              <p>How much metadata to produce on
14925output</p>
14926            </td>
14927
14928            <td class="entry_units">
14929            </td>
14930
14931            <td class="entry_range">
14932            </td>
14933
14934            <td class="entry_tags">
14935              <ul class="entry_tags">
14936                  <li><a href="#tag_FUTURE">FUTURE</a></li>
14937              </ul>
14938            </td>
14939
14940          </tr>
14941
14942
14943          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14944           <!-- end of entry -->
14945
14946
14947          <tr class="entry" id="controls_android.request.outputStreams">
14948            <td class="entry_name
14949                entry_name_deprecated
14950             " rowspan="3">
14951              android.<wbr/>request.<wbr/>output<wbr/>Streams
14952            </td>
14953            <td class="entry_type">
14954                <span class="entry_type_name">int32</span>
14955                <span class="entry_type_container">x</span>
14956
14957                <span class="entry_type_array">
14958                  n
14959                </span>
14960              <span class="entry_type_visibility"> [system]</span>
14961
14962
14963
14964              <span class="entry_type_deprecated">[deprecated] </span>
14965
14966
14967
14968            </td> <!-- entry_type -->
14969
14970            <td class="entry_description">
14971              <p>Lists which camera output streams image data
14972from this capture must be sent to</p>
14973            </td>
14974
14975            <td class="entry_units">
14976              List of camera stream IDs
14977            </td>
14978
14979            <td class="entry_range">
14980              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14981              <p>List must only include streams that have been
14982created</p>
14983            </td>
14984
14985            <td class="entry_tags">
14986              <ul class="entry_tags">
14987                  <li><a href="#tag_HAL2">HAL2</a></li>
14988              </ul>
14989            </td>
14990
14991          </tr>
14992          <tr class="entries_header">
14993            <th class="th_details" colspan="5">Details</th>
14994          </tr>
14995          <tr class="entry_cont">
14996            <td class="entry_details" colspan="5">
14997              <p>If no output streams are listed,<wbr/> then the image
14998data should simply be discarded.<wbr/> The image data must
14999still be captured for metadata and statistics production,<wbr/>
15000and the lens and flash must operate as requested.<wbr/></p>
15001            </td>
15002          </tr>
15003
15004
15005          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15006           <!-- end of entry -->
15007
15008
15009          <tr class="entry" id="controls_android.request.type">
15010            <td class="entry_name
15011                entry_name_deprecated
15012             " rowspan="1">
15013              android.<wbr/>request.<wbr/>type
15014            </td>
15015            <td class="entry_type">
15016                <span class="entry_type_name entry_type_name_enum">byte</span>
15017
15018              <span class="entry_type_visibility"> [system]</span>
15019
15020
15021
15022              <span class="entry_type_deprecated">[deprecated] </span>
15023
15024
15025                <ul class="entry_type_enum">
15026                  <li>
15027                    <span class="entry_type_enum_name">CAPTURE</span>
15028                    <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
15029and process it according to the
15030settings</p></span>
15031                  </li>
15032                  <li>
15033                    <span class="entry_type_enum_name">REPROCESS</span>
15034                    <span class="entry_type_enum_notes"><p>Process previously captured data; the
15035<a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
15036source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
15037needed for reprocessing with [RP]</p></span>
15038                  </li>
15039                </ul>
15040
15041            </td> <!-- entry_type -->
15042
15043            <td class="entry_description">
15044              <p>The type of the request; either CAPTURE or
15045REPROCESS.<wbr/> For HAL3,<wbr/> this tag is redundant.<wbr/></p>
15046            </td>
15047
15048            <td class="entry_units">
15049            </td>
15050
15051            <td class="entry_range">
15052              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15053            </td>
15054
15055            <td class="entry_tags">
15056              <ul class="entry_tags">
15057                  <li><a href="#tag_HAL2">HAL2</a></li>
15058              </ul>
15059            </td>
15060
15061          </tr>
15062
15063
15064          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15065           <!-- end of entry -->
15066
15067
15068
15069      <!-- end of kind -->
15070      </tbody>
15071      <tr><td colspan="6" class="kind">static</td></tr>
15072
15073      <thead class="entries_header">
15074        <tr>
15075          <th class="th_name">Property Name</th>
15076          <th class="th_type">Type</th>
15077          <th class="th_description">Description</th>
15078          <th class="th_units">Units</th>
15079          <th class="th_range">Range</th>
15080          <th class="th_tags">Tags</th>
15081        </tr>
15082      </thead>
15083
15084      <tbody>
15085
15086
15087
15088
15089
15090
15091
15092
15093
15094
15095          <tr class="entry" id="static_android.request.maxNumOutputStreams">
15096            <td class="entry_name
15097             " rowspan="3">
15098              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
15099            </td>
15100            <td class="entry_type">
15101                <span class="entry_type_name">int32</span>
15102                <span class="entry_type_container">x</span>
15103
15104                <span class="entry_type_array">
15105                  3
15106                </span>
15107              <span class="entry_type_visibility"> [ndk_public]</span>
15108
15109
15110              <span class="entry_type_hwlevel">[legacy] </span>
15111
15112
15113
15114
15115            </td> <!-- entry_type -->
15116
15117            <td class="entry_description">
15118              <p>The maximum numbers of different types of output streams
15119that can be configured and used simultaneously by a camera device.<wbr/></p>
15120            </td>
15121
15122            <td class="entry_units">
15123            </td>
15124
15125            <td class="entry_range">
15126              <p>For processed (and stalling) format streams,<wbr/> &gt;= 1.<wbr/></p>
15127<p>For Raw format (either stalling or non-stalling) streams,<wbr/> &gt;= 0.<wbr/></p>
15128<p>For processed (but not stalling) format streams,<wbr/> &gt;= 3
15129for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
15130&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>
15131            </td>
15132
15133            <td class="entry_tags">
15134              <ul class="entry_tags">
15135                  <li><a href="#tag_BC">BC</a></li>
15136              </ul>
15137            </td>
15138
15139          </tr>
15140          <tr class="entries_header">
15141            <th class="th_details" colspan="5">Details</th>
15142          </tr>
15143          <tr class="entry_cont">
15144            <td class="entry_details" colspan="5">
15145              <p>This is a 3 element tuple that contains the max number of output simultaneous
15146streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
15147formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
15148stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
15149number 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>
15150<p>This lists the upper bound of the number of output streams supported by
15151the camera device.<wbr/> Using more streams simultaneously may require more hardware and
15152CPU resources that will consume more power.<wbr/> The image format for an output stream can
15153be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
15154The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
15155into the 3 stream types as below:</p>
15156<ul>
15157<li>Processed (but stalling): any non-RAW format with a stallDurations &gt; 0.<wbr/>
15158  Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
15159<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 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li>
15160<li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/>
15161  Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
15162  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a>,<wbr/> or
15163  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a>.<wbr/></li>
15164</ul>
15165            </td>
15166          </tr>
15167
15168
15169          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15170           <!-- end of entry -->
15171
15172
15173          <tr class="entry" id="static_android.request.maxNumOutputRaw">
15174            <td class="entry_name
15175             " rowspan="3">
15176              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
15177            </td>
15178            <td class="entry_type">
15179                <span class="entry_type_name">int32</span>
15180
15181              <span class="entry_type_visibility"> [java_public]</span>
15182
15183              <span class="entry_type_synthetic">[synthetic] </span>
15184
15185              <span class="entry_type_hwlevel">[legacy] </span>
15186
15187
15188
15189
15190            </td> <!-- entry_type -->
15191
15192            <td class="entry_description">
15193              <p>The maximum numbers of different types of output streams
15194that can be configured and used simultaneously by a camera device
15195for any <code>RAW</code> formats.<wbr/></p>
15196            </td>
15197
15198            <td class="entry_units">
15199            </td>
15200
15201            <td class="entry_range">
15202              <p>&gt;= 0</p>
15203            </td>
15204
15205            <td class="entry_tags">
15206            </td>
15207
15208          </tr>
15209          <tr class="entries_header">
15210            <th class="th_details" colspan="5">Details</th>
15211          </tr>
15212          <tr class="entry_cont">
15213            <td class="entry_details" colspan="5">
15214              <p>This value contains the max number of output simultaneous
15215streams from the raw sensor.<wbr/></p>
15216<p>This lists the upper bound of the number of output streams supported by
15217the camera device.<wbr/> Using more streams simultaneously may require more hardware and
15218CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
15219be 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>
15220<p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
15221<ul>
15222<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
15223<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
15224<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
15225</ul>
15226<p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
15227never support raw streams.<wbr/></p>
15228            </td>
15229          </tr>
15230
15231
15232          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15233           <!-- end of entry -->
15234
15235
15236          <tr class="entry" id="static_android.request.maxNumOutputProc">
15237            <td class="entry_name
15238             " rowspan="3">
15239              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
15240            </td>
15241            <td class="entry_type">
15242                <span class="entry_type_name">int32</span>
15243
15244              <span class="entry_type_visibility"> [java_public]</span>
15245
15246              <span class="entry_type_synthetic">[synthetic] </span>
15247
15248              <span class="entry_type_hwlevel">[legacy] </span>
15249
15250
15251
15252
15253            </td> <!-- entry_type -->
15254
15255            <td class="entry_description">
15256              <p>The maximum numbers of different types of output streams
15257that can be configured and used simultaneously by a camera device
15258for any processed (but not-stalling) formats.<wbr/></p>
15259            </td>
15260
15261            <td class="entry_units">
15262            </td>
15263
15264            <td class="entry_range">
15265              <p>&gt;= 3
15266for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
15267&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>
15268            </td>
15269
15270            <td class="entry_tags">
15271            </td>
15272
15273          </tr>
15274          <tr class="entries_header">
15275            <th class="th_details" colspan="5">Details</th>
15276          </tr>
15277          <tr class="entry_cont">
15278            <td class="entry_details" colspan="5">
15279              <p>This value contains the max number of output simultaneous
15280streams for any processed (but not-stalling) formats.<wbr/></p>
15281<p>This lists the upper bound of the number of output streams supported by
15282the camera device.<wbr/> Using more streams simultaneously may require more hardware and
15283CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
15284be 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>
15285<p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
15286Typically:</p>
15287<ul>
15288<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li>
15289<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li>
15290<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li>
15291<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>
15292</ul>
15293<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
15294processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
15295<p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
15296            </td>
15297          </tr>
15298
15299
15300          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15301           <!-- end of entry -->
15302
15303
15304          <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
15305            <td class="entry_name
15306             " rowspan="3">
15307              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
15308            </td>
15309            <td class="entry_type">
15310                <span class="entry_type_name">int32</span>
15311
15312              <span class="entry_type_visibility"> [java_public]</span>
15313
15314              <span class="entry_type_synthetic">[synthetic] </span>
15315
15316              <span class="entry_type_hwlevel">[legacy] </span>
15317
15318
15319
15320
15321            </td> <!-- entry_type -->
15322
15323            <td class="entry_description">
15324              <p>The maximum numbers of different types of output streams
15325that can be configured and used simultaneously by a camera device
15326for any processed (and stalling) formats.<wbr/></p>
15327            </td>
15328
15329            <td class="entry_units">
15330            </td>
15331
15332            <td class="entry_range">
15333              <p>&gt;= 1</p>
15334            </td>
15335
15336            <td class="entry_tags">
15337            </td>
15338
15339          </tr>
15340          <tr class="entries_header">
15341            <th class="th_details" colspan="5">Details</th>
15342          </tr>
15343          <tr class="entry_cont">
15344            <td class="entry_details" colspan="5">
15345              <p>This value contains the max number of output simultaneous
15346streams for any processed (but not-stalling) formats.<wbr/></p>
15347<p>This lists the upper bound of the number of output streams supported by
15348the camera device.<wbr/> Using more streams simultaneously may require more hardware and
15349CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
15350be 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>
15351<p>A processed and stalling format is defined as any non-RAW format with a stallDurations
15352&gt; 0.<wbr/>  Typically only the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a> is a
15353stalling format.<wbr/></p>
15354<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
15355processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
15356<p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
15357            </td>
15358          </tr>
15359
15360
15361          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15362           <!-- end of entry -->
15363
15364
15365          <tr class="entry" id="static_android.request.maxNumReprocessStreams">
15366            <td class="entry_name
15367                entry_name_deprecated
15368             " rowspan="3">
15369              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
15370            </td>
15371            <td class="entry_type">
15372                <span class="entry_type_name">int32</span>
15373                <span class="entry_type_container">x</span>
15374
15375                <span class="entry_type_array">
15376                  1
15377                </span>
15378              <span class="entry_type_visibility"> [system]</span>
15379
15380
15381
15382              <span class="entry_type_deprecated">[deprecated] </span>
15383
15384
15385
15386            </td> <!-- entry_type -->
15387
15388            <td class="entry_description">
15389              <p>How many reprocessing streams of any type
15390can be allocated at the same time.<wbr/></p>
15391            </td>
15392
15393            <td class="entry_units">
15394            </td>
15395
15396            <td class="entry_range">
15397              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15398              <p>&gt;= 0</p>
15399            </td>
15400
15401            <td class="entry_tags">
15402              <ul class="entry_tags">
15403                  <li><a href="#tag_HAL2">HAL2</a></li>
15404              </ul>
15405            </td>
15406
15407          </tr>
15408          <tr class="entries_header">
15409            <th class="th_details" colspan="5">Details</th>
15410          </tr>
15411          <tr class="entry_cont">
15412            <td class="entry_details" colspan="5">
15413              <p>Only used by HAL2.<wbr/>x.<wbr/></p>
15414<p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
15415            </td>
15416          </tr>
15417
15418
15419          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15420           <!-- end of entry -->
15421
15422
15423          <tr class="entry" id="static_android.request.maxNumInputStreams">
15424            <td class="entry_name
15425             " rowspan="5">
15426              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
15427            </td>
15428            <td class="entry_type">
15429                <span class="entry_type_name">int32</span>
15430
15431              <span class="entry_type_visibility"> [public]</span>
15432
15433
15434              <span class="entry_type_hwlevel">[full] </span>
15435
15436
15437
15438
15439            </td> <!-- entry_type -->
15440
15441            <td class="entry_description">
15442              <p>The maximum numbers of any type of input streams
15443that can be configured and used simultaneously by a camera device.<wbr/></p>
15444            </td>
15445
15446            <td class="entry_units">
15447            </td>
15448
15449            <td class="entry_range">
15450              <p>0 or 1.<wbr/></p>
15451            </td>
15452
15453            <td class="entry_tags">
15454              <ul class="entry_tags">
15455                  <li><a href="#tag_REPROC">REPROC</a></li>
15456              </ul>
15457            </td>
15458
15459          </tr>
15460          <tr class="entries_header">
15461            <th class="th_details" colspan="5">Details</th>
15462          </tr>
15463          <tr class="entry_cont">
15464            <td class="entry_details" colspan="5">
15465              <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
15466<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
15467input stream,<wbr/> there must be at least one output stream configured to to receive the
15468reprocessed images.<wbr/></p>
15469<p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
15470only the input buffer will be used to produce these output stream buffers,<wbr/> and a
15471new sensor image will not be captured.<wbr/></p>
15472<p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
15473stream image format will be PRIVATE,<wbr/> the associated output stream image format
15474should be JPEG.<wbr/></p>
15475            </td>
15476          </tr>
15477
15478          <tr class="entries_header">
15479            <th class="th_details" colspan="5">HAL Implementation Details</th>
15480          </tr>
15481          <tr class="entry_cont">
15482            <td class="entry_details" colspan="5">
15483              <p>For the reprocessing flow and controls,<wbr/> see
15484hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
15485            </td>
15486          </tr>
15487
15488          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15489           <!-- end of entry -->
15490
15491
15492          <tr class="entry" id="static_android.request.pipelineMaxDepth">
15493            <td class="entry_name
15494             " rowspan="5">
15495              android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
15496            </td>
15497            <td class="entry_type">
15498                <span class="entry_type_name">byte</span>
15499
15500              <span class="entry_type_visibility"> [public]</span>
15501
15502
15503              <span class="entry_type_hwlevel">[legacy] </span>
15504
15505
15506
15507
15508            </td> <!-- entry_type -->
15509
15510            <td class="entry_description">
15511              <p>Specifies the number of maximum pipeline stages a frame
15512has to go through from when it's exposed to when it's available
15513to the framework.<wbr/></p>
15514            </td>
15515
15516            <td class="entry_units">
15517            </td>
15518
15519            <td class="entry_range">
15520            </td>
15521
15522            <td class="entry_tags">
15523            </td>
15524
15525          </tr>
15526          <tr class="entries_header">
15527            <th class="th_details" colspan="5">Details</th>
15528          </tr>
15529          <tr class="entry_cont">
15530            <td class="entry_details" colspan="5">
15531              <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
15532one stage to readout) from the sensor.<wbr/> The ISP then usually adds
15533its own stages to do custom HW processing.<wbr/> Further stages may be
15534added by SW processing.<wbr/></p>
15535<p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
15536processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
15537depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
15538the max pipeline depth.<wbr/></p>
15539<p>A pipeline depth of X stages is equivalent to a pipeline latency of
15540X frame intervals.<wbr/></p>
15541<p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/>
15542the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p>
15543            </td>
15544          </tr>
15545
15546          <tr class="entries_header">
15547            <th class="th_details" colspan="5">HAL Implementation Details</th>
15548          </tr>
15549          <tr class="entry_cont">
15550            <td class="entry_details" colspan="5">
15551              <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the
15552max batch sizes may be larger than 1.<wbr/></p>
15553            </td>
15554          </tr>
15555
15556          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15557           <!-- end of entry -->
15558
15559
15560          <tr class="entry" id="static_android.request.partialResultCount">
15561            <td class="entry_name
15562             " rowspan="3">
15563              android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
15564            </td>
15565            <td class="entry_type">
15566                <span class="entry_type_name">int32</span>
15567
15568              <span class="entry_type_visibility"> [public]</span>
15569
15570
15571
15572
15573
15574
15575            </td> <!-- entry_type -->
15576
15577            <td class="entry_description">
15578              <p>Defines how many sub-components
15579a result will be composed of.<wbr/></p>
15580            </td>
15581
15582            <td class="entry_units">
15583            </td>
15584
15585            <td class="entry_range">
15586              <p>&gt;= 1</p>
15587            </td>
15588
15589            <td class="entry_tags">
15590            </td>
15591
15592          </tr>
15593          <tr class="entries_header">
15594            <th class="th_details" colspan="5">Details</th>
15595          </tr>
15596          <tr class="entry_cont">
15597            <td class="entry_details" colspan="5">
15598              <p>In order to combat the pipeline latency,<wbr/> partial results
15599may be delivered to the application layer from the camera device as
15600soon as they are available.<wbr/></p>
15601<p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
15602results are not supported,<wbr/> and only the final TotalCaptureResult will
15603be produced by the camera device.<wbr/></p>
15604<p>A typical use case for this might be: after requesting an
15605auto-focus (AF) lock the new AF state might be available 50%
15606of the way through the pipeline.<wbr/>  The camera device could
15607then immediately dispatch this state via a partial result to
15608the application,<wbr/> and the rest of the metadata via later
15609partial results.<wbr/></p>
15610            </td>
15611          </tr>
15612
15613
15614          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15615           <!-- end of entry -->
15616
15617
15618          <tr class="entry" id="static_android.request.availableCapabilities">
15619            <td class="entry_name
15620             " rowspan="5">
15621              android.<wbr/>request.<wbr/>available<wbr/>Capabilities
15622            </td>
15623            <td class="entry_type">
15624                <span class="entry_type_name entry_type_name_enum">byte</span>
15625                <span class="entry_type_container">x</span>
15626
15627                <span class="entry_type_array">
15628                  n
15629                </span>
15630              <span class="entry_type_visibility"> [public]</span>
15631
15632
15633              <span class="entry_type_hwlevel">[legacy] </span>
15634
15635
15636
15637                <ul class="entry_type_enum">
15638                  <li>
15639                    <span class="entry_type_enum_name">BACKWARD_COMPATIBLE</span>
15640                    <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
15641device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
15642supports.<wbr/></p>
15643<p>This capability is listed by all normal devices,<wbr/> and
15644indicates that the camera device has a feature set
15645that's comparable to the baseline requirements for the
15646older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
15647<p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this
15648capability,<wbr/> indicating that they support only depth measurement,<wbr/>
15649not standard color output.<wbr/></p></span>
15650                  </li>
15651                  <li>
15652                    <span class="entry_type_enum_name">MANUAL_SENSOR</span>
15653                    <span class="entry_type_enum_optional">[optional]</span>
15654                    <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
15655as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
15656The camera device supports basic manual control of the sensor image
15657acquisition related stages.<wbr/> This means the following controls are
15658guaranteed to be supported:</p>
15659<ul>
15660<li>Manual frame duration control<ul>
15661<li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
15662<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
15663</ul>
15664</li>
15665<li>Manual exposure control<ul>
15666<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
15667<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
15668</ul>
15669</li>
15670<li>Manual sensitivity control<ul>
15671<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
15672<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
15673</ul>
15674</li>
15675<li>Manual lens control (if the lens is adjustable)<ul>
15676<li>android.<wbr/>lens.<wbr/>*</li>
15677</ul>
15678</li>
15679<li>Manual flash control (if a flash unit is present)<ul>
15680<li>android.<wbr/>flash.<wbr/>*</li>
15681</ul>
15682</li>
15683<li>Manual black level locking<ul>
15684<li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
15685</ul>
15686</li>
15687<li>Auto exposure lock<ul>
15688<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
15689</ul>
15690</li>
15691</ul>
15692<p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
15693device will accurately report the values applied by 3A in the
15694result.<wbr/></p>
15695<p>A given camera device may also support additional manual sensor controls,<wbr/>
15696but this capability only covers the above list of controls.<wbr/></p>
15697<p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
15698additionally return a min frame duration that is greater than
15699zero for each supported size-format combination.<wbr/></p></span>
15700                  </li>
15701                  <li>
15702                    <span class="entry_type_enum_name">MANUAL_POST_PROCESSING</span>
15703                    <span class="entry_type_enum_optional">[optional]</span>
15704                    <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
15705The camera device supports basic manual control of the image post-processing
15706stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
15707<ul>
15708<li>
15709<p>Manual tonemap control</p>
15710<ul>
15711<li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
15712<li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
15713<li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
15714<li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
15715<li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
15716</ul>
15717</li>
15718<li>
15719<p>Manual white balance control</p>
15720<ul>
15721<li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
15722<li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
15723</ul>
15724</li>
15725<li>Manual lens shading map control<ul>
15726<li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
15727<li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
15728<li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
15729<li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
15730</ul>
15731</li>
15732<li>Manual aberration correction control (if aberration correction is supported)<ul>
15733<li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
15734<li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
15735</ul>
15736</li>
15737<li>Auto white balance lock<ul>
15738<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
15739</ul>
15740</li>
15741</ul>
15742<p>If auto white balance is enabled,<wbr/> then the camera device
15743will accurately report the values applied by AWB in the result.<wbr/></p>
15744<p>A given camera device may also support additional post-processing
15745controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span>
15746                  </li>
15747                  <li>
15748                    <span class="entry_type_enum_name">RAW</span>
15749                    <span class="entry_type_enum_optional">[optional]</span>
15750                    <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
15751metadata for interpreting them.<wbr/></p>
15752<p>Devices supporting the RAW capability allow both for
15753saving DNG files,<wbr/> and for direct application processing of
15754raw sensor images.<wbr/></p>
15755<ul>
15756<li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
15757<li>The maximum available resolution for RAW_<wbr/>SENSOR streams
15758  will match either the value in
15759  <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
15760  <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>
15761<li>All DNG-related optional metadata entries are provided
15762  by the camera device.<wbr/></li>
15763</ul></span>
15764                  </li>
15765                  <li>
15766                    <span class="entry_type_enum_name">PRIVATE_REPROCESSING</span>
15767                    <span class="entry_type_enum_optional">[optional]</span>
15768                    <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
15769<ul>
15770<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>
15771<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/>
15772  that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of
15773  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>
15774<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
15775  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>
15776<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>
15777<li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop
15778  relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
15779<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both
15780  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and
15781  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
15782<li>The maximum available resolution for PRIVATE streams
15783  (both input/<wbr/>output) will match the maximum available
15784  resolution of JPEG streams.<wbr/></li>
15785<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
15786<li>Only below controls are effective for reprocessing requests and
15787  will be present in capture results,<wbr/> other controls in reprocess
15788  requests will be ignored by the camera device.<wbr/><ul>
15789<li>android.<wbr/>jpeg.<wbr/>*</li>
15790<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
15791<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
15792</ul>
15793</li>
15794<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
15795  <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>
15796</ul></span>
15797                  </li>
15798                  <li>
15799                    <span class="entry_type_enum_name">READ_SENSOR_SETTINGS</span>
15800                    <span class="entry_type_enum_optional">[optional]</span>
15801                    <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
15802the sensor controls while the built-in 3A algorithm is running.<wbr/>  This allows
15803reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
15804<p>The values reported for the following controls are guaranteed to be available
15805in the CaptureResult,<wbr/> including when 3A is enabled:</p>
15806<ul>
15807<li>Exposure control<ul>
15808<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
15809</ul>
15810</li>
15811<li>Sensitivity control<ul>
15812<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
15813</ul>
15814</li>
15815<li>Lens controls (if the lens is adjustable)<ul>
15816<li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
15817<li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
15818</ul>
15819</li>
15820</ul>
15821<p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
15822always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
15823                  </li>
15824                  <li>
15825                    <span class="entry_type_enum_name">BURST_CAPTURE</span>
15826                    <span class="entry_type_enum_optional">[optional]</span>
15827                    <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at &gt;= 20 frames per
15828second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set
15829to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at &gt;= 10 frames
15830per second.<wbr/>  Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum
15831resolution of the device,<wbr/> whichever is smaller.<wbr/></p>
15832<p>More specifically,<wbr/> this means that a size matching the camera device's active array
15833size is listed as a supported size for the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> format in either <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> or <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighResolutionOutputSizes">StreamConfigurationMap#getHighResolutionOutputSizes</a>,<wbr/>
15834with a minimum frame duration for that format and size of either &lt;= 1/<wbr/>20 s,<wbr/> or
15835&lt;= 1/<wbr/>10 s,<wbr/> respectively; and the <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a> entry
15836lists at least one FPS range where the minimum FPS is &gt;= 1 /<wbr/> minimumFrameDuration
15837for the maximum-size YUV_<wbr/>420_<wbr/>888 format.<wbr/>  If that maximum size is listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighResolutionOutputSizes">StreamConfigurationMap#getHighResolutionOutputSizes</a>,<wbr/>
15838then the list of resolutions for YUV_<wbr/>420_<wbr/>888 from <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> contains at
15839least one resolution &gt;= 8 megapixels,<wbr/> with a minimum frame duration of &lt;= 1/<wbr/>20
15840s.<wbr/></p>
15841<p>If the device supports the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a>,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a>,<wbr/> then those can also be captured at the same rate
15842as the maximum-size YUV_<wbr/>420_<wbr/>888 resolution is.<wbr/></p>
15843<p>If the device supports the PRIVATE_<wbr/>REPROCESSING capability,<wbr/> then the same guarantees
15844as for the YUV_<wbr/>420_<wbr/>888 format also apply to the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> format.<wbr/></p>
15845<p>In addition,<wbr/> the <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> field is guaranted to have a value between 0
15846and 4,<wbr/> inclusive.<wbr/> <a href="#static_android.control.aeLockAvailable">android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available</a> and <a href="#static_android.control.awbLockAvailable">android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available</a>
15847are also guaranteed to be <code>true</code> so burst capture with these two locks ON yields
15848consistent image output.<wbr/></p></span>
15849                  </li>
15850                  <li>
15851                    <span class="entry_type_enum_name">YUV_REPROCESSING</span>
15852                    <span class="entry_type_enum_optional">[optional]</span>
15853                    <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
15854PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
15855following:</p>
15856<ul>
15857<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>
15858<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 format,<wbr/> that is,<wbr/>
15859  YUV_<wbr/>420_<wbr/>888 is included in the lists of formats returned by
15860  <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a> and
15861  <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputFormats">StreamConfigurationMap#getOutputFormats</a>.<wbr/></li>
15862<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
15863  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>
15864<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>
15865<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 drop
15866  relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
15867<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
15868  <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>
15869<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
15870  maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
15871<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
15872<li>Only the below controls are effective for reprocessing requests and will be present
15873  in capture results.<wbr/> The reprocess requests are from the original capture results that
15874  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>
15875  output buffers.<wbr/>  All other controls in the reprocess requests will be ignored by the
15876  camera device.<wbr/><ul>
15877<li>android.<wbr/>jpeg.<wbr/>*</li>
15878<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
15879<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
15880<li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
15881</ul>
15882</li>
15883<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
15884  <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>
15885</ul></span>
15886                  </li>
15887                  <li>
15888                    <span class="entry_type_enum_name">DEPTH_OUTPUT</span>
15889                    <span class="entry_type_enum_optional">[optional]</span>
15890                    <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
15891<p>This capability requires the camera device to support the following:</p>
15892<ul>
15893<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as an output format.<wbr/></li>
15894<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 optionally supported as an
15895  output format.<wbr/></li>
15896<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/>
15897  will list the following calibration entries in both
15898  <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> and
15899  <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
15900<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
15901<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
15902<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
15903<li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li>
15904</ul>
15905</li>
15906<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>
15907<li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
15908  normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16
15909  format.<wbr/></li>
15910</ul>
15911<p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
15912so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
15913should be accounted for (see
15914<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
15915On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
15916using a repeating burst is recommended,<wbr/> where a depth-output target is only included
15917once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
15918rate,<wbr/> including depth stall time.<wbr/></p></span>
15919                  </li>
15920                  <li>
15921                    <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO</span>
15922                    <span class="entry_type_enum_optional">[optional]</span>
15923                    <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate &gt;=120fps)
15924use case.<wbr/> The camera device will support high speed capture session created by
15925<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>,<wbr/> which
15926only accepts high speed request lists created by
15927<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/></p>
15928<p>A camera device can still support high speed video streaming by advertising the high speed
15929FPS 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 normal
15930capture request per frame control and synchronization requirements will apply to
15931the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability describes
15932the capability of a specialized operating mode with many limitations (see below),<wbr/> which
15933is only targeted at high speed video recording.<wbr/></p>
15934<p>The supported high speed video sizes and fps ranges are specified in
15935<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/>
15936To get desired output frame rates,<wbr/> the application is only allowed to select video size
15937and FPS range combinations provided by
15938<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/>
15939The fps range can be controlled via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
15940<p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
15941ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
15942controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
15943and post-processing parameters is possible.<wbr/> All other controls operate the
15944same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
15945android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
15946<ul>
15947<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
15948<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
15949<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
15950<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
15951<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
15952<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
15953<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
15954<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
15955<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
15956<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
15957</ul>
15958<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
15959<ul>
15960<li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not
15961work since aeMode is ON)</li>
15962<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
15963<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
15964<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li>
15965</ul>
15966<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
15967be lower than what camera can output,<wbr/> depending on the destination Surfaces for
15968the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
15969the application need check if the video encoder is capable of supporting the
15970high frame rate for a given video size,<wbr/> or it will end up with lower recording
15971frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame
15972rate will be bounded by the screen refresh rate.<wbr/></p>
15973<p>The camera device will only support up to 2 high speed simultaneous output surfaces
15974(preview and recording surfaces)
15975in this mode.<wbr/> Above controls will be effective only if all of below conditions are true:</p>
15976<ul>
15977<li>The application creates a camera capture session with no more than 2 surfaces via
15978<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The
15979targeted surfaces must be preview surface (either from
15980<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
15981recording surface(either from <a href="https://developer.android.com/reference/android/media/MediaRecorder.html#getSurface">MediaRecorder#getSurface</a> or
15982<a href="https://developer.android.com/reference/android/media/MediaCodec.html#createInputSurface">MediaCodec#createInputSurface</a>).<wbr/></li>
15983<li>The stream sizes are selected from the sizes reported by
15984<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li>
15985<li>The FPS ranges are selected from
15986<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/></li>
15987</ul>
15988<p>When above conditions are NOT satistied,<wbr/>
15989<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
15990will fail.<wbr/></p>
15991<p>Switching to a FPS range that has different maximum FPS may trigger some camera device
15992reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
15993the application avoids unnecessary maximum target FPS changes as much as possible
15994during high speed streaming.<wbr/></p></span>
15995                  </li>
15996                </ul>
15997
15998            </td> <!-- entry_type -->
15999
16000            <td class="entry_description">
16001              <p>List of capabilities that this camera device
16002advertises as fully supporting.<wbr/></p>
16003            </td>
16004
16005            <td class="entry_units">
16006            </td>
16007
16008            <td class="entry_range">
16009            </td>
16010
16011            <td class="entry_tags">
16012            </td>
16013
16014          </tr>
16015          <tr class="entries_header">
16016            <th class="th_details" colspan="5">Details</th>
16017          </tr>
16018          <tr class="entry_cont">
16019            <td class="entry_details" colspan="5">
16020              <p>A capability is a contract that the camera device makes in order
16021to be able to satisfy one or more use cases.<wbr/></p>
16022<p>Listing a capability guarantees that the whole set of features
16023required to support a common use will all be available.<wbr/></p>
16024<p>Using a subset of the functionality provided by an unsupported
16025capability may be possible on a specific camera device implementation;
16026to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
16027<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
16028<a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
16029<p>The following capabilities are guaranteed to be available on
16030<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
16031<ul>
16032<li>MANUAL_<wbr/>SENSOR</li>
16033<li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
16034</ul>
16035<p>Other capabilities may be available on either FULL or LIMITED
16036devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
16037            </td>
16038          </tr>
16039
16040          <tr class="entries_header">
16041            <th class="th_details" colspan="5">HAL Implementation Details</th>
16042          </tr>
16043          <tr class="entry_cont">
16044            <td class="entry_details" colspan="5">
16045              <p>Additional constraint details per-capability will be available
16046in the Compatibility Test Suite.<wbr/></p>
16047<p>Minimum baseline requirements required for the
16048BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
16049Instead refer to "BC" tags and the camera CTS tests in the
16050android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
16051<p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
16052<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
16053request and the result in order to be considered to be
16054capability-compliant.<wbr/></p>
16055<p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
16056then exposure time must be configurable via the request <em>and</em>
16057the actual exposure applied must be available via
16058the result.<wbr/></p>
16059<p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
16060<a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
16061<p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
16062hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
16063<p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
16064CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
16065<p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
16066YUV_<wbr/>REPROCESSING capability must support the
16067CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
16068<p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
16069<a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
16070<a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
16071<a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
16072addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
16073enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
16074if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
16075DEPTH).<wbr/></p>
16076            </td>
16077          </tr>
16078
16079          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16080           <!-- end of entry -->
16081
16082
16083          <tr class="entry" id="static_android.request.availableRequestKeys">
16084            <td class="entry_name
16085             " rowspan="5">
16086              android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
16087            </td>
16088            <td class="entry_type">
16089                <span class="entry_type_name">int32</span>
16090                <span class="entry_type_container">x</span>
16091
16092                <span class="entry_type_array">
16093                  n
16094                </span>
16095              <span class="entry_type_visibility"> [ndk_public]</span>
16096
16097
16098              <span class="entry_type_hwlevel">[legacy] </span>
16099
16100
16101
16102
16103            </td> <!-- entry_type -->
16104
16105            <td class="entry_description">
16106              <p>A list of all keys that the camera device has available
16107to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
16108            </td>
16109
16110            <td class="entry_units">
16111            </td>
16112
16113            <td class="entry_range">
16114            </td>
16115
16116            <td class="entry_tags">
16117            </td>
16118
16119          </tr>
16120          <tr class="entries_header">
16121            <th class="th_details" colspan="5">Details</th>
16122          </tr>
16123          <tr class="entry_cont">
16124            <td class="entry_details" colspan="5">
16125              <p>Attempting to set a key into a CaptureRequest that is not
16126listed here will result in an invalid request and will be rejected
16127by the camera device.<wbr/></p>
16128<p>This field can be used to query the feature set of a camera device
16129at a more granular level than capabilities.<wbr/> This is especially
16130important for optional keys that are not listed under any capability
16131in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
16132            </td>
16133          </tr>
16134
16135          <tr class="entries_header">
16136            <th class="th_details" colspan="5">HAL Implementation Details</th>
16137          </tr>
16138          <tr class="entry_cont">
16139            <td class="entry_details" colspan="5">
16140              <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
16141extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
16142<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
16143vendor extensions API and not against this field.<wbr/></p>
16144<p>The HAL must not consume any request tags that are not listed either
16145here or in the vendor tag list.<wbr/></p>
16146<p>The public camera2 API will always make the vendor tags visible
16147via
16148<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
16149            </td>
16150          </tr>
16151
16152          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16153           <!-- end of entry -->
16154
16155
16156          <tr class="entry" id="static_android.request.availableResultKeys">
16157            <td class="entry_name
16158             " rowspan="5">
16159              android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
16160            </td>
16161            <td class="entry_type">
16162                <span class="entry_type_name">int32</span>
16163                <span class="entry_type_container">x</span>
16164
16165                <span class="entry_type_array">
16166                  n
16167                </span>
16168              <span class="entry_type_visibility"> [ndk_public]</span>
16169
16170
16171              <span class="entry_type_hwlevel">[legacy] </span>
16172
16173
16174
16175
16176            </td> <!-- entry_type -->
16177
16178            <td class="entry_description">
16179              <p>A list of all keys that the camera device has available
16180to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>.<wbr/></p>
16181            </td>
16182
16183            <td class="entry_units">
16184            </td>
16185
16186            <td class="entry_range">
16187            </td>
16188
16189            <td class="entry_tags">
16190            </td>
16191
16192          </tr>
16193          <tr class="entries_header">
16194            <th class="th_details" colspan="5">Details</th>
16195          </tr>
16196          <tr class="entry_cont">
16197            <td class="entry_details" colspan="5">
16198              <p>Attempting to get a key from a CaptureResult that is not
16199listed here will always return a <code>null</code> value.<wbr/> Getting a key from
16200a CaptureResult that is listed here will generally never return a <code>null</code>
16201value.<wbr/></p>
16202<p>The following keys may return <code>null</code> unless they are enabled:</p>
16203<ul>
16204<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>
16205</ul>
16206<p>(Those sometimes-null keys will nevertheless be listed here
16207if they are available.<wbr/>)</p>
16208<p>This field can be used to query the feature set of a camera device
16209at a more granular level than capabilities.<wbr/> This is especially
16210important for optional keys that are not listed under any capability
16211in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
16212            </td>
16213          </tr>
16214
16215          <tr class="entries_header">
16216            <th class="th_details" colspan="5">HAL Implementation Details</th>
16217          </tr>
16218          <tr class="entry_cont">
16219            <td class="entry_details" colspan="5">
16220              <p>Tags listed here must always have an entry in the result metadata,<wbr/>
16221even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
16222matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
16223<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
16224extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
16225<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
16226vendor extensions API and not against this field.<wbr/></p>
16227<p>The HAL must not produce any result tags that are not listed either
16228here or in the vendor tag list.<wbr/></p>
16229<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>
16230            </td>
16231          </tr>
16232
16233          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16234           <!-- end of entry -->
16235
16236
16237          <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
16238            <td class="entry_name
16239             " rowspan="5">
16240              android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
16241            </td>
16242            <td class="entry_type">
16243                <span class="entry_type_name">int32</span>
16244                <span class="entry_type_container">x</span>
16245
16246                <span class="entry_type_array">
16247                  n
16248                </span>
16249              <span class="entry_type_visibility"> [ndk_public]</span>
16250
16251
16252              <span class="entry_type_hwlevel">[legacy] </span>
16253
16254
16255
16256
16257            </td> <!-- entry_type -->
16258
16259            <td class="entry_description">
16260              <p>A list of all keys that the camera device has available
16261to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
16262            </td>
16263
16264            <td class="entry_units">
16265            </td>
16266
16267            <td class="entry_range">
16268            </td>
16269
16270            <td class="entry_tags">
16271            </td>
16272
16273          </tr>
16274          <tr class="entries_header">
16275            <th class="th_details" colspan="5">Details</th>
16276          </tr>
16277          <tr class="entry_cont">
16278            <td class="entry_details" colspan="5">
16279              <p>This entry follows the same rules as
16280<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
16281CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
16282details.<wbr/></p>
16283            </td>
16284          </tr>
16285
16286          <tr class="entries_header">
16287            <th class="th_details" colspan="5">HAL Implementation Details</th>
16288          </tr>
16289          <tr class="entry_cont">
16290            <td class="entry_details" colspan="5">
16291              <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
16292even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
16293matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
16294<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
16295extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
16296<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
16297vendor extensions API and not against this field.<wbr/></p>
16298<p>The HAL must not have any tags in its static info that are not listed
16299either here or in the vendor tag list.<wbr/></p>
16300<p>The public camera2 API will always make the vendor tags visible
16301via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
16302            </td>
16303          </tr>
16304
16305          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16306           <!-- end of entry -->
16307
16308
16309
16310      <!-- end of kind -->
16311      </tbody>
16312      <tr><td colspan="6" class="kind">dynamic</td></tr>
16313
16314      <thead class="entries_header">
16315        <tr>
16316          <th class="th_name">Property Name</th>
16317          <th class="th_type">Type</th>
16318          <th class="th_description">Description</th>
16319          <th class="th_units">Units</th>
16320          <th class="th_range">Range</th>
16321          <th class="th_tags">Tags</th>
16322        </tr>
16323      </thead>
16324
16325      <tbody>
16326
16327
16328
16329
16330
16331
16332
16333
16334
16335
16336          <tr class="entry" id="dynamic_android.request.frameCount">
16337            <td class="entry_name
16338                entry_name_deprecated
16339             " rowspan="3">
16340              android.<wbr/>request.<wbr/>frame<wbr/>Count
16341            </td>
16342            <td class="entry_type">
16343                <span class="entry_type_name">int32</span>
16344
16345              <span class="entry_type_visibility"> [hidden]</span>
16346
16347
16348
16349              <span class="entry_type_deprecated">[deprecated] </span>
16350
16351
16352
16353            </td> <!-- entry_type -->
16354
16355            <td class="entry_description">
16356              <p>A frame counter set by the framework.<wbr/> This value monotonically
16357increases with every new result (that is,<wbr/> each new result has a unique
16358frameCount value).<wbr/></p>
16359            </td>
16360
16361            <td class="entry_units">
16362              count of frames
16363            </td>
16364
16365            <td class="entry_range">
16366              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16367              <p>&gt; 0</p>
16368            </td>
16369
16370            <td class="entry_tags">
16371            </td>
16372
16373          </tr>
16374          <tr class="entries_header">
16375            <th class="th_details" colspan="5">Details</th>
16376          </tr>
16377          <tr class="entry_cont">
16378            <td class="entry_details" colspan="5">
16379              <p>Reset on release()</p>
16380            </td>
16381          </tr>
16382
16383
16384          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16385           <!-- end of entry -->
16386
16387
16388          <tr class="entry" id="dynamic_android.request.id">
16389            <td class="entry_name
16390             " rowspan="1">
16391              android.<wbr/>request.<wbr/>id
16392            </td>
16393            <td class="entry_type">
16394                <span class="entry_type_name">int32</span>
16395
16396              <span class="entry_type_visibility"> [hidden]</span>
16397
16398
16399
16400
16401
16402
16403            </td> <!-- entry_type -->
16404
16405            <td class="entry_description">
16406              <p>An application-specified ID for the current
16407request.<wbr/> Must be maintained unchanged in output
16408frame</p>
16409            </td>
16410
16411            <td class="entry_units">
16412              arbitrary integer assigned by application
16413            </td>
16414
16415            <td class="entry_range">
16416              <p>Any int</p>
16417            </td>
16418
16419            <td class="entry_tags">
16420              <ul class="entry_tags">
16421                  <li><a href="#tag_V1">V1</a></li>
16422              </ul>
16423            </td>
16424
16425          </tr>
16426
16427
16428          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16429           <!-- end of entry -->
16430
16431
16432          <tr class="entry" id="dynamic_android.request.metadataMode">
16433            <td class="entry_name
16434             " rowspan="1">
16435              android.<wbr/>request.<wbr/>metadata<wbr/>Mode
16436            </td>
16437            <td class="entry_type">
16438                <span class="entry_type_name entry_type_name_enum">byte</span>
16439
16440              <span class="entry_type_visibility"> [system]</span>
16441
16442
16443
16444
16445
16446                <ul class="entry_type_enum">
16447                  <li>
16448                    <span class="entry_type_enum_name">NONE</span>
16449                    <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
16450for application-bound buffer data.<wbr/> If no
16451application-bound streams exist,<wbr/> no frame should be
16452placed in the output frame queue.<wbr/> If such streams
16453exist,<wbr/> a frame should be placed on the output queue
16454with null metadata but with the necessary output buffer
16455information.<wbr/> Timestamp information should still be
16456included with any output stream buffers</p></span>
16457                  </li>
16458                  <li>
16459                    <span class="entry_type_enum_name">FULL</span>
16460                    <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
16461only be produced if they are separately
16462enabled</p></span>
16463                  </li>
16464                </ul>
16465
16466            </td> <!-- entry_type -->
16467
16468            <td class="entry_description">
16469              <p>How much metadata to produce on
16470output</p>
16471            </td>
16472
16473            <td class="entry_units">
16474            </td>
16475
16476            <td class="entry_range">
16477            </td>
16478
16479            <td class="entry_tags">
16480              <ul class="entry_tags">
16481                  <li><a href="#tag_FUTURE">FUTURE</a></li>
16482              </ul>
16483            </td>
16484
16485          </tr>
16486
16487
16488          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16489           <!-- end of entry -->
16490
16491
16492          <tr class="entry" id="dynamic_android.request.outputStreams">
16493            <td class="entry_name
16494                entry_name_deprecated
16495             " rowspan="3">
16496              android.<wbr/>request.<wbr/>output<wbr/>Streams
16497            </td>
16498            <td class="entry_type">
16499                <span class="entry_type_name">int32</span>
16500                <span class="entry_type_container">x</span>
16501
16502                <span class="entry_type_array">
16503                  n
16504                </span>
16505              <span class="entry_type_visibility"> [system]</span>
16506
16507
16508
16509              <span class="entry_type_deprecated">[deprecated] </span>
16510
16511
16512
16513            </td> <!-- entry_type -->
16514
16515            <td class="entry_description">
16516              <p>Lists which camera output streams image data
16517from this capture must be sent to</p>
16518            </td>
16519
16520            <td class="entry_units">
16521              List of camera stream IDs
16522            </td>
16523
16524            <td class="entry_range">
16525              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16526              <p>List must only include streams that have been
16527created</p>
16528            </td>
16529
16530            <td class="entry_tags">
16531              <ul class="entry_tags">
16532                  <li><a href="#tag_HAL2">HAL2</a></li>
16533              </ul>
16534            </td>
16535
16536          </tr>
16537          <tr class="entries_header">
16538            <th class="th_details" colspan="5">Details</th>
16539          </tr>
16540          <tr class="entry_cont">
16541            <td class="entry_details" colspan="5">
16542              <p>If no output streams are listed,<wbr/> then the image
16543data should simply be discarded.<wbr/> The image data must
16544still be captured for metadata and statistics production,<wbr/>
16545and the lens and flash must operate as requested.<wbr/></p>
16546            </td>
16547          </tr>
16548
16549
16550          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16551           <!-- end of entry -->
16552
16553
16554          <tr class="entry" id="dynamic_android.request.pipelineDepth">
16555            <td class="entry_name
16556             " rowspan="5">
16557              android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
16558            </td>
16559            <td class="entry_type">
16560                <span class="entry_type_name">byte</span>
16561
16562              <span class="entry_type_visibility"> [public]</span>
16563
16564
16565              <span class="entry_type_hwlevel">[legacy] </span>
16566
16567
16568
16569
16570            </td> <!-- entry_type -->
16571
16572            <td class="entry_description">
16573              <p>Specifies the number of pipeline stages the frame went
16574through from when it was exposed to when the final completed result
16575was available to the framework.<wbr/></p>
16576            </td>
16577
16578            <td class="entry_units">
16579            </td>
16580
16581            <td class="entry_range">
16582              <p>&lt;= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
16583            </td>
16584
16585            <td class="entry_tags">
16586            </td>
16587
16588          </tr>
16589          <tr class="entries_header">
16590            <th class="th_details" colspan="5">Details</th>
16591          </tr>
16592          <tr class="entry_cont">
16593            <td class="entry_details" colspan="5">
16594              <p>Depending on what settings are used in the request,<wbr/> and
16595what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
16596and some pipeline stages skipped.<wbr/></p>
16597<p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
16598            </td>
16599          </tr>
16600
16601          <tr class="entries_header">
16602            <th class="th_details" colspan="5">HAL Implementation Details</th>
16603          </tr>
16604          <tr class="entry_cont">
16605            <td class="entry_details" colspan="5">
16606              <p>This value must always represent the accurate count of how many
16607pipeline stages were actually used.<wbr/></p>
16608            </td>
16609          </tr>
16610
16611          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16612           <!-- end of entry -->
16613
16614
16615
16616      <!-- end of kind -->
16617      </tbody>
16618
16619  <!-- end of section -->
16620  <tr><td colspan="6" id="section_scaler" class="section">scaler</td></tr>
16621
16622
16623      <tr><td colspan="6" class="kind">controls</td></tr>
16624
16625      <thead class="entries_header">
16626        <tr>
16627          <th class="th_name">Property Name</th>
16628          <th class="th_type">Type</th>
16629          <th class="th_description">Description</th>
16630          <th class="th_units">Units</th>
16631          <th class="th_range">Range</th>
16632          <th class="th_tags">Tags</th>
16633        </tr>
16634      </thead>
16635
16636      <tbody>
16637
16638
16639
16640
16641
16642
16643
16644
16645
16646
16647          <tr class="entry" id="controls_android.scaler.cropRegion">
16648            <td class="entry_name
16649             " rowspan="5">
16650              android.<wbr/>scaler.<wbr/>crop<wbr/>Region
16651            </td>
16652            <td class="entry_type">
16653                <span class="entry_type_name">int32</span>
16654                <span class="entry_type_container">x</span>
16655
16656                <span class="entry_type_array">
16657                  4
16658                </span>
16659              <span class="entry_type_visibility"> [public as rectangle]</span>
16660
16661
16662              <span class="entry_type_hwlevel">[legacy] </span>
16663
16664
16665
16666
16667            </td> <!-- entry_type -->
16668
16669            <td class="entry_description">
16670              <p>The desired region of the sensor to read out for this capture.<wbr/></p>
16671            </td>
16672
16673            <td class="entry_units">
16674              Pixel coordinates relative to
16675          android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
16676            </td>
16677
16678            <td class="entry_range">
16679            </td>
16680
16681            <td class="entry_tags">
16682              <ul class="entry_tags">
16683                  <li><a href="#tag_BC">BC</a></li>
16684              </ul>
16685            </td>
16686
16687          </tr>
16688          <tr class="entries_header">
16689            <th class="th_details" colspan="5">Details</th>
16690          </tr>
16691          <tr class="entry_cont">
16692            <td class="entry_details" colspan="5">
16693              <p>This control can be used to implement digital zoom.<wbr/></p>
16694<p>The crop region coordinate system is based off
16695<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with <code>(0,<wbr/> 0)</code> being the
16696top-left corner of the sensor active array.<wbr/></p>
16697<p>Output streams use this rectangle to produce their output,<wbr/>
16698cropping to a smaller region if necessary to maintain the
16699stream's aspect ratio,<wbr/> then scaling the sensor input to
16700match the output's configured resolution.<wbr/></p>
16701<p>The crop region is applied after the RAW to other color
16702space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
16703(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
16704croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
16705<p>For non-raw streams,<wbr/> any additional per-stream cropping will
16706be done to maximize the final pixel area of the stream.<wbr/></p>
16707<p>For example,<wbr/> if the crop region is set to a 4:3 aspect
16708ratio,<wbr/> then 4:3 streams will use the exact crop
16709region.<wbr/> 16:9 streams will further crop vertically
16710(letterbox).<wbr/></p>
16711<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
16712outputs will crop horizontally (pillarbox),<wbr/> and 16:9
16713streams will match exactly.<wbr/> These additional crops will
16714be centered within the crop region.<wbr/></p>
16715<p>The width and height of the crop region cannot
16716be set to be smaller than
16717<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
16718<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>
16719<p>The camera device may adjust the crop region to account
16720for rounding and other hardware requirements; the final
16721crop region used will be included in the output capture
16722result.<wbr/></p>
16723            </td>
16724          </tr>
16725
16726          <tr class="entries_header">
16727            <th class="th_details" colspan="5">HAL Implementation Details</th>
16728          </tr>
16729          <tr class="entry_cont">
16730            <td class="entry_details" colspan="5">
16731              <p>The output streams must maintain square pixels at all
16732times,<wbr/> no matter what the relative aspect ratios of the
16733crop region and the stream are.<wbr/>  Negative values for
16734corner are allowed for raw output if full pixel array is
16735larger than active pixel array.<wbr/> Width and height may be
16736rounded to nearest larger supportable width,<wbr/> especially
16737for raw output,<wbr/> where only a few fixed scales may be
16738possible.<wbr/></p>
16739<p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
16740size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
16741<ul>
16742<li>
16743<p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
16744array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
16745<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> to the sensor cropped pixel area size in this way:</p>
16746<ol>
16747<li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
16748cropped pixel area by (tx,<wbr/> ty),<wbr/>
16749where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
16750and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
16751(sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
16752<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
16753<li>Scale the width and height of requested cropRegion with scaling factor of
16754sensor<wbr/>Crop.<wbr/>width/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>width and sensor<wbr/>Crop.<wbr/>height/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>height
16755respectively.<wbr/>
16756Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
16757with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
16758follow the general cropping rule for this new cropRegion and effective active
16759array size.<wbr/></li>
16760</ol>
16761</li>
16762<li>
16763<p>The HAL must report the cropRegion with regard to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>
16764The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
16765The reported cropRegion may be slightly different with the requested cropRegion since
16766the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
16767hardware limitations.<wbr/></p>
16768</li>
16769</ul>
16770<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
16771            </td>
16772          </tr>
16773
16774          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16775           <!-- end of entry -->
16776
16777
16778
16779      <!-- end of kind -->
16780      </tbody>
16781      <tr><td colspan="6" class="kind">static</td></tr>
16782
16783      <thead class="entries_header">
16784        <tr>
16785          <th class="th_name">Property Name</th>
16786          <th class="th_type">Type</th>
16787          <th class="th_description">Description</th>
16788          <th class="th_units">Units</th>
16789          <th class="th_range">Range</th>
16790          <th class="th_tags">Tags</th>
16791        </tr>
16792      </thead>
16793
16794      <tbody>
16795
16796
16797
16798
16799
16800
16801
16802
16803
16804
16805          <tr class="entry" id="static_android.scaler.availableFormats">
16806            <td class="entry_name
16807                entry_name_deprecated
16808             " rowspan="5">
16809              android.<wbr/>scaler.<wbr/>available<wbr/>Formats
16810            </td>
16811            <td class="entry_type">
16812                <span class="entry_type_name entry_type_name_enum">int32</span>
16813                <span class="entry_type_container">x</span>
16814
16815                <span class="entry_type_array">
16816                  n
16817                </span>
16818              <span class="entry_type_visibility"> [hidden as imageFormat]</span>
16819
16820
16821
16822              <span class="entry_type_deprecated">[deprecated] </span>
16823
16824
16825                <ul class="entry_type_enum">
16826                  <li>
16827                    <span class="entry_type_enum_name">RAW16</span>
16828                    <span class="entry_type_enum_optional">[optional]</span>
16829                    <span class="entry_type_enum_value">0x20</span>
16830                    <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
16831buffers with 16-bit pixels.<wbr/></p>
16832<p>Buffers of this format are typically expected to have a
16833Bayer Color Filter Array (CFA) layout,<wbr/> which is given in
16834<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
16835CFAs that are not representable by a format in
16836<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
16837use this format.<wbr/></p>
16838<p>Buffers of this format will also follow the constraints given for
16839RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
16840<p>This format is intended to give users access to the full contents
16841of the buffers coming directly from the image sensor prior to any
16842cropping or scaling operations,<wbr/> and all coordinate systems for
16843metadata used for this format are relative to the size of the
16844active region of the image sensor before any geometric distortion
16845correction has been applied (i.<wbr/>e.<wbr/>
16846<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
16847dimensions for this format are limited to the full dimensions of
16848the 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
16849<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
16850only supported output size).<wbr/></p>
16851<p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
16852the full set of performance guarantees.<wbr/></p></span>
16853                  </li>
16854                  <li>
16855                    <span class="entry_type_enum_name">RAW_OPAQUE</span>
16856                    <span class="entry_type_enum_optional">[optional]</span>
16857                    <span class="entry_type_enum_value">0x24</span>
16858                    <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or
16859<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a>
16860as referred in public API) is a format for raw image buffers
16861coming from an image sensor.<wbr/></p>
16862<p>The actual structure of buffers of this format is
16863platform-specific,<wbr/> but must follow several constraints:</p>
16864<ol>
16865<li>No image post-processing operations may have been applied to
16866buffers of this type.<wbr/> These buffers contain raw image data coming
16867directly from the image sensor.<wbr/></li>
16868<li>If a buffer of this format is passed to the camera device for
16869reprocessing,<wbr/> the resulting images will be identical to the images
16870produced if the buffer had come directly from the sensor and was
16871processed with the same settings.<wbr/></li>
16872</ol>
16873<p>The intended use for this format is to allow access to the native
16874raw format buffers coming directly from the camera sensor without
16875any additional conversions or decrease in framerate.<wbr/></p>
16876<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
16877performance guarantees.<wbr/></p></span>
16878                  </li>
16879                  <li>
16880                    <span class="entry_type_enum_name">YV12</span>
16881                    <span class="entry_type_enum_optional">[optional]</span>
16882                    <span class="entry_type_enum_value">0x32315659</span>
16883                    <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
16884                  </li>
16885                  <li>
16886                    <span class="entry_type_enum_name">YCrCb_420_SP</span>
16887                    <span class="entry_type_enum_optional">[optional]</span>
16888                    <span class="entry_type_enum_value">0x11</span>
16889                    <span class="entry_type_enum_notes"><p>NV21</p></span>
16890                  </li>
16891                  <li>
16892                    <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span>
16893                    <span class="entry_type_enum_value">0x22</span>
16894                    <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
16895                  </li>
16896                  <li>
16897                    <span class="entry_type_enum_name">YCbCr_420_888</span>
16898                    <span class="entry_type_enum_value">0x23</span>
16899                    <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
16900                  </li>
16901                  <li>
16902                    <span class="entry_type_enum_name">BLOB</span>
16903                    <span class="entry_type_enum_value">0x21</span>
16904                    <span class="entry_type_enum_notes"><p>JPEG format</p></span>
16905                  </li>
16906                </ul>
16907
16908            </td> <!-- entry_type -->
16909
16910            <td class="entry_description">
16911              <p>The list of image formats that are supported by this
16912camera device for output streams.<wbr/></p>
16913            </td>
16914
16915            <td class="entry_units">
16916            </td>
16917
16918            <td class="entry_range">
16919              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16920            </td>
16921
16922            <td class="entry_tags">
16923              <ul class="entry_tags">
16924                  <li><a href="#tag_BC">BC</a></li>
16925              </ul>
16926            </td>
16927
16928          </tr>
16929          <tr class="entries_header">
16930            <th class="th_details" colspan="5">Details</th>
16931          </tr>
16932          <tr class="entry_cont">
16933            <td class="entry_details" colspan="5">
16934              <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
16935<p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
16936            </td>
16937          </tr>
16938
16939          <tr class="entries_header">
16940            <th class="th_details" colspan="5">HAL Implementation Details</th>
16941          </tr>
16942          <tr class="entry_cont">
16943            <td class="entry_details" colspan="5">
16944              <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
16945system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
16946<p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
16947gralloc module will select a format based on the usage flags provided
16948by the camera HAL device and the other endpoint of the stream.<wbr/> It is
16949usually used by preview and recording streams,<wbr/> where the application doesn't
16950need access the image data.<wbr/></p>
16951<p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
16952needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
16953<p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
16954<p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
16955recommended that any information used by the camera device when
16956processing images is fully expressed by the result metadata
16957for that image buffer.<wbr/></p>
16958            </td>
16959          </tr>
16960
16961          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16962           <!-- end of entry -->
16963
16964
16965          <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
16966            <td class="entry_name
16967                entry_name_deprecated
16968             " rowspan="3">
16969              android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
16970            </td>
16971            <td class="entry_type">
16972                <span class="entry_type_name">int64</span>
16973                <span class="entry_type_container">x</span>
16974
16975                <span class="entry_type_array">
16976                  n
16977                </span>
16978              <span class="entry_type_visibility"> [hidden]</span>
16979
16980
16981
16982              <span class="entry_type_deprecated">[deprecated] </span>
16983
16984
16985
16986            </td> <!-- entry_type -->
16987
16988            <td class="entry_description">
16989              <p>The minimum frame duration that is supported
16990for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
16991            </td>
16992
16993            <td class="entry_units">
16994              Nanoseconds
16995            </td>
16996
16997            <td class="entry_range">
16998              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16999              <p>TODO: Remove property.<wbr/></p>
17000            </td>
17001
17002            <td class="entry_tags">
17003              <ul class="entry_tags">
17004                  <li><a href="#tag_BC">BC</a></li>
17005              </ul>
17006            </td>
17007
17008          </tr>
17009          <tr class="entries_header">
17010            <th class="th_details" colspan="5">Details</th>
17011          </tr>
17012          <tr class="entry_cont">
17013            <td class="entry_details" colspan="5">
17014              <p>This corresponds to the minimum steady-state frame duration when only
17015that JPEG stream is active and captured in a burst,<wbr/> with all
17016processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
17017<p>When multiple streams are configured,<wbr/> the minimum
17018frame duration will be &gt;= max(individual stream min
17019durations)</p>
17020            </td>
17021          </tr>
17022
17023
17024          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17025           <!-- end of entry -->
17026
17027
17028          <tr class="entry" id="static_android.scaler.availableJpegSizes">
17029            <td class="entry_name
17030                entry_name_deprecated
17031             " rowspan="5">
17032              android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
17033            </td>
17034            <td class="entry_type">
17035                <span class="entry_type_name">int32</span>
17036                <span class="entry_type_container">x</span>
17037
17038                <span class="entry_type_array">
17039                  n x 2
17040                </span>
17041              <span class="entry_type_visibility"> [hidden as size]</span>
17042
17043
17044
17045              <span class="entry_type_deprecated">[deprecated] </span>
17046
17047
17048
17049            </td> <!-- entry_type -->
17050
17051            <td class="entry_description">
17052              <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
17053            </td>
17054
17055            <td class="entry_units">
17056            </td>
17057
17058            <td class="entry_range">
17059              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17060              <p>TODO: Remove property.<wbr/></p>
17061            </td>
17062
17063            <td class="entry_tags">
17064              <ul class="entry_tags">
17065                  <li><a href="#tag_BC">BC</a></li>
17066              </ul>
17067            </td>
17068
17069          </tr>
17070          <tr class="entries_header">
17071            <th class="th_details" colspan="5">Details</th>
17072          </tr>
17073          <tr class="entry_cont">
17074            <td class="entry_details" colspan="5">
17075              <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
17076sensor 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>
17077            </td>
17078          </tr>
17079
17080          <tr class="entries_header">
17081            <th class="th_details" colspan="5">HAL Implementation Details</th>
17082          </tr>
17083          <tr class="entry_cont">
17084            <td class="entry_details" colspan="5">
17085              <p>The HAL must include sensor maximum resolution
17086(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
17087and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
17088            </td>
17089          </tr>
17090
17091          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17092           <!-- end of entry -->
17093
17094
17095          <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
17096            <td class="entry_name
17097             " rowspan="3">
17098              android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
17099            </td>
17100            <td class="entry_type">
17101                <span class="entry_type_name">float</span>
17102
17103              <span class="entry_type_visibility"> [public]</span>
17104
17105
17106              <span class="entry_type_hwlevel">[legacy] </span>
17107
17108
17109
17110
17111            </td> <!-- entry_type -->
17112
17113            <td class="entry_description">
17114              <p>The maximum ratio between both active area width
17115and crop region width,<wbr/> and active area height and
17116crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
17117            </td>
17118
17119            <td class="entry_units">
17120              Zoom scale factor
17121            </td>
17122
17123            <td class="entry_range">
17124              <p>&gt;=1</p>
17125            </td>
17126
17127            <td class="entry_tags">
17128              <ul class="entry_tags">
17129                  <li><a href="#tag_BC">BC</a></li>
17130              </ul>
17131            </td>
17132
17133          </tr>
17134          <tr class="entries_header">
17135            <th class="th_details" colspan="5">Details</th>
17136          </tr>
17137          <tr class="entry_cont">
17138            <td class="entry_details" colspan="5">
17139              <p>This represents the maximum amount of zooming possible by
17140the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
17141window size.<wbr/></p>
17142<p>Crop regions that have a width or height that is smaller
17143than this ratio allows will be rounded up to the minimum
17144allowed size by the camera device.<wbr/></p>
17145            </td>
17146          </tr>
17147
17148
17149          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17150           <!-- end of entry -->
17151
17152
17153          <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
17154            <td class="entry_name
17155                entry_name_deprecated
17156             " rowspan="3">
17157              android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
17158            </td>
17159            <td class="entry_type">
17160                <span class="entry_type_name">int64</span>
17161                <span class="entry_type_container">x</span>
17162
17163                <span class="entry_type_array">
17164                  n
17165                </span>
17166              <span class="entry_type_visibility"> [hidden]</span>
17167
17168
17169
17170              <span class="entry_type_deprecated">[deprecated] </span>
17171
17172
17173
17174            </td> <!-- entry_type -->
17175
17176            <td class="entry_description">
17177              <p>For each available processed output size (defined in
17178<a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
17179minimum supportable frame duration for that size.<wbr/></p>
17180            </td>
17181
17182            <td class="entry_units">
17183              Nanoseconds
17184            </td>
17185
17186            <td class="entry_range">
17187              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17188            </td>
17189
17190            <td class="entry_tags">
17191              <ul class="entry_tags">
17192                  <li><a href="#tag_BC">BC</a></li>
17193              </ul>
17194            </td>
17195
17196          </tr>
17197          <tr class="entries_header">
17198            <th class="th_details" colspan="5">Details</th>
17199          </tr>
17200          <tr class="entry_cont">
17201            <td class="entry_details" colspan="5">
17202              <p>This should correspond to the frame duration when only that processed
17203stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
17204set to FAST.<wbr/></p>
17205<p>When multiple streams are configured,<wbr/> the minimum frame duration will
17206be &gt;= max(individual stream min durations).<wbr/></p>
17207            </td>
17208          </tr>
17209
17210
17211          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17212           <!-- end of entry -->
17213
17214
17215          <tr class="entry" id="static_android.scaler.availableProcessedSizes">
17216            <td class="entry_name
17217                entry_name_deprecated
17218             " rowspan="5">
17219              android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
17220            </td>
17221            <td class="entry_type">
17222                <span class="entry_type_name">int32</span>
17223                <span class="entry_type_container">x</span>
17224
17225                <span class="entry_type_array">
17226                  n x 2
17227                </span>
17228              <span class="entry_type_visibility"> [hidden as size]</span>
17229
17230
17231
17232              <span class="entry_type_deprecated">[deprecated] </span>
17233
17234
17235
17236            </td> <!-- entry_type -->
17237
17238            <td class="entry_description">
17239              <p>The resolutions available for use with
17240processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
17241platform opaque YUV/<wbr/>RGB streams to the GPU or video
17242encoders.<wbr/></p>
17243            </td>
17244
17245            <td class="entry_units">
17246            </td>
17247
17248            <td class="entry_range">
17249              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17250            </td>
17251
17252            <td class="entry_tags">
17253              <ul class="entry_tags">
17254                  <li><a href="#tag_BC">BC</a></li>
17255              </ul>
17256            </td>
17257
17258          </tr>
17259          <tr class="entries_header">
17260            <th class="th_details" colspan="5">Details</th>
17261          </tr>
17262          <tr class="entry_cont">
17263            <td class="entry_details" colspan="5">
17264              <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
17265<p>For a given use case,<wbr/> the actual maximum supported resolution
17266may be lower than what is listed here,<wbr/> depending on the destination
17267Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
17268the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
17269smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
17270can provide.<wbr/></p>
17271<p>Please reference the documentation for the image data destination to
17272check if it limits the maximum size for image data.<wbr/></p>
17273            </td>
17274          </tr>
17275
17276          <tr class="entries_header">
17277            <th class="th_details" colspan="5">HAL Implementation Details</th>
17278          </tr>
17279          <tr class="entry_cont">
17280            <td class="entry_details" colspan="5">
17281              <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/>
17282the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>
17283and each below resolution if it is smaller than or equal to the sensor
17284maximum resolution (if they are not listed in JPEG sizes already):</p>
17285<ul>
17286<li>240p (320 x 240)</li>
17287<li>480p (640 x 480)</li>
17288<li>720p (1280 x 720)</li>
17289<li>1080p (1920 x 1080)</li>
17290</ul>
17291<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/>
17292the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
17293            </td>
17294          </tr>
17295
17296          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17297           <!-- end of entry -->
17298
17299
17300          <tr class="entry" id="static_android.scaler.availableRawMinDurations">
17301            <td class="entry_name
17302                entry_name_deprecated
17303             " rowspan="3">
17304              android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
17305            </td>
17306            <td class="entry_type">
17307                <span class="entry_type_name">int64</span>
17308                <span class="entry_type_container">x</span>
17309
17310                <span class="entry_type_array">
17311                  n
17312                </span>
17313              <span class="entry_type_visibility"> [system]</span>
17314
17315
17316
17317              <span class="entry_type_deprecated">[deprecated] </span>
17318
17319
17320
17321            </td> <!-- entry_type -->
17322
17323            <td class="entry_description">
17324              <p>For each available raw output size (defined in
17325<a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
17326supportable frame duration for that size.<wbr/></p>
17327            </td>
17328
17329            <td class="entry_units">
17330              Nanoseconds
17331            </td>
17332
17333            <td class="entry_range">
17334              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17335            </td>
17336
17337            <td class="entry_tags">
17338              <ul class="entry_tags">
17339                  <li><a href="#tag_BC">BC</a></li>
17340              </ul>
17341            </td>
17342
17343          </tr>
17344          <tr class="entries_header">
17345            <th class="th_details" colspan="5">Details</th>
17346          </tr>
17347          <tr class="entry_cont">
17348            <td class="entry_details" colspan="5">
17349              <p>Should correspond to the frame duration when only the raw stream is
17350active.<wbr/></p>
17351<p>When multiple streams are configured,<wbr/> the minimum
17352frame duration will be &gt;= max(individual stream min
17353durations)</p>
17354            </td>
17355          </tr>
17356
17357
17358          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17359           <!-- end of entry -->
17360
17361
17362          <tr class="entry" id="static_android.scaler.availableRawSizes">
17363            <td class="entry_name
17364                entry_name_deprecated
17365             " rowspan="1">
17366              android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
17367            </td>
17368            <td class="entry_type">
17369                <span class="entry_type_name">int32</span>
17370                <span class="entry_type_container">x</span>
17371
17372                <span class="entry_type_array">
17373                  n x 2
17374                </span>
17375              <span class="entry_type_visibility"> [system as size]</span>
17376
17377
17378
17379              <span class="entry_type_deprecated">[deprecated] </span>
17380
17381
17382
17383            </td> <!-- entry_type -->
17384
17385            <td class="entry_description">
17386              <p>The resolutions available for use with raw
17387sensor output streams,<wbr/> listed as width,<wbr/>
17388height</p>
17389            </td>
17390
17391            <td class="entry_units">
17392            </td>
17393
17394            <td class="entry_range">
17395              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17396            </td>
17397
17398            <td class="entry_tags">
17399            </td>
17400
17401          </tr>
17402
17403
17404          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17405           <!-- end of entry -->
17406
17407
17408          <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
17409            <td class="entry_name
17410             " rowspan="5">
17411              android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
17412            </td>
17413            <td class="entry_type">
17414                <span class="entry_type_name">int32</span>
17415
17416              <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
17417
17418
17419
17420
17421
17422
17423            </td> <!-- entry_type -->
17424
17425            <td class="entry_description">
17426              <p>The mapping of image formats that are supported by this
17427camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
17428            </td>
17429
17430            <td class="entry_units">
17431            </td>
17432
17433            <td class="entry_range">
17434            </td>
17435
17436            <td class="entry_tags">
17437              <ul class="entry_tags">
17438                  <li><a href="#tag_REPROC">REPROC</a></li>
17439              </ul>
17440            </td>
17441
17442          </tr>
17443          <tr class="entries_header">
17444            <th class="th_details" colspan="5">Details</th>
17445          </tr>
17446          <tr class="entry_cont">
17447            <td class="entry_details" colspan="5">
17448              <p>All camera devices with at least 1
17449<a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
17450available input format.<wbr/></p>
17451<p>The camera device will support the following map of formats,<wbr/>
17452if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
17453<table>
17454<thead>
17455<tr>
17456<th align="left">Input Format</th>
17457<th align="left">Output Format</th>
17458<th align="left">Capability</th>
17459</tr>
17460</thead>
17461<tbody>
17462<tr>
17463<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
17464<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17465<td align="left">PRIVATE_<wbr/>REPROCESSING</td>
17466</tr>
17467<tr>
17468<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
17469<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>
17470<td align="left">PRIVATE_<wbr/>REPROCESSING</td>
17471</tr>
17472<tr>
17473<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>
17474<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17475<td align="left">YUV_<wbr/>REPROCESSING</td>
17476</tr>
17477<tr>
17478<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>
17479<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>
17480<td align="left">YUV_<wbr/>REPROCESSING</td>
17481</tr>
17482</tbody>
17483</table>
17484<p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/>  A
17485PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
17486with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
17487<p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
17488or 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>
17489<p>Attempting to configure an input stream with output streams not
17490listed as available in this map is not valid.<wbr/></p>
17491            </td>
17492          </tr>
17493
17494          <tr class="entries_header">
17495            <th class="th_details" colspan="5">HAL Implementation Details</th>
17496          </tr>
17497          <tr class="entry_cont">
17498            <td class="entry_details" colspan="5">
17499              <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
17500of the image format enumerations.<wbr/> The PRIVATE format refers to the
17501HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
17502the actual format by using the gralloc usage flags.<wbr/>
17503For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
17504processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
17505See camera3.<wbr/>h for more details.<wbr/></p>
17506<p>This value is encoded as a variable-size array-of-arrays.<wbr/>
17507The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
17508<code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
17509inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
17510<p>A code sample to read/<wbr/>write this encoding (with a device that
17511supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
17512and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
17513<pre><code>//<wbr/> reading
17514int32_<wbr/>t* contents = &amp;entry.<wbr/>i32[0];
17515for (size_<wbr/>t i = 0; i &lt; entry.<wbr/>count; ) {
17516    int32_<wbr/>t format = contents[i++];
17517    int32_<wbr/>t length = contents[i++];
17518    int32_<wbr/>t output_<wbr/>formats[length];
17519    memcpy(&amp;output_<wbr/>formats[0],<wbr/> &amp;contents[i],<wbr/>
17520           length * sizeof(int32_<wbr/>t));
17521    i += length;
17522}
17523
17524//<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
17525int32_<wbr/>t[] contents = {
17526  IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
17527  YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
17528};
17529update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &amp;contents[0],<wbr/>
17530      sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &amp;updated_<wbr/>entry);
17531</code></pre>
17532<p>If the HAL claims to support any of the capabilities listed in the
17533above details,<wbr/> then it must also support all the input-output
17534combinations listed for that capability.<wbr/> It can optionally support
17535additional formats if it so chooses.<wbr/></p>
17536            </td>
17537          </tr>
17538
17539          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17540           <!-- end of entry -->
17541
17542
17543          <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
17544            <td class="entry_name
17545             " rowspan="5">
17546              android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
17547            </td>
17548            <td class="entry_type">
17549                <span class="entry_type_name entry_type_name_enum">int32</span>
17550                <span class="entry_type_container">x</span>
17551
17552                <span class="entry_type_array">
17553                  n x 4
17554                </span>
17555              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
17556
17557
17558              <span class="entry_type_hwlevel">[legacy] </span>
17559
17560
17561
17562                <ul class="entry_type_enum">
17563                  <li>
17564                    <span class="entry_type_enum_name">OUTPUT</span>
17565                  </li>
17566                  <li>
17567                    <span class="entry_type_enum_name">INPUT</span>
17568                  </li>
17569                </ul>
17570
17571            </td> <!-- entry_type -->
17572
17573            <td class="entry_description">
17574              <p>The available stream configurations that this
17575camera device supports
17576(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
17577            </td>
17578
17579            <td class="entry_units">
17580            </td>
17581
17582            <td class="entry_range">
17583            </td>
17584
17585            <td class="entry_tags">
17586            </td>
17587
17588          </tr>
17589          <tr class="entries_header">
17590            <th class="th_details" colspan="5">Details</th>
17591          </tr>
17592          <tr class="entry_cont">
17593            <td class="entry_details" colspan="5">
17594              <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
17595tuples.<wbr/></p>
17596<p>For a given use case,<wbr/> the actual maximum supported resolution
17597may be lower than what is listed here,<wbr/> depending on the destination
17598Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
17599the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
17600smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
17601can provide.<wbr/></p>
17602<p>Please reference the documentation for the image data destination to
17603check if it limits the maximum size for image data.<wbr/></p>
17604<p>Not all output formats may be supported in a configuration with
17605an input stream of a particular format.<wbr/> For more details,<wbr/> see
17606<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
17607<p>The following table describes the minimum required output stream
17608configurations based on the hardware level
17609(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
17610<table>
17611<thead>
17612<tr>
17613<th align="center">Format</th>
17614<th align="center">Size</th>
17615<th align="center">Hardware Level</th>
17616<th align="center">Notes</th>
17617</tr>
17618</thead>
17619<tbody>
17620<tr>
17621<td align="center">JPEG</td>
17622<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
17623<td align="center">Any</td>
17624<td align="center"></td>
17625</tr>
17626<tr>
17627<td align="center">JPEG</td>
17628<td align="center">1920x1080 (1080p)</td>
17629<td align="center">Any</td>
17630<td align="center">if 1080p &lt;= activeArraySize</td>
17631</tr>
17632<tr>
17633<td align="center">JPEG</td>
17634<td align="center">1280x720 (720)</td>
17635<td align="center">Any</td>
17636<td align="center">if 720p &lt;= activeArraySize</td>
17637</tr>
17638<tr>
17639<td align="center">JPEG</td>
17640<td align="center">640x480 (480p)</td>
17641<td align="center">Any</td>
17642<td align="center">if 480p &lt;= activeArraySize</td>
17643</tr>
17644<tr>
17645<td align="center">JPEG</td>
17646<td align="center">320x240 (240p)</td>
17647<td align="center">Any</td>
17648<td align="center">if 240p &lt;= activeArraySize</td>
17649</tr>
17650<tr>
17651<td align="center">YUV_<wbr/>420_<wbr/>888</td>
17652<td align="center">all output sizes available for JPEG</td>
17653<td align="center">FULL</td>
17654<td align="center"></td>
17655</tr>
17656<tr>
17657<td align="center">YUV_<wbr/>420_<wbr/>888</td>
17658<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
17659<td align="center">LIMITED</td>
17660<td align="center"></td>
17661</tr>
17662<tr>
17663<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
17664<td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
17665<td align="center">Any</td>
17666<td align="center"></td>
17667</tr>
17668</tbody>
17669</table>
17670<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
17671mandatory stream configurations on a per-capability basis.<wbr/></p>
17672            </td>
17673          </tr>
17674
17675          <tr class="entries_header">
17676            <th class="th_details" colspan="5">HAL Implementation Details</th>
17677          </tr>
17678          <tr class="entry_cont">
17679            <td class="entry_details" colspan="5">
17680              <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
17681of sensor maximum resolution for JPEG formats (regardless of hardware
17682level).<wbr/></p>
17683<p>(The following is a rewording of the above required table):</p>
17684<p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
17685<ul>
17686<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
17687(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
17688(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/>
17689it does not have to be included in the supported JPEG sizes.<wbr/></li>
17690<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
17691the dimensions being a multiple of 16.<wbr/></li>
17692</ul>
17693<p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
17694However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
17695resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
17696additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
17697if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
17698ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
176993264x2448.<wbr/></p>
17700<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/>
17701the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
17702here as output streams.<wbr/></p>
17703<p>It must also include each below resolution if it is smaller than or
17704equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
17705formats),<wbr/> as output streams:</p>
17706<ul>
17707<li>240p (320 x 240)</li>
17708<li>480p (640 x 480)</li>
17709<li>720p (1280 x 720)</li>
17710<li>1080p (1920 x 1080)</li>
17711</ul>
17712<p>For LIMITED capability devices
17713(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
17714the HAL only has to list up to the maximum video size
17715supported by the device.<wbr/></p>
17716<p>Regardless of hardware level,<wbr/> every output resolution available for
17717YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
17718<p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
17719<ul>
17720<li>availableFormats</li>
17721<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
17722</ul>
17723            </td>
17724          </tr>
17725
17726          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17727           <!-- end of entry -->
17728
17729
17730          <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
17731            <td class="entry_name
17732             " rowspan="3">
17733              android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
17734            </td>
17735            <td class="entry_type">
17736                <span class="entry_type_name">int64</span>
17737                <span class="entry_type_container">x</span>
17738
17739                <span class="entry_type_array">
17740                  4 x n
17741                </span>
17742              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
17743
17744
17745              <span class="entry_type_hwlevel">[legacy] </span>
17746
17747
17748
17749
17750            </td> <!-- entry_type -->
17751
17752            <td class="entry_description">
17753              <p>This lists the minimum frame duration for each
17754format/<wbr/>size combination.<wbr/></p>
17755            </td>
17756
17757            <td class="entry_units">
17758              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
17759            </td>
17760
17761            <td class="entry_range">
17762            </td>
17763
17764            <td class="entry_tags">
17765              <ul class="entry_tags">
17766                  <li><a href="#tag_V1">V1</a></li>
17767              </ul>
17768            </td>
17769
17770          </tr>
17771          <tr class="entries_header">
17772            <th class="th_details" colspan="5">Details</th>
17773          </tr>
17774          <tr class="entry_cont">
17775            <td class="entry_details" colspan="5">
17776              <p>This should correspond to the frame duration when only that
17777stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
17778set to either OFF or FAST.<wbr/></p>
17779<p>When multiple streams are used in a request,<wbr/> the minimum frame
17780duration will be max(individual stream min durations).<wbr/></p>
17781<p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
17782is the same regardless of whether the stream is input or output.<wbr/></p>
17783<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
17784<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
17785calculating the max frame rate.<wbr/></p>
17786<p>(Keep in sync with
17787<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p>
17788            </td>
17789          </tr>
17790
17791
17792          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17793           <!-- end of entry -->
17794
17795
17796          <tr class="entry" id="static_android.scaler.availableStallDurations">
17797            <td class="entry_name
17798             " rowspan="5">
17799              android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
17800            </td>
17801            <td class="entry_type">
17802                <span class="entry_type_name">int64</span>
17803                <span class="entry_type_container">x</span>
17804
17805                <span class="entry_type_array">
17806                  4 x n
17807                </span>
17808              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
17809
17810
17811              <span class="entry_type_hwlevel">[legacy] </span>
17812
17813
17814
17815
17816            </td> <!-- entry_type -->
17817
17818            <td class="entry_description">
17819              <p>This lists the maximum stall duration for each
17820output format/<wbr/>size combination.<wbr/></p>
17821            </td>
17822
17823            <td class="entry_units">
17824              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
17825            </td>
17826
17827            <td class="entry_range">
17828            </td>
17829
17830            <td class="entry_tags">
17831              <ul class="entry_tags">
17832                  <li><a href="#tag_V1">V1</a></li>
17833              </ul>
17834            </td>
17835
17836          </tr>
17837          <tr class="entries_header">
17838            <th class="th_details" colspan="5">Details</th>
17839          </tr>
17840          <tr class="entry_cont">
17841            <td class="entry_details" colspan="5">
17842              <p>A stall duration is how much extra time would get added
17843to the normal minimum frame duration for a repeating request
17844that has streams with non-zero stall.<wbr/></p>
17845<p>For example,<wbr/> consider JPEG captures which have the following
17846characteristics:</p>
17847<ul>
17848<li>JPEG streams act like processed YUV streams in requests for which
17849they are not included; in requests in which they are directly
17850referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
17851JPEG stream requires the underlying YUV data to always be ready for
17852use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
17853frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
17854<li>The JPEG processor can run concurrently to the rest of the camera
17855pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
17856</ul>
17857<p>In other words,<wbr/> using a repeating YUV request would result
17858in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
17859JPEG request is submitted periodically,<wbr/> the frame rate will stay
17860at 30 FPS (as long as we wait for the previous JPEG to return each
17861time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
17862the frame rate will drop from 30 FPS.<wbr/></p>
17863<p>In general,<wbr/> submitting a new request with a non-0 stall time
17864stream will <em>not</em> cause a frame rate drop unless there are still
17865outstanding buffers for that stream from previous requests.<wbr/></p>
17866<p>Submitting a repeating request with streams (call this <code>S</code>)
17867is the same as setting the minimum frame duration from
17868the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
17869the maximum stall duration for <code>S</code>.<wbr/></p>
17870<p>If interleaving requests with and without a stall duration,<wbr/>
17871a request will stall by the maximum of the remaining times
17872for each can-stall stream with outstanding buffers.<wbr/></p>
17873<p>This means that a stalling request will not have an exposure start
17874until the stall has completed.<wbr/></p>
17875<p>This should correspond to the stall duration when only that stream is
17876active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
17877or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
17878effectively results in an indeterminate stall duration for all
17879streams in a request (the regular stall calculation rules are
17880ignored).<wbr/></p>
17881<p>The following formats may always have a stall duration:</p>
17882<ul>
17883<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
17884<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
17885</ul>
17886<p>The following formats will never have a stall duration:</p>
17887<ul>
17888<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>
17889<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
17890</ul>
17891<p>All other formats may or may not have an allowed stall duration on
17892a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
17893for more details.<wbr/></p>
17894<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
17895calculating the max frame rate (absent stalls).<wbr/></p>
17896<p>(Keep up to date with
17897<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> )</p>
17898            </td>
17899          </tr>
17900
17901          <tr class="entries_header">
17902            <th class="th_details" colspan="5">HAL Implementation Details</th>
17903          </tr>
17904          <tr class="entry_cont">
17905            <td class="entry_details" colspan="5">
17906              <p>If possible,<wbr/> it is recommended that all non-JPEG formats
17907(such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
17908and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
17909            </td>
17910          </tr>
17911
17912          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17913           <!-- end of entry -->
17914
17915
17916          <tr class="entry" id="static_android.scaler.streamConfigurationMap">
17917            <td class="entry_name
17918             " rowspan="5">
17919              android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
17920            </td>
17921            <td class="entry_type">
17922                <span class="entry_type_name">int32</span>
17923
17924              <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span>
17925
17926              <span class="entry_type_synthetic">[synthetic] </span>
17927
17928              <span class="entry_type_hwlevel">[legacy] </span>
17929
17930
17931
17932
17933            </td> <!-- entry_type -->
17934
17935            <td class="entry_description">
17936              <p>The available stream configurations that this
17937camera device supports; also includes the minimum frame durations
17938and the stall durations for each format/<wbr/>size combination.<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_tags">
17948            </td>
17949
17950          </tr>
17951          <tr class="entries_header">
17952            <th class="th_details" colspan="5">Details</th>
17953          </tr>
17954          <tr class="entry_cont">
17955            <td class="entry_details" colspan="5">
17956              <p>All camera devices will support sensor maximum resolution (defined by
17957<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>
17958<p>For a given use case,<wbr/> the actual maximum supported resolution
17959may be lower than what is listed here,<wbr/> depending on the destination
17960Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
17961the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
17962smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
17963can provide.<wbr/></p>
17964<p>Please reference the documentation for the image data destination to
17965check if it limits the maximum size for image data.<wbr/></p>
17966<p>The following table describes the minimum required output stream
17967configurations based on the hardware level
17968(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
17969<table>
17970<thead>
17971<tr>
17972<th align="center">Format</th>
17973<th align="center">Size</th>
17974<th align="center">Hardware Level</th>
17975<th align="center">Notes</th>
17976</tr>
17977</thead>
17978<tbody>
17979<tr>
17980<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17981<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
17982<td align="center">Any</td>
17983<td align="center"></td>
17984</tr>
17985<tr>
17986<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17987<td align="center">1920x1080 (1080p)</td>
17988<td align="center">Any</td>
17989<td align="center">if 1080p &lt;= activeArraySize</td>
17990</tr>
17991<tr>
17992<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17993<td align="center">1280x720 (720p)</td>
17994<td align="center">Any</td>
17995<td align="center">if 720p &lt;= activeArraySize</td>
17996</tr>
17997<tr>
17998<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17999<td align="center">640x480 (480p)</td>
18000<td align="center">Any</td>
18001<td align="center">if 480p &lt;= activeArraySize</td>
18002</tr>
18003<tr>
18004<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18005<td align="center">320x240 (240p)</td>
18006<td align="center">Any</td>
18007<td align="center">if 240p &lt;= activeArraySize</td>
18008</tr>
18009<tr>
18010<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>
18011<td align="center">all output sizes available for JPEG</td>
18012<td align="center">FULL</td>
18013<td align="center"></td>
18014</tr>
18015<tr>
18016<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>
18017<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
18018<td align="center">LIMITED</td>
18019<td align="center"></td>
18020</tr>
18021<tr>
18022<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18023<td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
18024<td align="center">Any</td>
18025<td align="center"></td>
18026</tr>
18027</tbody>
18028</table>
18029<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
18030stream configurations on a per-capability basis.<wbr/></p>
18031<p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
18032<ul>
18033<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
18034(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
18035(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/>
18036it does not have to be included in the supported JPEG sizes.<wbr/></li>
18037<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
18038the dimensions being a multiple of 16.<wbr/>
18039Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
18040However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
18041resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
18042additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
18043if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
18044ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
180453264x2448.<wbr/></li>
18046</ul>
18047            </td>
18048          </tr>
18049
18050          <tr class="entries_header">
18051            <th class="th_details" colspan="5">HAL Implementation Details</th>
18052          </tr>
18053          <tr class="entry_cont">
18054            <td class="entry_details" colspan="5">
18055              <p>Do not set this property directly
18056(it is synthetic and will not be available at the HAL layer);
18057set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
18058<p>Not all output formats may be supported in a configuration with
18059an input stream of a particular format.<wbr/> For more details,<wbr/> see
18060<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
18061<p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
18062of sensor maximum resolution for JPEG formats (regardless of hardware
18063level).<wbr/></p>
18064<p>(The following is a rewording of the above required table):</p>
18065<p>The HAL must include sensor maximum resolution (defined by
18066<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
18067<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/>
18068the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
18069here as output streams.<wbr/></p>
18070<p>It must also include each below resolution if it is smaller than or
18071equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
18072formats),<wbr/> as output streams:</p>
18073<ul>
18074<li>240p (320 x 240)</li>
18075<li>480p (640 x 480)</li>
18076<li>720p (1280 x 720)</li>
18077<li>1080p (1920 x 1080)</li>
18078</ul>
18079<p>For LIMITED capability devices
18080(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
18081the HAL only has to list up to the maximum video size
18082supported by the device.<wbr/></p>
18083<p>Regardless of hardware level,<wbr/> every output resolution available for
18084YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
18085<p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
18086<ul>
18087<li>availableFormats</li>
18088<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
18089</ul>
18090            </td>
18091          </tr>
18092
18093          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18094           <!-- end of entry -->
18095
18096
18097          <tr class="entry" id="static_android.scaler.croppingType">
18098            <td class="entry_name
18099             " rowspan="3">
18100              android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
18101            </td>
18102            <td class="entry_type">
18103                <span class="entry_type_name entry_type_name_enum">byte</span>
18104
18105              <span class="entry_type_visibility"> [public]</span>
18106
18107
18108              <span class="entry_type_hwlevel">[legacy] </span>
18109
18110
18111
18112                <ul class="entry_type_enum">
18113                  <li>
18114                    <span class="entry_type_enum_name">CENTER_ONLY</span>
18115                    <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
18116                  </li>
18117                  <li>
18118                    <span class="entry_type_enum_name">FREEFORM</span>
18119                    <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
18120                  </li>
18121                </ul>
18122
18123            </td> <!-- entry_type -->
18124
18125            <td class="entry_description">
18126              <p>The crop type that this camera device supports.<wbr/></p>
18127            </td>
18128
18129            <td class="entry_units">
18130            </td>
18131
18132            <td class="entry_range">
18133            </td>
18134
18135            <td class="entry_tags">
18136            </td>
18137
18138          </tr>
18139          <tr class="entries_header">
18140            <th class="th_details" colspan="5">Details</th>
18141          </tr>
18142          <tr class="entry_cont">
18143            <td class="entry_details" colspan="5">
18144              <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
18145device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
18146crop 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>)
18147and keep the crop region width and height unchanged.<wbr/> The camera device will return the
18148final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
18149<p>Camera devices that support FREEFORM cropping will support any crop region that
18150is inside of the active array.<wbr/> The camera device will apply the same crop region and
18151return 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>
18152<p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
18153            </td>
18154          </tr>
18155
18156
18157          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18158           <!-- end of entry -->
18159
18160
18161
18162      <!-- end of kind -->
18163      </tbody>
18164      <tr><td colspan="6" class="kind">dynamic</td></tr>
18165
18166      <thead class="entries_header">
18167        <tr>
18168          <th class="th_name">Property Name</th>
18169          <th class="th_type">Type</th>
18170          <th class="th_description">Description</th>
18171          <th class="th_units">Units</th>
18172          <th class="th_range">Range</th>
18173          <th class="th_tags">Tags</th>
18174        </tr>
18175      </thead>
18176
18177      <tbody>
18178
18179
18180
18181
18182
18183
18184
18185
18186
18187
18188          <tr class="entry" id="dynamic_android.scaler.cropRegion">
18189            <td class="entry_name
18190             " rowspan="5">
18191              android.<wbr/>scaler.<wbr/>crop<wbr/>Region
18192            </td>
18193            <td class="entry_type">
18194                <span class="entry_type_name">int32</span>
18195                <span class="entry_type_container">x</span>
18196
18197                <span class="entry_type_array">
18198                  4
18199                </span>
18200              <span class="entry_type_visibility"> [public as rectangle]</span>
18201
18202
18203              <span class="entry_type_hwlevel">[legacy] </span>
18204
18205
18206
18207
18208            </td> <!-- entry_type -->
18209
18210            <td class="entry_description">
18211              <p>The desired region of the sensor to read out for this capture.<wbr/></p>
18212            </td>
18213
18214            <td class="entry_units">
18215              Pixel coordinates relative to
18216          android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
18217            </td>
18218
18219            <td class="entry_range">
18220            </td>
18221
18222            <td class="entry_tags">
18223              <ul class="entry_tags">
18224                  <li><a href="#tag_BC">BC</a></li>
18225              </ul>
18226            </td>
18227
18228          </tr>
18229          <tr class="entries_header">
18230            <th class="th_details" colspan="5">Details</th>
18231          </tr>
18232          <tr class="entry_cont">
18233            <td class="entry_details" colspan="5">
18234              <p>This control can be used to implement digital zoom.<wbr/></p>
18235<p>The crop region coordinate system is based off
18236<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with <code>(0,<wbr/> 0)</code> being the
18237top-left corner of the sensor active array.<wbr/></p>
18238<p>Output streams use this rectangle to produce their output,<wbr/>
18239cropping to a smaller region if necessary to maintain the
18240stream's aspect ratio,<wbr/> then scaling the sensor input to
18241match the output's configured resolution.<wbr/></p>
18242<p>The crop region is applied after the RAW to other color
18243space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
18244(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
18245croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
18246<p>For non-raw streams,<wbr/> any additional per-stream cropping will
18247be done to maximize the final pixel area of the stream.<wbr/></p>
18248<p>For example,<wbr/> if the crop region is set to a 4:3 aspect
18249ratio,<wbr/> then 4:3 streams will use the exact crop
18250region.<wbr/> 16:9 streams will further crop vertically
18251(letterbox).<wbr/></p>
18252<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
18253outputs will crop horizontally (pillarbox),<wbr/> and 16:9
18254streams will match exactly.<wbr/> These additional crops will
18255be centered within the crop region.<wbr/></p>
18256<p>The width and height of the crop region cannot
18257be set to be smaller than
18258<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
18259<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>
18260<p>The camera device may adjust the crop region to account
18261for rounding and other hardware requirements; the final
18262crop region used will be included in the output capture
18263result.<wbr/></p>
18264            </td>
18265          </tr>
18266
18267          <tr class="entries_header">
18268            <th class="th_details" colspan="5">HAL Implementation Details</th>
18269          </tr>
18270          <tr class="entry_cont">
18271            <td class="entry_details" colspan="5">
18272              <p>The output streams must maintain square pixels at all
18273times,<wbr/> no matter what the relative aspect ratios of the
18274crop region and the stream are.<wbr/>  Negative values for
18275corner are allowed for raw output if full pixel array is
18276larger than active pixel array.<wbr/> Width and height may be
18277rounded to nearest larger supportable width,<wbr/> especially
18278for raw output,<wbr/> where only a few fixed scales may be
18279possible.<wbr/></p>
18280<p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
18281size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
18282<ul>
18283<li>
18284<p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
18285array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
18286<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> to the sensor cropped pixel area size in this way:</p>
18287<ol>
18288<li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
18289cropped pixel area by (tx,<wbr/> ty),<wbr/>
18290where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
18291and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
18292(sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
18293<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
18294<li>Scale the width and height of requested cropRegion with scaling factor of
18295sensor<wbr/>Crop.<wbr/>width/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>width and sensor<wbr/>Crop.<wbr/>height/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>height
18296respectively.<wbr/>
18297Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
18298with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
18299follow the general cropping rule for this new cropRegion and effective active
18300array size.<wbr/></li>
18301</ol>
18302</li>
18303<li>
18304<p>The HAL must report the cropRegion with regard to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>
18305The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
18306The reported cropRegion may be slightly different with the requested cropRegion since
18307the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
18308hardware limitations.<wbr/></p>
18309</li>
18310</ul>
18311<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
18312            </td>
18313          </tr>
18314
18315          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18316           <!-- end of entry -->
18317
18318
18319
18320      <!-- end of kind -->
18321      </tbody>
18322
18323  <!-- end of section -->
18324  <tr><td colspan="6" id="section_sensor" class="section">sensor</td></tr>
18325
18326
18327      <tr><td colspan="6" class="kind">controls</td></tr>
18328
18329      <thead class="entries_header">
18330        <tr>
18331          <th class="th_name">Property Name</th>
18332          <th class="th_type">Type</th>
18333          <th class="th_description">Description</th>
18334          <th class="th_units">Units</th>
18335          <th class="th_range">Range</th>
18336          <th class="th_tags">Tags</th>
18337        </tr>
18338      </thead>
18339
18340      <tbody>
18341
18342
18343
18344
18345
18346
18347
18348
18349
18350
18351          <tr class="entry" id="controls_android.sensor.exposureTime">
18352            <td class="entry_name
18353             " rowspan="3">
18354              android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
18355            </td>
18356            <td class="entry_type">
18357                <span class="entry_type_name">int64</span>
18358
18359              <span class="entry_type_visibility"> [public]</span>
18360
18361
18362              <span class="entry_type_hwlevel">[full] </span>
18363
18364
18365
18366
18367            </td> <!-- entry_type -->
18368
18369            <td class="entry_description">
18370              <p>Duration each pixel is exposed to
18371light.<wbr/></p>
18372            </td>
18373
18374            <td class="entry_units">
18375              Nanoseconds
18376            </td>
18377
18378            <td class="entry_range">
18379              <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
18380            </td>
18381
18382            <td class="entry_tags">
18383              <ul class="entry_tags">
18384                  <li><a href="#tag_V1">V1</a></li>
18385              </ul>
18386            </td>
18387
18388          </tr>
18389          <tr class="entries_header">
18390            <th class="th_details" colspan="5">Details</th>
18391          </tr>
18392          <tr class="entry_cont">
18393            <td class="entry_details" colspan="5">
18394              <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
18395duration exposed to the nearest possible value (rather than expose longer).<wbr/>
18396The final exposure time used will be available in the output capture result.<wbr/></p>
18397<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
18398OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
18399            </td>
18400          </tr>
18401
18402
18403          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18404           <!-- end of entry -->
18405
18406
18407          <tr class="entry" id="controls_android.sensor.frameDuration">
18408            <td class="entry_name
18409             " rowspan="5">
18410              android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
18411            </td>
18412            <td class="entry_type">
18413                <span class="entry_type_name">int64</span>
18414
18415              <span class="entry_type_visibility"> [public]</span>
18416
18417
18418              <span class="entry_type_hwlevel">[full] </span>
18419
18420
18421
18422
18423            </td> <!-- entry_type -->
18424
18425            <td class="entry_description">
18426              <p>Duration from start of frame exposure to
18427start of next frame exposure.<wbr/></p>
18428            </td>
18429
18430            <td class="entry_units">
18431              Nanoseconds
18432            </td>
18433
18434            <td class="entry_range">
18435              <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
18436<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
18437is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
18438            </td>
18439
18440            <td class="entry_tags">
18441              <ul class="entry_tags">
18442                  <li><a href="#tag_V1">V1</a></li>
18443              </ul>
18444            </td>
18445
18446          </tr>
18447          <tr class="entries_header">
18448            <th class="th_details" colspan="5">Details</th>
18449          </tr>
18450          <tr class="entry_cont">
18451            <td class="entry_details" colspan="5">
18452              <p>The maximum frame rate that can be supported by a camera subsystem is
18453a function of many factors:</p>
18454<ul>
18455<li>Requested resolutions of output image streams</li>
18456<li>Availability of binning /<wbr/> skipping modes on the imager</li>
18457<li>The bandwidth of the imager interface</li>
18458<li>The bandwidth of the various ISP processing blocks</li>
18459</ul>
18460<p>Since these factors can vary greatly between different ISPs and
18461sensors,<wbr/> the camera abstraction tries to represent the bandwidth
18462restrictions with as simple a model as possible.<wbr/></p>
18463<p>The model presented has the following characteristics:</p>
18464<ul>
18465<li>The image sensor is always configured to output the smallest
18466resolution possible given the application's requested output stream
18467sizes.<wbr/>  The smallest resolution is defined as being at least as large
18468as the largest requested output stream size; the camera pipeline must
18469never digitally upsample sensor data when the crop region covers the
18470whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
18471resolutions are configured,<wbr/> the sensor can provide a higher frame
18472rate.<wbr/></li>
18473<li>Since any request may use any or all the currently configured
18474output streams,<wbr/> the sensor and ISP must be configured to support
18475scaling a single capture to all the streams at the same time.<wbr/>  This
18476means the camera pipeline must be ready to produce the largest
18477requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
18478frame rate of a given configured stream set is governed only by the
18479largest requested stream resolution.<wbr/></li>
18480<li>Using more than one output stream in a request does not affect the
18481frame duration.<wbr/></li>
18482<li>Certain format-streams may need to do additional background processing
18483before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
18484can run concurrently to the rest of the camera pipeline,<wbr/> but
18485cannot process more than 1 capture at a time.<wbr/></li>
18486</ul>
18487<p>The necessary information for the application,<wbr/> given the model above,<wbr/>
18488is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using
18489<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
18490These are used to determine the maximum frame rate /<wbr/> minimum frame
18491duration that is possible for a given stream configuration.<wbr/></p>
18492<p>Specifically,<wbr/> the application can use the following rules to
18493determine the minimum frame duration it can request from the camera
18494device:</p>
18495<ol>
18496<li>Let the set of currently configured input/<wbr/>output streams
18497be called <code>S</code>.<wbr/></li>
18498<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking
18499it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
18500(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be
18501called <code>F</code>.<wbr/></li>
18502<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
18503for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
18504used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
18505</ol>
18506<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>
18507using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code>
18508determines the steady state frame rate that the application will get
18509if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of
18510request be called <code>Rsimple</code>.<wbr/></p>
18511<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
18512by a single capture of a new request <code>Rstall</code> (which has at least
18513one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
18514same minimum frame duration this will not cause a frame rate loss
18515if all buffers from the previous <code>Rstall</code> have already been
18516delivered.<wbr/></p>
18517<p>For more details about stalling,<wbr/> see
18518<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
18519<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
18520OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
18521            </td>
18522          </tr>
18523
18524          <tr class="entries_header">
18525            <th class="th_details" colspan="5">HAL Implementation Details</th>
18526          </tr>
18527          <tr class="entry_cont">
18528            <td class="entry_details" colspan="5">
18529              <p>For more details about stalling,<wbr/> see
18530<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
18531            </td>
18532          </tr>
18533
18534          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18535           <!-- end of entry -->
18536
18537
18538          <tr class="entry" id="controls_android.sensor.sensitivity">
18539            <td class="entry_name
18540             " rowspan="5">
18541              android.<wbr/>sensor.<wbr/>sensitivity
18542            </td>
18543            <td class="entry_type">
18544                <span class="entry_type_name">int32</span>
18545
18546              <span class="entry_type_visibility"> [public]</span>
18547
18548
18549              <span class="entry_type_hwlevel">[full] </span>
18550
18551
18552
18553
18554            </td> <!-- entry_type -->
18555
18556            <td class="entry_description">
18557              <p>The amount of gain applied to sensor data
18558before processing.<wbr/></p>
18559            </td>
18560
18561            <td class="entry_units">
18562              ISO arithmetic units
18563            </td>
18564
18565            <td class="entry_range">
18566              <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
18567            </td>
18568
18569            <td class="entry_tags">
18570              <ul class="entry_tags">
18571                  <li><a href="#tag_V1">V1</a></li>
18572              </ul>
18573            </td>
18574
18575          </tr>
18576          <tr class="entries_header">
18577            <th class="th_details" colspan="5">Details</th>
18578          </tr>
18579          <tr class="entry_cont">
18580            <td class="entry_details" colspan="5">
18581              <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
18582as defined in ISO 12232:2006.<wbr/></p>
18583<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
18584if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
18585is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
18586<p>If the camera device cannot apply the exact sensitivity
18587requested,<wbr/> it will reduce the gain to the nearest supported
18588value.<wbr/> The final sensitivity used will be available in the
18589output capture result.<wbr/></p>
18590<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
18591OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
18592            </td>
18593          </tr>
18594
18595          <tr class="entries_header">
18596            <th class="th_details" colspan="5">HAL Implementation Details</th>
18597          </tr>
18598          <tr class="entry_cont">
18599            <td class="entry_details" colspan="5">
18600              <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
18601            </td>
18602          </tr>
18603
18604          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18605           <!-- end of entry -->
18606
18607
18608          <tr class="entry" id="controls_android.sensor.testPatternData">
18609            <td class="entry_name
18610             " rowspan="5">
18611              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
18612            </td>
18613            <td class="entry_type">
18614                <span class="entry_type_name">int32</span>
18615                <span class="entry_type_container">x</span>
18616
18617                <span class="entry_type_array">
18618                  4
18619                </span>
18620              <span class="entry_type_visibility"> [public]</span>
18621
18622
18623
18624
18625
18626
18627            </td> <!-- entry_type -->
18628
18629            <td class="entry_description">
18630              <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
18631when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
18632            </td>
18633
18634            <td class="entry_units">
18635            </td>
18636
18637            <td class="entry_range">
18638            </td>
18639
18640            <td class="entry_tags">
18641            </td>
18642
18643          </tr>
18644          <tr class="entries_header">
18645            <th class="th_details" colspan="5">Details</th>
18646          </tr>
18647          <tr class="entry_cont">
18648            <td class="entry_details" colspan="5">
18649              <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
18650The camera device then uses the most significant X bits
18651that correspond to how many bits are in its Bayer raw sensor
18652output.<wbr/></p>
18653<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
1865410 most significant bits from each color channel.<wbr/></p>
18655            </td>
18656          </tr>
18657
18658          <tr class="entries_header">
18659            <th class="th_details" colspan="5">HAL Implementation Details</th>
18660          </tr>
18661          <tr class="entry_cont">
18662            <td class="entry_details" colspan="5">
18663
18664            </td>
18665          </tr>
18666
18667          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18668           <!-- end of entry -->
18669
18670
18671          <tr class="entry" id="controls_android.sensor.testPatternMode">
18672            <td class="entry_name
18673             " rowspan="5">
18674              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
18675            </td>
18676            <td class="entry_type">
18677                <span class="entry_type_name entry_type_name_enum">int32</span>
18678
18679              <span class="entry_type_visibility"> [public]</span>
18680
18681
18682
18683
18684
18685                <ul class="entry_type_enum">
18686                  <li>
18687                    <span class="entry_type_enum_name">OFF</span>
18688                    <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
18689device returns captures from the image sensor.<wbr/></p>
18690<p>This is the default if the key is not set.<wbr/></p></span>
18691                  </li>
18692                  <li>
18693                    <span class="entry_type_enum_name">SOLID_COLOR</span>
18694                    <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
18695respective color channel provided in
18696<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
18697<p>For example:</p>
18698<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
18699</code></pre>
18700<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
18701<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
18702</code></pre>
18703<p>All red pixels are 100% red.<wbr/> Only the odd green pixels
18704are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
18705                  </li>
18706                  <li>
18707                    <span class="entry_type_enum_name">COLOR_BARS</span>
18708                    <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
18709<p>The vertical bars (left-to-right) are as follows:</p>
18710<ul>
18711<li>100% white</li>
18712<li>yellow</li>
18713<li>cyan</li>
18714<li>green</li>
18715<li>magenta</li>
18716<li>red</li>
18717<li>blue</li>
18718<li>black</li>
18719</ul>
18720<p>In general the image would look like the following:</p>
18721<pre><code>W Y C G M R B K
18722W Y C G M R B K
18723W Y C G M R B K
18724W Y C G M R B K
18725W Y C G M R B K
18726.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
18727.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
18728.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
18729
18730(B = Blue,<wbr/> K = Black)
18731</code></pre>
18732<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
18733When this is not possible,<wbr/> the bar size should be rounded
18734down to the nearest integer and the pattern can repeat
18735on the right side.<wbr/></p>
18736<p>Each bar's height must always take up the full sensor
18737pixel array height.<wbr/></p>
18738<p>Each pixel in this test pattern must be set to either
187390% intensity or 100% intensity.<wbr/></p></span>
18740                  </li>
18741                  <li>
18742                    <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
18743                    <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
18744each bar should start at its specified color at the top,<wbr/>
18745and fade to gray at the bottom.<wbr/></p>
18746<p>Furthermore each bar is further subdivided into a left and
18747right half.<wbr/> The left half should have a smooth gradient,<wbr/>
18748and the right half should have a quantized gradient.<wbr/></p>
18749<p>In particular,<wbr/> the right half's should consist of blocks of the
18750same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
18751<p>The least significant bits in the quantized gradient should
18752be copied from the most significant bits of the smooth gradient.<wbr/></p>
18753<p>The height of each bar should always be a multiple of 128.<wbr/>
18754When this is not the case,<wbr/> the pattern should repeat at the bottom
18755of the image.<wbr/></p></span>
18756                  </li>
18757                  <li>
18758                    <span class="entry_type_enum_name">PN9</span>
18759                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
18760generated from a PN9 512-bit sequence (typically implemented
18761in hardware with a linear feedback shift register).<wbr/></p>
18762<p>The generator should be reset at the beginning of each frame,<wbr/>
18763and thus each subsequent raw frame with this test pattern should
18764be exactly the same as the last.<wbr/></p></span>
18765                  </li>
18766                  <li>
18767                    <span class="entry_type_enum_name">CUSTOM1</span>
18768                    <span class="entry_type_enum_value">256</span>
18769                    <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
18770available only on this camera device are at least this numeric
18771value.<wbr/></p>
18772<p>All of the custom test patterns will be static
18773(that is the raw image must not vary from frame to frame).<wbr/></p></span>
18774                  </li>
18775                </ul>
18776
18777            </td> <!-- entry_type -->
18778
18779            <td class="entry_description">
18780              <p>When enabled,<wbr/> the sensor sends a test pattern instead of
18781doing a real exposure from the camera.<wbr/></p>
18782            </td>
18783
18784            <td class="entry_units">
18785            </td>
18786
18787            <td class="entry_range">
18788              <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
18789            </td>
18790
18791            <td class="entry_tags">
18792            </td>
18793
18794          </tr>
18795          <tr class="entries_header">
18796            <th class="th_details" colspan="5">Details</th>
18797          </tr>
18798          <tr class="entry_cont">
18799            <td class="entry_details" colspan="5">
18800              <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
18801by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
18802work as normal.<wbr/></p>
18803<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
18804occur (and that the test pattern remain unmodified,<wbr/> since the flash
18805would not actually affect it).<wbr/></p>
18806<p>Defaults to OFF.<wbr/></p>
18807            </td>
18808          </tr>
18809
18810          <tr class="entries_header">
18811            <th class="th_details" colspan="5">HAL Implementation Details</th>
18812          </tr>
18813          <tr class="entry_cont">
18814            <td class="entry_details" colspan="5">
18815              <p>All test patterns are specified in the Bayer domain.<wbr/></p>
18816<p>The HAL may choose to substitute test patterns from the sensor
18817with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
18818indistinguishable to the ISP whether the data came from the
18819sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
18820            </td>
18821          </tr>
18822
18823          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18824           <!-- end of entry -->
18825
18826
18827
18828      <!-- end of kind -->
18829      </tbody>
18830      <tr><td colspan="6" class="kind">static</td></tr>
18831
18832      <thead class="entries_header">
18833        <tr>
18834          <th class="th_name">Property Name</th>
18835          <th class="th_type">Type</th>
18836          <th class="th_description">Description</th>
18837          <th class="th_units">Units</th>
18838          <th class="th_range">Range</th>
18839          <th class="th_tags">Tags</th>
18840        </tr>
18841      </thead>
18842
18843      <tbody>
18844
18845
18846
18847
18848
18849
18850
18851
18852
18853
18854
18855
18856          <tr class="entry" id="static_android.sensor.info.activeArraySize">
18857            <td class="entry_name
18858             " rowspan="5">
18859              android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
18860            </td>
18861            <td class="entry_type">
18862                <span class="entry_type_name">int32</span>
18863                <span class="entry_type_container">x</span>
18864
18865                <span class="entry_type_array">
18866                  4
18867                </span>
18868              <span class="entry_type_visibility"> [public as rectangle]</span>
18869
18870
18871              <span class="entry_type_hwlevel">[legacy] </span>
18872
18873
18874                <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
18875
18876
18877            </td> <!-- entry_type -->
18878
18879            <td class="entry_description">
18880              <p>The area of the image sensor which corresponds to active pixels after any geometric
18881distortion correction has been applied.<wbr/></p>
18882            </td>
18883
18884            <td class="entry_units">
18885              Pixel coordinates on the image sensor
18886            </td>
18887
18888            <td class="entry_range">
18889            </td>
18890
18891            <td class="entry_tags">
18892              <ul class="entry_tags">
18893                  <li><a href="#tag_RAW">RAW</a></li>
18894              </ul>
18895            </td>
18896
18897          </tr>
18898          <tr class="entries_header">
18899            <th class="th_details" colspan="5">Details</th>
18900          </tr>
18901          <tr class="entry_cont">
18902            <td class="entry_details" colspan="5">
18903              <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
18904the region that actually receives light from the scene) after any geometric correction
18905has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
18906image output formats aside from the raw formats.<wbr/></p>
18907<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
18908the full pixel array,<wbr/> and the size of the full pixel array is given by
18909<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
18910<p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
18911<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
18912this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
18913<p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
18914include black calibration pixels or other inactive regions,<wbr/> and geometric correction
18915resulting in scaling or cropping may have been applied.<wbr/></p>
18916            </td>
18917          </tr>
18918
18919          <tr class="entries_header">
18920            <th class="th_details" colspan="5">HAL Implementation Details</th>
18921          </tr>
18922          <tr class="entry_cont">
18923            <td class="entry_details" colspan="5">
18924              <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
18925&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
18926The <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>
18927            </td>
18928          </tr>
18929
18930          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18931           <!-- end of entry -->
18932
18933
18934          <tr class="entry" id="static_android.sensor.info.sensitivityRange">
18935            <td class="entry_name
18936             " rowspan="3">
18937              android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
18938            </td>
18939            <td class="entry_type">
18940                <span class="entry_type_name">int32</span>
18941                <span class="entry_type_container">x</span>
18942
18943                <span class="entry_type_array">
18944                  2
18945                </span>
18946              <span class="entry_type_visibility"> [public as rangeInt]</span>
18947
18948
18949              <span class="entry_type_hwlevel">[full] </span>
18950
18951
18952                <div class="entry_type_notes">Range of supported sensitivities</div>
18953
18954
18955            </td> <!-- entry_type -->
18956
18957            <td class="entry_description">
18958              <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
18959camera device.<wbr/></p>
18960            </td>
18961
18962            <td class="entry_units">
18963            </td>
18964
18965            <td class="entry_range">
18966              <p>Min &lt;= 100,<wbr/> Max &gt;= 800</p>
18967            </td>
18968
18969            <td class="entry_tags">
18970              <ul class="entry_tags">
18971                  <li><a href="#tag_BC">BC</a></li>
18972                  <li><a href="#tag_V1">V1</a></li>
18973              </ul>
18974            </td>
18975
18976          </tr>
18977          <tr class="entries_header">
18978            <th class="th_details" colspan="5">Details</th>
18979          </tr>
18980          <tr class="entry_cont">
18981            <td class="entry_details" colspan="5">
18982              <p>The values are the standard ISO sensitivity values,<wbr/>
18983as defined in ISO 12232:2006.<wbr/></p>
18984            </td>
18985          </tr>
18986
18987
18988          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18989           <!-- end of entry -->
18990
18991
18992          <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
18993            <td class="entry_name
18994             " rowspan="1">
18995              android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
18996            </td>
18997            <td class="entry_type">
18998                <span class="entry_type_name entry_type_name_enum">byte</span>
18999
19000              <span class="entry_type_visibility"> [public]</span>
19001
19002
19003              <span class="entry_type_hwlevel">[full] </span>
19004
19005
19006
19007                <ul class="entry_type_enum">
19008                  <li>
19009                    <span class="entry_type_enum_name">RGGB</span>
19010                  </li>
19011                  <li>
19012                    <span class="entry_type_enum_name">GRBG</span>
19013                  </li>
19014                  <li>
19015                    <span class="entry_type_enum_name">GBRG</span>
19016                  </li>
19017                  <li>
19018                    <span class="entry_type_enum_name">BGGR</span>
19019                  </li>
19020                  <li>
19021                    <span class="entry_type_enum_name">RGB</span>
19022                    <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
19023values for each pixel,<wbr/> instead of just 1 16-bit value
19024per pixel.<wbr/></p></span>
19025                  </li>
19026                </ul>
19027
19028            </td> <!-- entry_type -->
19029
19030            <td class="entry_description">
19031              <p>The arrangement of color filters on sensor;
19032represents the colors in the top-left 2x2 section of
19033the sensor,<wbr/> in reading order.<wbr/></p>
19034            </td>
19035
19036            <td class="entry_units">
19037            </td>
19038
19039            <td class="entry_range">
19040            </td>
19041
19042            <td class="entry_tags">
19043              <ul class="entry_tags">
19044                  <li><a href="#tag_RAW">RAW</a></li>
19045              </ul>
19046            </td>
19047
19048          </tr>
19049
19050
19051          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19052           <!-- end of entry -->
19053
19054
19055          <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
19056            <td class="entry_name
19057             " rowspan="3">
19058              android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
19059            </td>
19060            <td class="entry_type">
19061                <span class="entry_type_name">int64</span>
19062                <span class="entry_type_container">x</span>
19063
19064                <span class="entry_type_array">
19065                  2
19066                </span>
19067              <span class="entry_type_visibility"> [public as rangeLong]</span>
19068
19069
19070              <span class="entry_type_hwlevel">[full] </span>
19071
19072
19073                <div class="entry_type_notes">nanoseconds</div>
19074
19075
19076            </td> <!-- entry_type -->
19077
19078            <td class="entry_description">
19079              <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
19080by this camera device.<wbr/></p>
19081            </td>
19082
19083            <td class="entry_units">
19084              Nanoseconds
19085            </td>
19086
19087            <td class="entry_range">
19088              <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
19089capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
19090the maximum exposure time will be greater than 100ms.<wbr/></p>
19091            </td>
19092
19093            <td class="entry_tags">
19094              <ul class="entry_tags">
19095                  <li><a href="#tag_V1">V1</a></li>
19096              </ul>
19097            </td>
19098
19099          </tr>
19100
19101          <tr class="entries_header">
19102            <th class="th_details" colspan="5">HAL Implementation Details</th>
19103          </tr>
19104          <tr class="entry_cont">
19105            <td class="entry_details" colspan="5">
19106              <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
19107The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
19108100ms.<wbr/></p>
19109            </td>
19110          </tr>
19111
19112          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19113           <!-- end of entry -->
19114
19115
19116          <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
19117            <td class="entry_name
19118             " rowspan="5">
19119              android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
19120            </td>
19121            <td class="entry_type">
19122                <span class="entry_type_name">int64</span>
19123
19124              <span class="entry_type_visibility"> [public]</span>
19125
19126
19127              <span class="entry_type_hwlevel">[full] </span>
19128
19129
19130
19131
19132            </td> <!-- entry_type -->
19133
19134            <td class="entry_description">
19135              <p>The maximum possible frame duration (minimum frame rate) for
19136<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
19137            </td>
19138
19139            <td class="entry_units">
19140              Nanoseconds
19141            </td>
19142
19143            <td class="entry_range">
19144              <p>For FULL capability devices
19145(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
19146            </td>
19147
19148            <td class="entry_tags">
19149              <ul class="entry_tags">
19150                  <li><a href="#tag_V1">V1</a></li>
19151              </ul>
19152            </td>
19153
19154          </tr>
19155          <tr class="entries_header">
19156            <th class="th_details" colspan="5">Details</th>
19157          </tr>
19158          <tr class="entry_cont">
19159            <td class="entry_details" colspan="5">
19160              <p>Attempting to use frame durations beyond the maximum will result in the frame
19161duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
19162durations.<wbr/></p>
19163<p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
19164for the minimum frame duration values.<wbr/></p>
19165            </td>
19166          </tr>
19167
19168          <tr class="entries_header">
19169            <th class="th_details" colspan="5">HAL Implementation Details</th>
19170          </tr>
19171          <tr class="entry_cont">
19172            <td class="entry_details" colspan="5">
19173              <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
19174The maximum of the range SHOULD be at least
191751 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
19176<p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
19177equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
19178value (since exposure time overrides frame duration).<wbr/></p>
19179<p>Available minimum frame durations for JPEG must be no greater
19180than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
19181minimum frame durations (for that respective size).<wbr/></p>
19182<p>Since JPEG processing is considered offline and can take longer than
19183a single uncompressed capture,<wbr/> refer to
19184<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
19185for details about encoding this scenario.<wbr/></p>
19186            </td>
19187          </tr>
19188
19189          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19190           <!-- end of entry -->
19191
19192
19193          <tr class="entry" id="static_android.sensor.info.physicalSize">
19194            <td class="entry_name
19195             " rowspan="5">
19196              android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
19197            </td>
19198            <td class="entry_type">
19199                <span class="entry_type_name">float</span>
19200                <span class="entry_type_container">x</span>
19201
19202                <span class="entry_type_array">
19203                  2
19204                </span>
19205              <span class="entry_type_visibility"> [public as sizeF]</span>
19206
19207
19208              <span class="entry_type_hwlevel">[legacy] </span>
19209
19210
19211                <div class="entry_type_notes">width x height</div>
19212
19213
19214            </td> <!-- entry_type -->
19215
19216            <td class="entry_description">
19217              <p>The physical dimensions of the full pixel
19218array.<wbr/></p>
19219            </td>
19220
19221            <td class="entry_units">
19222              Millimeters
19223            </td>
19224
19225            <td class="entry_range">
19226            </td>
19227
19228            <td class="entry_tags">
19229              <ul class="entry_tags">
19230                  <li><a href="#tag_V1">V1</a></li>
19231                  <li><a href="#tag_BC">BC</a></li>
19232              </ul>
19233            </td>
19234
19235          </tr>
19236          <tr class="entries_header">
19237            <th class="th_details" colspan="5">Details</th>
19238          </tr>
19239          <tr class="entry_cont">
19240            <td class="entry_details" colspan="5">
19241              <p>This is the physical size of the sensor pixel
19242array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19243            </td>
19244          </tr>
19245
19246          <tr class="entries_header">
19247            <th class="th_details" colspan="5">HAL Implementation Details</th>
19248          </tr>
19249          <tr class="entry_cont">
19250            <td class="entry_details" colspan="5">
19251              <p>Needed for FOV calculation for old API</p>
19252            </td>
19253          </tr>
19254
19255          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19256           <!-- end of entry -->
19257
19258
19259          <tr class="entry" id="static_android.sensor.info.pixelArraySize">
19260            <td class="entry_name
19261             " rowspan="3">
19262              android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
19263            </td>
19264            <td class="entry_type">
19265                <span class="entry_type_name">int32</span>
19266                <span class="entry_type_container">x</span>
19267
19268                <span class="entry_type_array">
19269                  2
19270                </span>
19271              <span class="entry_type_visibility"> [public as size]</span>
19272
19273
19274              <span class="entry_type_hwlevel">[legacy] </span>
19275
19276
19277
19278
19279            </td> <!-- entry_type -->
19280
19281            <td class="entry_description">
19282              <p>Dimensions of the full pixel array,<wbr/> possibly
19283including black calibration pixels.<wbr/></p>
19284            </td>
19285
19286            <td class="entry_units">
19287              Pixels
19288            </td>
19289
19290            <td class="entry_range">
19291            </td>
19292
19293            <td class="entry_tags">
19294              <ul class="entry_tags">
19295                  <li><a href="#tag_RAW">RAW</a></li>
19296                  <li><a href="#tag_BC">BC</a></li>
19297              </ul>
19298            </td>
19299
19300          </tr>
19301          <tr class="entries_header">
19302            <th class="th_details" colspan="5">Details</th>
19303          </tr>
19304          <tr class="entry_cont">
19305            <td class="entry_details" colspan="5">
19306              <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
19307<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
19308the raw buffers produced by this sensor.<wbr/></p>
19309<p>If a camera device supports raw sensor formats,<wbr/> either this or
19310<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
19311output formats listed in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> (this depends on
19312whether or not the image sensor returns buffers containing pixels that are not
19313part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
19314<p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
19315or 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
19316defines the rectangle of active pixels that will be included in processed image
19317formats.<wbr/></p>
19318            </td>
19319          </tr>
19320
19321
19322          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19323           <!-- end of entry -->
19324
19325
19326          <tr class="entry" id="static_android.sensor.info.whiteLevel">
19327            <td class="entry_name
19328             " rowspan="5">
19329              android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
19330            </td>
19331            <td class="entry_type">
19332                <span class="entry_type_name">int32</span>
19333
19334              <span class="entry_type_visibility"> [public]</span>
19335
19336
19337
19338
19339
19340
19341            </td> <!-- entry_type -->
19342
19343            <td class="entry_description">
19344              <p>Maximum raw value output by sensor.<wbr/></p>
19345            </td>
19346
19347            <td class="entry_units">
19348            </td>
19349
19350            <td class="entry_range">
19351              <p>&gt; 255 (8-bit output)</p>
19352            </td>
19353
19354            <td class="entry_tags">
19355              <ul class="entry_tags">
19356                  <li><a href="#tag_RAW">RAW</a></li>
19357              </ul>
19358            </td>
19359
19360          </tr>
19361          <tr class="entries_header">
19362            <th class="th_details" colspan="5">Details</th>
19363          </tr>
19364          <tr class="entry_cont">
19365            <td class="entry_details" colspan="5">
19366              <p>This specifies the fully-saturated encoding level for the raw
19367sample values from the sensor.<wbr/>  This is typically caused by the
19368sensor becoming highly non-linear or clipping.<wbr/> The minimum for
19369each channel is specified by the offset in the
19370<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
19371<p>The white level is typically determined either by sensor bit depth
19372(8-14 bits is expected),<wbr/> or by the point where the sensor response
19373becomes too non-linear to be useful.<wbr/>  The default value for this is
19374maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
19375<p>The white level values of captured images may vary for different
19376capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
19377represents a coarse approximation for such case.<wbr/> It is recommended
19378to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported
19379by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p>
19380            </td>
19381          </tr>
19382
19383          <tr class="entries_header">
19384            <th class="th_details" colspan="5">HAL Implementation Details</th>
19385          </tr>
19386          <tr class="entry_cont">
19387            <td class="entry_details" colspan="5">
19388              <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
19389so the value for linear sensors should not be significantly lower
19390than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
19391            </td>
19392          </tr>
19393
19394          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19395           <!-- end of entry -->
19396
19397
19398          <tr class="entry" id="static_android.sensor.info.timestampSource">
19399            <td class="entry_name
19400             " rowspan="5">
19401              android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
19402            </td>
19403            <td class="entry_type">
19404                <span class="entry_type_name entry_type_name_enum">byte</span>
19405
19406              <span class="entry_type_visibility"> [public]</span>
19407
19408
19409              <span class="entry_type_hwlevel">[legacy] </span>
19410
19411
19412
19413                <ul class="entry_type_enum">
19414                  <li>
19415                    <span class="entry_type_enum_name">UNKNOWN</span>
19416                    <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/>
19417but can not be compared to timestamps from other subsystems
19418(e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
19419camera devices in the same system.<wbr/> Timestamps between streams and results for
19420a single camera instance are comparable,<wbr/> and the timestamps for all buffers
19421and the result metadata generated by a single capture are identical.<wbr/></p></span>
19422                  </li>
19423                  <li>
19424                    <span class="entry_type_enum_name">REALTIME</span>
19425                    <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
19426<a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
19427and they can be compared to other timestamps using that base.<wbr/></p></span>
19428                  </li>
19429                </ul>
19430
19431            </td> <!-- entry_type -->
19432
19433            <td class="entry_description">
19434              <p>The time base source for sensor capture start timestamps.<wbr/></p>
19435            </td>
19436
19437            <td class="entry_units">
19438            </td>
19439
19440            <td class="entry_range">
19441            </td>
19442
19443            <td class="entry_tags">
19444              <ul class="entry_tags">
19445                  <li><a href="#tag_V1">V1</a></li>
19446              </ul>
19447            </td>
19448
19449          </tr>
19450          <tr class="entries_header">
19451            <th class="th_details" colspan="5">Details</th>
19452          </tr>
19453          <tr class="entry_cont">
19454            <td class="entry_details" colspan="5">
19455              <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
19456may not based on a time source that can be compared to other system time sources.<wbr/></p>
19457<p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
19458can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
19459            </td>
19460          </tr>
19461
19462          <tr class="entries_header">
19463            <th class="th_details" colspan="5">HAL Implementation Details</th>
19464          </tr>
19465          <tr class="entry_cont">
19466            <td class="entry_details" colspan="5">
19467              <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp
19468source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera
19469framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See
19470system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and
19471SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video
19472recording might suffer unexpected behavior.<wbr/></p>
19473<p>Also,<wbr/> camera devices implements REALTIME must pass the ITS sensor fusion test which
19474tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p>
19475            </td>
19476          </tr>
19477
19478          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19479           <!-- end of entry -->
19480
19481
19482          <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
19483            <td class="entry_name
19484             " rowspan="3">
19485              android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
19486            </td>
19487            <td class="entry_type">
19488                <span class="entry_type_name entry_type_name_enum">byte</span>
19489
19490              <span class="entry_type_visibility"> [public as boolean]</span>
19491
19492
19493
19494
19495
19496                <ul class="entry_type_enum">
19497                  <li>
19498                    <span class="entry_type_enum_name">FALSE</span>
19499                  </li>
19500                  <li>
19501                    <span class="entry_type_enum_name">TRUE</span>
19502                  </li>
19503                </ul>
19504
19505            </td> <!-- entry_type -->
19506
19507            <td class="entry_description">
19508              <p>Whether the RAW images output from this camera device are subject to
19509lens shading correction.<wbr/></p>
19510            </td>
19511
19512            <td class="entry_units">
19513            </td>
19514
19515            <td class="entry_range">
19516            </td>
19517
19518            <td class="entry_tags">
19519            </td>
19520
19521          </tr>
19522          <tr class="entries_header">
19523            <th class="th_details" colspan="5">Details</th>
19524          </tr>
19525          <tr class="entry_cont">
19526            <td class="entry_details" colspan="5">
19527              <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
19528have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
19529not be adjusted for lens shading correction.<wbr/>
19530See <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>
19531<p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
19532Devices with RAW capability will always report this information in this key.<wbr/></p>
19533            </td>
19534          </tr>
19535
19536
19537          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19538           <!-- end of entry -->
19539
19540
19541          <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
19542            <td class="entry_name
19543             " rowspan="5">
19544              android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
19545            </td>
19546            <td class="entry_type">
19547                <span class="entry_type_name">int32</span>
19548                <span class="entry_type_container">x</span>
19549
19550                <span class="entry_type_array">
19551                  4
19552                </span>
19553              <span class="entry_type_visibility"> [public as rectangle]</span>
19554
19555
19556              <span class="entry_type_hwlevel">[legacy] </span>
19557
19558
19559                <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
19560
19561
19562            </td> <!-- entry_type -->
19563
19564            <td class="entry_description">
19565              <p>The area of the image sensor which corresponds to active pixels prior to the
19566application of any geometric distortion correction.<wbr/></p>
19567            </td>
19568
19569            <td class="entry_units">
19570              Pixel coordinates on the image sensor
19571            </td>
19572
19573            <td class="entry_range">
19574            </td>
19575
19576            <td class="entry_tags">
19577              <ul class="entry_tags">
19578                  <li><a href="#tag_RAW">RAW</a></li>
19579              </ul>
19580            </td>
19581
19582          </tr>
19583          <tr class="entries_header">
19584            <th class="th_details" colspan="5">Details</th>
19585          </tr>
19586          <tr class="entry_cont">
19587            <td class="entry_details" colspan="5">
19588              <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
19589the region that actually receives light from the scene) before any geometric correction
19590has been applied,<wbr/> and should be treated as the active region rectangle for any of the
19591raw formats.<wbr/>  All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
19592correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
19593the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
19594<p>The size of this region determines the maximum field of view and the maximum number of
19595pixels that an image from this sensor can contain,<wbr/> prior to the application of
19596geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
19597post-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>
19598field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
19599can be calculated by applying the geometric distortion correction fields to this
19600rectangle,<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>
19601<p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
19602dimensions 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/>
19603(x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in
19604<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
19605<ol>
19606<li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
19607<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
19608to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
19609<li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
19610(x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
19611buffers is defined relative to the top,<wbr/> left of the
19612<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>
19613<li>If the resulting corrected pixel coordinate is within the region given in
19614<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
19615processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
19616when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
19617</ol>
19618<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>
19619is (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/>
19620<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
19621correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
19622pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
19623with 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)
19624relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
19625<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19626<p>The currently supported fields that correct for geometric distortion are:</p>
19627<ol>
19628<li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>.<wbr/></li>
19629</ol>
19630<p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same
19631as the post-distortion-corrected rectangle given in
19632<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19633<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
19634the full pixel array,<wbr/> and the size of the full pixel array is given by
19635<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19636<p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
19637full array may include black calibration pixels or other inactive regions.<wbr/></p>
19638            </td>
19639          </tr>
19640
19641          <tr class="entries_header">
19642            <th class="th_details" colspan="5">HAL Implementation Details</th>
19643          </tr>
19644          <tr class="entry_cont">
19645            <td class="entry_details" colspan="5">
19646              <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
19647&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
19648The <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>
19649<p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
19650the same as the post-correction active array region given in
19651<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19652            </td>
19653          </tr>
19654
19655          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19656           <!-- end of entry -->
19657
19658
19659
19660
19661
19662          <tr class="entry" id="static_android.sensor.referenceIlluminant1">
19663            <td class="entry_name
19664             " rowspan="5">
19665              android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
19666            </td>
19667            <td class="entry_type">
19668                <span class="entry_type_name entry_type_name_enum">byte</span>
19669
19670              <span class="entry_type_visibility"> [public]</span>
19671
19672
19673
19674
19675
19676                <ul class="entry_type_enum">
19677                  <li>
19678                    <span class="entry_type_enum_name">DAYLIGHT</span>
19679                    <span class="entry_type_enum_value">1</span>
19680                  </li>
19681                  <li>
19682                    <span class="entry_type_enum_name">FLUORESCENT</span>
19683                    <span class="entry_type_enum_value">2</span>
19684                  </li>
19685                  <li>
19686                    <span class="entry_type_enum_name">TUNGSTEN</span>
19687                    <span class="entry_type_enum_value">3</span>
19688                    <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
19689                  </li>
19690                  <li>
19691                    <span class="entry_type_enum_name">FLASH</span>
19692                    <span class="entry_type_enum_value">4</span>
19693                  </li>
19694                  <li>
19695                    <span class="entry_type_enum_name">FINE_WEATHER</span>
19696                    <span class="entry_type_enum_value">9</span>
19697                  </li>
19698                  <li>
19699                    <span class="entry_type_enum_name">CLOUDY_WEATHER</span>
19700                    <span class="entry_type_enum_value">10</span>
19701                  </li>
19702                  <li>
19703                    <span class="entry_type_enum_name">SHADE</span>
19704                    <span class="entry_type_enum_value">11</span>
19705                  </li>
19706                  <li>
19707                    <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span>
19708                    <span class="entry_type_enum_value">12</span>
19709                    <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
19710                  </li>
19711                  <li>
19712                    <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span>
19713                    <span class="entry_type_enum_value">13</span>
19714                    <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
19715                  </li>
19716                  <li>
19717                    <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span>
19718                    <span class="entry_type_enum_value">14</span>
19719                    <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
19720                  </li>
19721                  <li>
19722                    <span class="entry_type_enum_name">WHITE_FLUORESCENT</span>
19723                    <span class="entry_type_enum_value">15</span>
19724                    <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
19725                  </li>
19726                  <li>
19727                    <span class="entry_type_enum_name">STANDARD_A</span>
19728                    <span class="entry_type_enum_value">17</span>
19729                  </li>
19730                  <li>
19731                    <span class="entry_type_enum_name">STANDARD_B</span>
19732                    <span class="entry_type_enum_value">18</span>
19733                  </li>
19734                  <li>
19735                    <span class="entry_type_enum_name">STANDARD_C</span>
19736                    <span class="entry_type_enum_value">19</span>
19737                  </li>
19738                  <li>
19739                    <span class="entry_type_enum_name">D55</span>
19740                    <span class="entry_type_enum_value">20</span>
19741                  </li>
19742                  <li>
19743                    <span class="entry_type_enum_name">D65</span>
19744                    <span class="entry_type_enum_value">21</span>
19745                  </li>
19746                  <li>
19747                    <span class="entry_type_enum_name">D75</span>
19748                    <span class="entry_type_enum_value">22</span>
19749                  </li>
19750                  <li>
19751                    <span class="entry_type_enum_name">D50</span>
19752                    <span class="entry_type_enum_value">23</span>
19753                  </li>
19754                  <li>
19755                    <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span>
19756                    <span class="entry_type_enum_value">24</span>
19757                  </li>
19758                </ul>
19759
19760            </td> <!-- entry_type -->
19761
19762            <td class="entry_description">
19763              <p>The standard reference illuminant used as the scene light source when
19764calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
19765<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
19766<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
19767            </td>
19768
19769            <td class="entry_units">
19770            </td>
19771
19772            <td class="entry_range">
19773            </td>
19774
19775            <td class="entry_tags">
19776              <ul class="entry_tags">
19777                  <li><a href="#tag_RAW">RAW</a></li>
19778              </ul>
19779            </td>
19780
19781          </tr>
19782          <tr class="entries_header">
19783            <th class="th_details" colspan="5">Details</th>
19784          </tr>
19785          <tr class="entry_cont">
19786            <td class="entry_details" colspan="5">
19787              <p>The values in this key correspond to the values defined for the
19788EXIF LightSource tag.<wbr/> These illuminants are standard light sources
19789that are often used calibrating camera devices.<wbr/></p>
19790<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
19791<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
19792<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
19793<p>Some devices may choose to provide a second set of calibration
19794information for improved quality,<wbr/> including
19795<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
19796            </td>
19797          </tr>
19798
19799          <tr class="entries_header">
19800            <th class="th_details" colspan="5">HAL Implementation Details</th>
19801          </tr>
19802          <tr class="entry_cont">
19803            <td class="entry_details" colspan="5">
19804              <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
19805and corresponding matrices must be present to support the RAW capability
19806and DNG output.<wbr/></p>
19807<p>When producing raw images with a color profile that has only been
19808calibrated against a single light source,<wbr/> it is valid to omit
19809<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
19810<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/>
19811and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
19812<p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
19813chosen so that it is representative of typical scene lighting.<wbr/>  In
19814general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
19815<p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
19816<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
19817chosen to represent the typical range of scene lighting conditions.<wbr/>
19818In general,<wbr/> low color temperature illuminant such as Standard-A will
19819be chosen for the first reference illuminant and a higher color
19820temperature illuminant such as D65 will be chosen for the second
19821reference illuminant.<wbr/></p>
19822            </td>
19823          </tr>
19824
19825          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19826           <!-- end of entry -->
19827
19828
19829          <tr class="entry" id="static_android.sensor.referenceIlluminant2">
19830            <td class="entry_name
19831             " rowspan="3">
19832              android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
19833            </td>
19834            <td class="entry_type">
19835                <span class="entry_type_name">byte</span>
19836
19837              <span class="entry_type_visibility"> [public]</span>
19838
19839
19840
19841
19842
19843
19844            </td> <!-- entry_type -->
19845
19846            <td class="entry_description">
19847              <p>The standard reference illuminant used as the scene light source when
19848calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
19849<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
19850<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
19851            </td>
19852
19853            <td class="entry_units">
19854            </td>
19855
19856            <td class="entry_range">
19857              <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
19858            </td>
19859
19860            <td class="entry_tags">
19861              <ul class="entry_tags">
19862                  <li><a href="#tag_RAW">RAW</a></li>
19863              </ul>
19864            </td>
19865
19866          </tr>
19867          <tr class="entries_header">
19868            <th class="th_details" colspan="5">Details</th>
19869          </tr>
19870          <tr class="entry_cont">
19871            <td class="entry_details" colspan="5">
19872              <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
19873<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
19874<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
19875<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
19876            </td>
19877          </tr>
19878
19879
19880          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19881           <!-- end of entry -->
19882
19883
19884          <tr class="entry" id="static_android.sensor.calibrationTransform1">
19885            <td class="entry_name
19886             " rowspan="3">
19887              android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
19888            </td>
19889            <td class="entry_type">
19890                <span class="entry_type_name">rational</span>
19891                <span class="entry_type_container">x</span>
19892
19893                <span class="entry_type_array">
19894                  3 x 3
19895                </span>
19896              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19897
19898
19899
19900
19901                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19902
19903
19904            </td> <!-- entry_type -->
19905
19906            <td class="entry_description">
19907              <p>A per-device calibration transform matrix that maps from the
19908reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
19909            </td>
19910
19911            <td class="entry_units">
19912            </td>
19913
19914            <td class="entry_range">
19915            </td>
19916
19917            <td class="entry_tags">
19918              <ul class="entry_tags">
19919                  <li><a href="#tag_RAW">RAW</a></li>
19920              </ul>
19921            </td>
19922
19923          </tr>
19924          <tr class="entries_header">
19925            <th class="th_details" colspan="5">Details</th>
19926          </tr>
19927          <tr class="entry_cont">
19928            <td class="entry_details" colspan="5">
19929              <p>This matrix is used to correct for per-device variations in the
19930sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
19931<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
19932contains a per-device calibration transform that maps colors
19933from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
19934colorspace) into this camera device's native sensor color
19935space under the first reference illuminant
19936(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
19937            </td>
19938          </tr>
19939
19940
19941          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19942           <!-- end of entry -->
19943
19944
19945          <tr class="entry" id="static_android.sensor.calibrationTransform2">
19946            <td class="entry_name
19947             " rowspan="3">
19948              android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
19949            </td>
19950            <td class="entry_type">
19951                <span class="entry_type_name">rational</span>
19952                <span class="entry_type_container">x</span>
19953
19954                <span class="entry_type_array">
19955                  3 x 3
19956                </span>
19957              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19958
19959
19960
19961
19962                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19963
19964
19965            </td> <!-- entry_type -->
19966
19967            <td class="entry_description">
19968              <p>A per-device calibration transform matrix that maps from the
19969reference sensor colorspace to the actual device sensor colorspace
19970(this is the colorspace of the raw buffer data).<wbr/></p>
19971            </td>
19972
19973            <td class="entry_units">
19974            </td>
19975
19976            <td class="entry_range">
19977            </td>
19978
19979            <td class="entry_tags">
19980              <ul class="entry_tags">
19981                  <li><a href="#tag_RAW">RAW</a></li>
19982              </ul>
19983            </td>
19984
19985          </tr>
19986          <tr class="entries_header">
19987            <th class="th_details" colspan="5">Details</th>
19988          </tr>
19989          <tr class="entry_cont">
19990            <td class="entry_details" colspan="5">
19991              <p>This matrix is used to correct for per-device variations in the
19992sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
19993<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
19994contains a per-device calibration transform that maps colors
19995from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
19996colorspace) into this camera device's native sensor color
19997space under the second reference illuminant
19998(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
19999<p>This matrix will only be present if the second reference
20000illuminant is present.<wbr/></p>
20001            </td>
20002          </tr>
20003
20004
20005          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20006           <!-- end of entry -->
20007
20008
20009          <tr class="entry" id="static_android.sensor.colorTransform1">
20010            <td class="entry_name
20011             " rowspan="3">
20012              android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
20013            </td>
20014            <td class="entry_type">
20015                <span class="entry_type_name">rational</span>
20016                <span class="entry_type_container">x</span>
20017
20018                <span class="entry_type_array">
20019                  3 x 3
20020                </span>
20021              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
20022
20023
20024
20025
20026                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
20027
20028
20029            </td> <!-- entry_type -->
20030
20031            <td class="entry_description">
20032              <p>A matrix that transforms color values from CIE XYZ color space to
20033reference sensor color space.<wbr/></p>
20034            </td>
20035
20036            <td class="entry_units">
20037            </td>
20038
20039            <td class="entry_range">
20040            </td>
20041
20042            <td class="entry_tags">
20043              <ul class="entry_tags">
20044                  <li><a href="#tag_RAW">RAW</a></li>
20045              </ul>
20046            </td>
20047
20048          </tr>
20049          <tr class="entries_header">
20050            <th class="th_details" colspan="5">Details</th>
20051          </tr>
20052          <tr class="entry_cont">
20053            <td class="entry_details" colspan="5">
20054              <p>This matrix is used to convert from the standard CIE XYZ color
20055space to the reference sensor colorspace,<wbr/> and is used when processing
20056raw buffer data.<wbr/></p>
20057<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
20058contains a color transform matrix that maps colors from the CIE
20059XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
20060"golden module" colorspace) under the first reference illuminant
20061(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
20062<p>The white points chosen in both the reference sensor color space
20063and the CIE XYZ colorspace when calculating this transform will
20064match the standard white point for the first reference illuminant
20065(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
20066            </td>
20067          </tr>
20068
20069
20070          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20071           <!-- end of entry -->
20072
20073
20074          <tr class="entry" id="static_android.sensor.colorTransform2">
20075            <td class="entry_name
20076             " rowspan="3">
20077              android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
20078            </td>
20079            <td class="entry_type">
20080                <span class="entry_type_name">rational</span>
20081                <span class="entry_type_container">x</span>
20082
20083                <span class="entry_type_array">
20084                  3 x 3
20085                </span>
20086              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
20087
20088
20089
20090
20091                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
20092
20093
20094            </td> <!-- entry_type -->
20095
20096            <td class="entry_description">
20097              <p>A matrix that transforms color values from CIE XYZ color space to
20098reference sensor color space.<wbr/></p>
20099            </td>
20100
20101            <td class="entry_units">
20102            </td>
20103
20104            <td class="entry_range">
20105            </td>
20106
20107            <td class="entry_tags">
20108              <ul class="entry_tags">
20109                  <li><a href="#tag_RAW">RAW</a></li>
20110              </ul>
20111            </td>
20112
20113          </tr>
20114          <tr class="entries_header">
20115            <th class="th_details" colspan="5">Details</th>
20116          </tr>
20117          <tr class="entry_cont">
20118            <td class="entry_details" colspan="5">
20119              <p>This matrix is used to convert from the standard CIE XYZ color
20120space to the reference sensor colorspace,<wbr/> and is used when processing
20121raw buffer data.<wbr/></p>
20122<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
20123contains a color transform matrix that maps colors from the CIE
20124XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
20125"golden module" colorspace) under the second reference illuminant
20126(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
20127<p>The white points chosen in both the reference sensor color space
20128and the CIE XYZ colorspace when calculating this transform will
20129match the standard white point for the second reference illuminant
20130(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
20131<p>This matrix will only be present if the second reference
20132illuminant is present.<wbr/></p>
20133            </td>
20134          </tr>
20135
20136
20137          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20138           <!-- end of entry -->
20139
20140
20141          <tr class="entry" id="static_android.sensor.forwardMatrix1">
20142            <td class="entry_name
20143             " rowspan="3">
20144              android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
20145            </td>
20146            <td class="entry_type">
20147                <span class="entry_type_name">rational</span>
20148                <span class="entry_type_container">x</span>
20149
20150                <span class="entry_type_array">
20151                  3 x 3
20152                </span>
20153              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
20154
20155
20156
20157
20158                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
20159
20160
20161            </td> <!-- entry_type -->
20162
20163            <td class="entry_description">
20164              <p>A matrix that transforms white balanced camera colors from the reference
20165sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
20166            </td>
20167
20168            <td class="entry_units">
20169            </td>
20170
20171            <td class="entry_range">
20172            </td>
20173
20174            <td class="entry_tags">
20175              <ul class="entry_tags">
20176                  <li><a href="#tag_RAW">RAW</a></li>
20177              </ul>
20178            </td>
20179
20180          </tr>
20181          <tr class="entries_header">
20182            <th class="th_details" colspan="5">Details</th>
20183          </tr>
20184          <tr class="entry_cont">
20185            <td class="entry_details" colspan="5">
20186              <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
20187is used when processing raw buffer data.<wbr/></p>
20188<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
20189a color transform matrix that maps white balanced colors from the
20190reference sensor color space to the CIE XYZ color space with a D50 white
20191point.<wbr/></p>
20192<p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
20193this matrix is chosen so that the standard white point for this reference
20194illuminant in the reference sensor colorspace is mapped to D50 in the
20195CIE XYZ colorspace.<wbr/></p>
20196            </td>
20197          </tr>
20198
20199
20200          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20201           <!-- end of entry -->
20202
20203
20204          <tr class="entry" id="static_android.sensor.forwardMatrix2">
20205            <td class="entry_name
20206             " rowspan="3">
20207              android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
20208            </td>
20209            <td class="entry_type">
20210                <span class="entry_type_name">rational</span>
20211                <span class="entry_type_container">x</span>
20212
20213                <span class="entry_type_array">
20214                  3 x 3
20215                </span>
20216              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
20217
20218
20219
20220
20221                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
20222
20223
20224            </td> <!-- entry_type -->
20225
20226            <td class="entry_description">
20227              <p>A matrix that transforms white balanced camera colors from the reference
20228sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
20229            </td>
20230
20231            <td class="entry_units">
20232            </td>
20233
20234            <td class="entry_range">
20235            </td>
20236
20237            <td class="entry_tags">
20238              <ul class="entry_tags">
20239                  <li><a href="#tag_RAW">RAW</a></li>
20240              </ul>
20241            </td>
20242
20243          </tr>
20244          <tr class="entries_header">
20245            <th class="th_details" colspan="5">Details</th>
20246          </tr>
20247          <tr class="entry_cont">
20248            <td class="entry_details" colspan="5">
20249              <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
20250is used when processing raw buffer data.<wbr/></p>
20251<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
20252a color transform matrix that maps white balanced colors from the
20253reference sensor color space to the CIE XYZ color space with a D50 white
20254point.<wbr/></p>
20255<p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
20256this matrix is chosen so that the standard white point for this reference
20257illuminant in the reference sensor colorspace is mapped to D50 in the
20258CIE XYZ colorspace.<wbr/></p>
20259<p>This matrix will only be present if the second reference
20260illuminant is present.<wbr/></p>
20261            </td>
20262          </tr>
20263
20264
20265          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20266           <!-- end of entry -->
20267
20268
20269          <tr class="entry" id="static_android.sensor.baseGainFactor">
20270            <td class="entry_name
20271             " rowspan="1">
20272              android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
20273            </td>
20274            <td class="entry_type">
20275                <span class="entry_type_name">rational</span>
20276
20277              <span class="entry_type_visibility"> [system]</span>
20278
20279
20280
20281
20282
20283
20284            </td> <!-- entry_type -->
20285
20286            <td class="entry_description">
20287              <p>Gain factor from electrons to raw units when
20288ISO=100</p>
20289            </td>
20290
20291            <td class="entry_units">
20292            </td>
20293
20294            <td class="entry_range">
20295            </td>
20296
20297            <td class="entry_tags">
20298              <ul class="entry_tags">
20299                  <li><a href="#tag_FUTURE">FUTURE</a></li>
20300              </ul>
20301            </td>
20302
20303          </tr>
20304
20305
20306          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20307           <!-- end of entry -->
20308
20309
20310          <tr class="entry" id="static_android.sensor.blackLevelPattern">
20311            <td class="entry_name
20312             " rowspan="5">
20313              android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
20314            </td>
20315            <td class="entry_type">
20316                <span class="entry_type_name">int32</span>
20317                <span class="entry_type_container">x</span>
20318
20319                <span class="entry_type_array">
20320                  4
20321                </span>
20322              <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
20323
20324
20325
20326
20327                <div class="entry_type_notes">2x2 raw count block</div>
20328
20329
20330            </td> <!-- entry_type -->
20331
20332            <td class="entry_description">
20333              <p>A fixed black level offset for each of the color filter arrangement
20334(CFA) mosaic channels.<wbr/></p>
20335            </td>
20336
20337            <td class="entry_units">
20338            </td>
20339
20340            <td class="entry_range">
20341              <p>&gt;= 0 for each.<wbr/></p>
20342            </td>
20343
20344            <td class="entry_tags">
20345              <ul class="entry_tags">
20346                  <li><a href="#tag_RAW">RAW</a></li>
20347              </ul>
20348            </td>
20349
20350          </tr>
20351          <tr class="entries_header">
20352            <th class="th_details" colspan="5">Details</th>
20353          </tr>
20354          <tr class="entry_cont">
20355            <td class="entry_details" colspan="5">
20356              <p>This key specifies the zero light value for each of the CFA mosaic
20357channels in the camera sensor.<wbr/>  The maximal value output by the
20358sensor 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>
20359<p>The values are given in the same order as channels listed for the CFA
20360layout 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
20361nth value given corresponds to the black level offset for the nth
20362color channel listed in the CFA.<wbr/></p>
20363<p>The black level values of captured images may vary for different
20364capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
20365represents a coarse approximation for such case.<wbr/> It is recommended to
20366use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from
20367<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when
20368supported by the camera device,<wbr/> which provides more accurate black
20369level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use
20370pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black
20371level values for each frame.<wbr/></p>
20372            </td>
20373          </tr>
20374
20375          <tr class="entries_header">
20376            <th class="th_details" colspan="5">HAL Implementation Details</th>
20377          </tr>
20378          <tr class="entry_cont">
20379            <td class="entry_details" colspan="5">
20380              <p>The values are given in row-column scan order,<wbr/> with the first value
20381corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
20382            </td>
20383          </tr>
20384
20385          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20386           <!-- end of entry -->
20387
20388
20389          <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
20390            <td class="entry_name
20391             " rowspan="3">
20392              android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
20393            </td>
20394            <td class="entry_type">
20395                <span class="entry_type_name">int32</span>
20396
20397              <span class="entry_type_visibility"> [public]</span>
20398
20399
20400              <span class="entry_type_hwlevel">[full] </span>
20401
20402
20403
20404
20405            </td> <!-- entry_type -->
20406
20407            <td class="entry_description">
20408              <p>Maximum sensitivity that is implemented
20409purely through analog gain.<wbr/></p>
20410            </td>
20411
20412            <td class="entry_units">
20413            </td>
20414
20415            <td class="entry_range">
20416            </td>
20417
20418            <td class="entry_tags">
20419              <ul class="entry_tags">
20420                  <li><a href="#tag_V1">V1</a></li>
20421                  <li><a href="#tag_FULL">FULL</a></li>
20422              </ul>
20423            </td>
20424
20425          </tr>
20426          <tr class="entries_header">
20427            <th class="th_details" colspan="5">Details</th>
20428          </tr>
20429          <tr class="entry_cont">
20430            <td class="entry_details" colspan="5">
20431              <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
20432equal to this,<wbr/> all applied gain must be analog.<wbr/> For
20433values above this,<wbr/> the gain applied can be a mix of analog and
20434digital.<wbr/></p>
20435            </td>
20436          </tr>
20437
20438
20439          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20440           <!-- end of entry -->
20441
20442
20443          <tr class="entry" id="static_android.sensor.orientation">
20444            <td class="entry_name
20445             " rowspan="3">
20446              android.<wbr/>sensor.<wbr/>orientation
20447            </td>
20448            <td class="entry_type">
20449                <span class="entry_type_name">int32</span>
20450
20451              <span class="entry_type_visibility"> [public]</span>
20452
20453
20454              <span class="entry_type_hwlevel">[legacy] </span>
20455
20456
20457
20458
20459            </td> <!-- entry_type -->
20460
20461            <td class="entry_description">
20462              <p>Clockwise angle through which the output image needs to be rotated to be
20463upright on the device screen in its native orientation.<wbr/></p>
20464            </td>
20465
20466            <td class="entry_units">
20467              Degrees of clockwise rotation; always a multiple of
20468          90
20469            </td>
20470
20471            <td class="entry_range">
20472              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
20473            </td>
20474
20475            <td class="entry_tags">
20476              <ul class="entry_tags">
20477                  <li><a href="#tag_BC">BC</a></li>
20478              </ul>
20479            </td>
20480
20481          </tr>
20482          <tr class="entries_header">
20483            <th class="th_details" colspan="5">Details</th>
20484          </tr>
20485          <tr class="entry_cont">
20486            <td class="entry_details" colspan="5">
20487              <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
20488the sensor's coordinate system.<wbr/></p>
20489            </td>
20490          </tr>
20491
20492
20493          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20494           <!-- end of entry -->
20495
20496
20497          <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
20498            <td class="entry_name
20499             " rowspan="3">
20500              android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
20501            </td>
20502            <td class="entry_type">
20503                <span class="entry_type_name">int32</span>
20504                <span class="entry_type_container">x</span>
20505
20506                <span class="entry_type_array">
20507                  3
20508                </span>
20509              <span class="entry_type_visibility"> [system]</span>
20510
20511
20512
20513
20514                <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
20515
20516
20517            </td> <!-- entry_type -->
20518
20519            <td class="entry_description">
20520              <p>The number of input samples for each dimension of
20521<a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
20522            </td>
20523
20524            <td class="entry_units">
20525            </td>
20526
20527            <td class="entry_range">
20528              <p>Hue &gt;= 1,<wbr/>
20529Saturation &gt;= 2,<wbr/>
20530Value &gt;= 1</p>
20531            </td>
20532
20533            <td class="entry_tags">
20534              <ul class="entry_tags">
20535                  <li><a href="#tag_RAW">RAW</a></li>
20536              </ul>
20537            </td>
20538
20539          </tr>
20540          <tr class="entries_header">
20541            <th class="th_details" colspan="5">Details</th>
20542          </tr>
20543          <tr class="entry_cont">
20544            <td class="entry_details" colspan="5">
20545              <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
20546dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the
20547dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
20548element.<wbr/></p>
20549            </td>
20550          </tr>
20551
20552
20553          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20554           <!-- end of entry -->
20555
20556
20557          <tr class="entry" id="static_android.sensor.availableTestPatternModes">
20558            <td class="entry_name
20559             " rowspan="5">
20560              android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
20561            </td>
20562            <td class="entry_type">
20563                <span class="entry_type_name">int32</span>
20564                <span class="entry_type_container">x</span>
20565
20566                <span class="entry_type_array">
20567                  n
20568                </span>
20569              <span class="entry_type_visibility"> [public]</span>
20570
20571
20572
20573
20574                <div class="entry_type_notes">list of enums</div>
20575
20576
20577            </td> <!-- entry_type -->
20578
20579            <td class="entry_description">
20580              <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
20581supported by this camera device.<wbr/></p>
20582            </td>
20583
20584            <td class="entry_units">
20585            </td>
20586
20587            <td class="entry_range">
20588              <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
20589            </td>
20590
20591            <td class="entry_tags">
20592            </td>
20593
20594          </tr>
20595          <tr class="entries_header">
20596            <th class="th_details" colspan="5">Details</th>
20597          </tr>
20598          <tr class="entry_cont">
20599            <td class="entry_details" colspan="5">
20600              <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
20601            </td>
20602          </tr>
20603
20604          <tr class="entries_header">
20605            <th class="th_details" colspan="5">HAL Implementation Details</th>
20606          </tr>
20607          <tr class="entry_cont">
20608            <td class="entry_details" colspan="5">
20609              <p>All custom modes must be &gt;= CUSTOM1.<wbr/></p>
20610            </td>
20611          </tr>
20612
20613          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20614           <!-- end of entry -->
20615
20616
20617          <tr class="entry" id="static_android.sensor.opticalBlackRegions">
20618            <td class="entry_name
20619             " rowspan="5">
20620              android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions
20621            </td>
20622            <td class="entry_type">
20623                <span class="entry_type_name">int32</span>
20624                <span class="entry_type_container">x</span>
20625
20626                <span class="entry_type_array">
20627                  4 x num_regions
20628                </span>
20629              <span class="entry_type_visibility"> [public as rectangle]</span>
20630
20631
20632
20633
20634
20635
20636            </td> <!-- entry_type -->
20637
20638            <td class="entry_description">
20639              <p>List of disjoint rectangles indicating the sensor
20640optically shielded black pixel regions.<wbr/></p>
20641            </td>
20642
20643            <td class="entry_units">
20644            </td>
20645
20646            <td class="entry_range">
20647            </td>
20648
20649            <td class="entry_tags">
20650            </td>
20651
20652          </tr>
20653          <tr class="entries_header">
20654            <th class="th_details" colspan="5">Details</th>
20655          </tr>
20656          <tr class="entry_cont">
20657            <td class="entry_details" colspan="5">
20658              <p>In most camera sensors,<wbr/> the active array is surrounded by some
20659optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels
20660provides a reliable black reference for black level compensation
20661in active array region.<wbr/></p>
20662<p>This key provides a list of disjoint rectangles specifying the
20663regions of optically shielded (with metal shield) black pixel
20664regions if the camera device is capable of reading out these black
20665pixels in the output raw images.<wbr/> In comparison to the fixed black
20666level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key
20667may provide a more accurate way for the application to calculate
20668black level of each captured raw images.<wbr/></p>
20669<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
20670<a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p>
20671            </td>
20672          </tr>
20673
20674          <tr class="entries_header">
20675            <th class="th_details" colspan="5">HAL Implementation Details</th>
20676          </tr>
20677          <tr class="entry_cont">
20678            <td class="entry_details" colspan="5">
20679              <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin)
20680must be &gt;= (0,<wbr/>0) and &lt;=
20681<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
20682&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
20683outside the region reported by
20684<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>
20685<p>The HAL must report minimal number of disjoint regions for the
20686optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can
20687be covered by one rectangle,<wbr/> the HAL must not split this region into
20688multiple rectangles.<wbr/></p>
20689            </td>
20690          </tr>
20691
20692          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20693           <!-- end of entry -->
20694
20695
20696          <tr class="entry" id="static_android.sensor.opaqueRawSize">
20697            <td class="entry_name
20698             " rowspan="5">
20699              android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size
20700            </td>
20701            <td class="entry_type">
20702                <span class="entry_type_name">int32</span>
20703                <span class="entry_type_container">x</span>
20704
20705                <span class="entry_type_array">
20706                  n x 3
20707                </span>
20708              <span class="entry_type_visibility"> [system]</span>
20709
20710
20711
20712
20713
20714
20715            </td> <!-- entry_type -->
20716
20717            <td class="entry_description">
20718              <p>Size in bytes for all the listed opaque RAW buffer sizes</p>
20719            </td>
20720
20721            <td class="entry_units">
20722            </td>
20723
20724            <td class="entry_range">
20725              <p>Must be large enough to fit the opaque RAW of corresponding size produced by
20726the camera</p>
20727            </td>
20728
20729            <td class="entry_tags">
20730            </td>
20731
20732          </tr>
20733          <tr class="entries_header">
20734            <th class="th_details" colspan="5">Details</th>
20735          </tr>
20736          <tr class="entry_cont">
20737            <td class="entry_details" colspan="5">
20738              <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/>
20739This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/>
20740All RAW_<wbr/>OPAQUE output stream configuration listed in
20741<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in
20742this key.<wbr/></p>
20743            </td>
20744          </tr>
20745
20746          <tr class="entries_header">
20747            <th class="th_details" colspan="5">HAL Implementation Details</th>
20748          </tr>
20749          <tr class="entry_cont">
20750            <td class="entry_details" colspan="5">
20751              <p>This key is added in HAL3.<wbr/>4.<wbr/>
20752For HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this key.<wbr/>
20753For HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera framework
20754will derive this key by assuming each pixel takes two bytes and no padding bytes
20755between rows.<wbr/></p>
20756            </td>
20757          </tr>
20758
20759          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20760           <!-- end of entry -->
20761
20762
20763
20764      <!-- end of kind -->
20765      </tbody>
20766      <tr><td colspan="6" class="kind">dynamic</td></tr>
20767
20768      <thead class="entries_header">
20769        <tr>
20770          <th class="th_name">Property Name</th>
20771          <th class="th_type">Type</th>
20772          <th class="th_description">Description</th>
20773          <th class="th_units">Units</th>
20774          <th class="th_range">Range</th>
20775          <th class="th_tags">Tags</th>
20776        </tr>
20777      </thead>
20778
20779      <tbody>
20780
20781
20782
20783
20784
20785
20786
20787
20788
20789
20790          <tr class="entry" id="dynamic_android.sensor.exposureTime">
20791            <td class="entry_name
20792             " rowspan="3">
20793              android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
20794            </td>
20795            <td class="entry_type">
20796                <span class="entry_type_name">int64</span>
20797
20798              <span class="entry_type_visibility"> [public]</span>
20799
20800
20801              <span class="entry_type_hwlevel">[full] </span>
20802
20803
20804
20805
20806            </td> <!-- entry_type -->
20807
20808            <td class="entry_description">
20809              <p>Duration each pixel is exposed to
20810light.<wbr/></p>
20811            </td>
20812
20813            <td class="entry_units">
20814              Nanoseconds
20815            </td>
20816
20817            <td class="entry_range">
20818              <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
20819            </td>
20820
20821            <td class="entry_tags">
20822              <ul class="entry_tags">
20823                  <li><a href="#tag_V1">V1</a></li>
20824              </ul>
20825            </td>
20826
20827          </tr>
20828          <tr class="entries_header">
20829            <th class="th_details" colspan="5">Details</th>
20830          </tr>
20831          <tr class="entry_cont">
20832            <td class="entry_details" colspan="5">
20833              <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
20834duration exposed to the nearest possible value (rather than expose longer).<wbr/>
20835The final exposure time used will be available in the output capture result.<wbr/></p>
20836<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
20837OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
20838            </td>
20839          </tr>
20840
20841
20842          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20843           <!-- end of entry -->
20844
20845
20846          <tr class="entry" id="dynamic_android.sensor.frameDuration">
20847            <td class="entry_name
20848             " rowspan="5">
20849              android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
20850            </td>
20851            <td class="entry_type">
20852                <span class="entry_type_name">int64</span>
20853
20854              <span class="entry_type_visibility"> [public]</span>
20855
20856
20857              <span class="entry_type_hwlevel">[full] </span>
20858
20859
20860
20861
20862            </td> <!-- entry_type -->
20863
20864            <td class="entry_description">
20865              <p>Duration from start of frame exposure to
20866start of next frame exposure.<wbr/></p>
20867            </td>
20868
20869            <td class="entry_units">
20870              Nanoseconds
20871            </td>
20872
20873            <td class="entry_range">
20874              <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
20875<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
20876is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
20877            </td>
20878
20879            <td class="entry_tags">
20880              <ul class="entry_tags">
20881                  <li><a href="#tag_V1">V1</a></li>
20882              </ul>
20883            </td>
20884
20885          </tr>
20886          <tr class="entries_header">
20887            <th class="th_details" colspan="5">Details</th>
20888          </tr>
20889          <tr class="entry_cont">
20890            <td class="entry_details" colspan="5">
20891              <p>The maximum frame rate that can be supported by a camera subsystem is
20892a function of many factors:</p>
20893<ul>
20894<li>Requested resolutions of output image streams</li>
20895<li>Availability of binning /<wbr/> skipping modes on the imager</li>
20896<li>The bandwidth of the imager interface</li>
20897<li>The bandwidth of the various ISP processing blocks</li>
20898</ul>
20899<p>Since these factors can vary greatly between different ISPs and
20900sensors,<wbr/> the camera abstraction tries to represent the bandwidth
20901restrictions with as simple a model as possible.<wbr/></p>
20902<p>The model presented has the following characteristics:</p>
20903<ul>
20904<li>The image sensor is always configured to output the smallest
20905resolution possible given the application's requested output stream
20906sizes.<wbr/>  The smallest resolution is defined as being at least as large
20907as the largest requested output stream size; the camera pipeline must
20908never digitally upsample sensor data when the crop region covers the
20909whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
20910resolutions are configured,<wbr/> the sensor can provide a higher frame
20911rate.<wbr/></li>
20912<li>Since any request may use any or all the currently configured
20913output streams,<wbr/> the sensor and ISP must be configured to support
20914scaling a single capture to all the streams at the same time.<wbr/>  This
20915means the camera pipeline must be ready to produce the largest
20916requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
20917frame rate of a given configured stream set is governed only by the
20918largest requested stream resolution.<wbr/></li>
20919<li>Using more than one output stream in a request does not affect the
20920frame duration.<wbr/></li>
20921<li>Certain format-streams may need to do additional background processing
20922before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
20923can run concurrently to the rest of the camera pipeline,<wbr/> but
20924cannot process more than 1 capture at a time.<wbr/></li>
20925</ul>
20926<p>The necessary information for the application,<wbr/> given the model above,<wbr/>
20927is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using
20928<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
20929These are used to determine the maximum frame rate /<wbr/> minimum frame
20930duration that is possible for a given stream configuration.<wbr/></p>
20931<p>Specifically,<wbr/> the application can use the following rules to
20932determine the minimum frame duration it can request from the camera
20933device:</p>
20934<ol>
20935<li>Let the set of currently configured input/<wbr/>output streams
20936be called <code>S</code>.<wbr/></li>
20937<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking
20938it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
20939(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be
20940called <code>F</code>.<wbr/></li>
20941<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
20942for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
20943used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
20944</ol>
20945<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>
20946using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code>
20947determines the steady state frame rate that the application will get
20948if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of
20949request be called <code>Rsimple</code>.<wbr/></p>
20950<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
20951by a single capture of a new request <code>Rstall</code> (which has at least
20952one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
20953same minimum frame duration this will not cause a frame rate loss
20954if all buffers from the previous <code>Rstall</code> have already been
20955delivered.<wbr/></p>
20956<p>For more details about stalling,<wbr/> see
20957<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
20958<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
20959OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
20960            </td>
20961          </tr>
20962
20963          <tr class="entries_header">
20964            <th class="th_details" colspan="5">HAL Implementation Details</th>
20965          </tr>
20966          <tr class="entry_cont">
20967            <td class="entry_details" colspan="5">
20968              <p>For more details about stalling,<wbr/> see
20969<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
20970            </td>
20971          </tr>
20972
20973          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20974           <!-- end of entry -->
20975
20976
20977          <tr class="entry" id="dynamic_android.sensor.sensitivity">
20978            <td class="entry_name
20979             " rowspan="5">
20980              android.<wbr/>sensor.<wbr/>sensitivity
20981            </td>
20982            <td class="entry_type">
20983                <span class="entry_type_name">int32</span>
20984
20985              <span class="entry_type_visibility"> [public]</span>
20986
20987
20988              <span class="entry_type_hwlevel">[full] </span>
20989
20990
20991
20992
20993            </td> <!-- entry_type -->
20994
20995            <td class="entry_description">
20996              <p>The amount of gain applied to sensor data
20997before processing.<wbr/></p>
20998            </td>
20999
21000            <td class="entry_units">
21001              ISO arithmetic units
21002            </td>
21003
21004            <td class="entry_range">
21005              <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
21006            </td>
21007
21008            <td class="entry_tags">
21009              <ul class="entry_tags">
21010                  <li><a href="#tag_V1">V1</a></li>
21011              </ul>
21012            </td>
21013
21014          </tr>
21015          <tr class="entries_header">
21016            <th class="th_details" colspan="5">Details</th>
21017          </tr>
21018          <tr class="entry_cont">
21019            <td class="entry_details" colspan="5">
21020              <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
21021as defined in ISO 12232:2006.<wbr/></p>
21022<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
21023if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
21024is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
21025<p>If the camera device cannot apply the exact sensitivity
21026requested,<wbr/> it will reduce the gain to the nearest supported
21027value.<wbr/> The final sensitivity used will be available in the
21028output capture result.<wbr/></p>
21029<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
21030OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
21031            </td>
21032          </tr>
21033
21034          <tr class="entries_header">
21035            <th class="th_details" colspan="5">HAL Implementation Details</th>
21036          </tr>
21037          <tr class="entry_cont">
21038            <td class="entry_details" colspan="5">
21039              <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
21040            </td>
21041          </tr>
21042
21043          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21044           <!-- end of entry -->
21045
21046
21047          <tr class="entry" id="dynamic_android.sensor.timestamp">
21048            <td class="entry_name
21049             " rowspan="5">
21050              android.<wbr/>sensor.<wbr/>timestamp
21051            </td>
21052            <td class="entry_type">
21053                <span class="entry_type_name">int64</span>
21054
21055              <span class="entry_type_visibility"> [public]</span>
21056
21057
21058              <span class="entry_type_hwlevel">[legacy] </span>
21059
21060
21061
21062
21063            </td> <!-- entry_type -->
21064
21065            <td class="entry_description">
21066              <p>Time at start of exposure of first
21067row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
21068            </td>
21069
21070            <td class="entry_units">
21071              Nanoseconds
21072            </td>
21073
21074            <td class="entry_range">
21075              <p>&gt; 0</p>
21076            </td>
21077
21078            <td class="entry_tags">
21079              <ul class="entry_tags">
21080                  <li><a href="#tag_BC">BC</a></li>
21081              </ul>
21082            </td>
21083
21084          </tr>
21085          <tr class="entries_header">
21086            <th class="th_details" colspan="5">Details</th>
21087          </tr>
21088          <tr class="entry_cont">
21089            <td class="entry_details" colspan="5">
21090              <p>The timestamps are also included in all image
21091buffers produced for the same capture,<wbr/> and will be identical
21092on all the outputs.<wbr/></p>
21093<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
21094the timestamps measure time since an unspecified starting point,<wbr/>
21095and are monotonically increasing.<wbr/> They can be compared with the
21096timestamps for other captures from the same camera device,<wbr/> but are
21097not guaranteed to be comparable to any other time source.<wbr/></p>
21098<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
21099timestamps 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
21100be compared to other timestamps from other subsystems that
21101are using that base.<wbr/></p>
21102<p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
21103the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
21104timestamp</a> in the TotalCaptureResult that was used to create the
21105reprocess capture request.<wbr/></p>
21106            </td>
21107          </tr>
21108
21109          <tr class="entries_header">
21110            <th class="th_details" colspan="5">HAL Implementation Details</th>
21111          </tr>
21112          <tr class="entry_cont">
21113            <td class="entry_details" colspan="5">
21114              <p>All timestamps must be in reference to the kernel's
21115CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
21116time spent asleep.<wbr/> This allows for synchronization with
21117sensors that continue to operate while the system is
21118otherwise asleep.<wbr/></p>
21119<p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
21120The timestamp must be synchronized with the timestamps from other
21121sensor subsystems that are using the same timebase.<wbr/></p>
21122<p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
21123with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
21124capture request.<wbr/></p>
21125            </td>
21126          </tr>
21127
21128          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21129           <!-- end of entry -->
21130
21131
21132          <tr class="entry" id="dynamic_android.sensor.temperature">
21133            <td class="entry_name
21134             " rowspan="1">
21135              android.<wbr/>sensor.<wbr/>temperature
21136            </td>
21137            <td class="entry_type">
21138                <span class="entry_type_name">float</span>
21139
21140              <span class="entry_type_visibility"> [system]</span>
21141
21142
21143
21144
21145
21146
21147            </td> <!-- entry_type -->
21148
21149            <td class="entry_description">
21150              <p>The temperature of the sensor,<wbr/> sampled at the time
21151exposure began for this frame.<wbr/></p>
21152<p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
21153somewhere close to it.<wbr/></p>
21154            </td>
21155
21156            <td class="entry_units">
21157              Celsius
21158            </td>
21159
21160            <td class="entry_range">
21161              <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
21162            </td>
21163
21164            <td class="entry_tags">
21165              <ul class="entry_tags">
21166                  <li><a href="#tag_FUTURE">FUTURE</a></li>
21167              </ul>
21168            </td>
21169
21170          </tr>
21171
21172
21173          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21174           <!-- end of entry -->
21175
21176
21177          <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
21178            <td class="entry_name
21179             " rowspan="3">
21180              android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
21181            </td>
21182            <td class="entry_type">
21183                <span class="entry_type_name">rational</span>
21184                <span class="entry_type_container">x</span>
21185
21186                <span class="entry_type_array">
21187                  3
21188                </span>
21189              <span class="entry_type_visibility"> [public]</span>
21190
21191
21192
21193
21194
21195
21196            </td> <!-- entry_type -->
21197
21198            <td class="entry_description">
21199              <p>The estimated camera neutral color in the native sensor colorspace at
21200the time of capture.<wbr/></p>
21201            </td>
21202
21203            <td class="entry_units">
21204            </td>
21205
21206            <td class="entry_range">
21207            </td>
21208
21209            <td class="entry_tags">
21210              <ul class="entry_tags">
21211                  <li><a href="#tag_RAW">RAW</a></li>
21212              </ul>
21213            </td>
21214
21215          </tr>
21216          <tr class="entries_header">
21217            <th class="th_details" colspan="5">Details</th>
21218          </tr>
21219          <tr class="entry_cont">
21220            <td class="entry_details" colspan="5">
21221              <p>This value gives the neutral color point encoded as an RGB value in the
21222native sensor color space.<wbr/>  The neutral color point indicates the
21223currently estimated white point of the scene illumination.<wbr/>  It can be
21224used to interpolate between the provided color transforms when
21225processing raw sensor data.<wbr/></p>
21226<p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
21227            </td>
21228          </tr>
21229
21230
21231          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21232           <!-- end of entry -->
21233
21234
21235          <tr class="entry" id="dynamic_android.sensor.noiseProfile">
21236            <td class="entry_name
21237             " rowspan="5">
21238              android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
21239            </td>
21240            <td class="entry_type">
21241                <span class="entry_type_name">double</span>
21242                <span class="entry_type_container">x</span>
21243
21244                <span class="entry_type_array">
21245                  2 x CFA Channels
21246                </span>
21247              <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
21248
21249
21250
21251
21252                <div class="entry_type_notes">Pairs of noise model coefficients</div>
21253
21254
21255            </td> <!-- entry_type -->
21256
21257            <td class="entry_description">
21258              <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
21259            </td>
21260
21261            <td class="entry_units">
21262            </td>
21263
21264            <td class="entry_range">
21265            </td>
21266
21267            <td class="entry_tags">
21268              <ul class="entry_tags">
21269                  <li><a href="#tag_RAW">RAW</a></li>
21270              </ul>
21271            </td>
21272
21273          </tr>
21274          <tr class="entries_header">
21275            <th class="th_details" colspan="5">Details</th>
21276          </tr>
21277          <tr class="entry_cont">
21278            <td class="entry_details" colspan="5">
21279              <p>This key contains two noise model coefficients for each CFA channel
21280corresponding to the sensor amplification (S) and sensor readout
21281noise (O).<wbr/>  These are given as pairs of coefficients for each channel
21282in the same order as channels listed for the CFA layout key
21283(see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/>  This is
21284represented as an array of Pair&lt;Double,<wbr/> Double&gt;,<wbr/> where
21285the first member of the Pair at index n is the S coefficient and the
21286second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
21287<p>These coefficients are used in a two parameter noise model to describe
21288the amount of noise present in the image for each CFA channel.<wbr/>  The
21289noise model used here is:</p>
21290<p>N(x) = sqrt(Sx + O)</p>
21291<p>Where x represents the recorded signal of a CFA channel normalized to
21292the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
21293that channel.<wbr/></p>
21294<p>A more detailed description of the noise model can be found in the
21295Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
21296            </td>
21297          </tr>
21298
21299          <tr class="entries_header">
21300            <th class="th_details" colspan="5">HAL Implementation Details</th>
21301          </tr>
21302          <tr class="entry_cont">
21303            <td class="entry_details" colspan="5">
21304              <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
21305an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
21306for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
21307channel,<wbr/> etc.<wbr/></p>
21308            </td>
21309          </tr>
21310
21311          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21312           <!-- end of entry -->
21313
21314
21315          <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
21316            <td class="entry_name
21317             " rowspan="3">
21318              android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
21319            </td>
21320            <td class="entry_type">
21321                <span class="entry_type_name">float</span>
21322                <span class="entry_type_container">x</span>
21323
21324                <span class="entry_type_array">
21325                  hue_samples x saturation_samples x value_samples x 3
21326                </span>
21327              <span class="entry_type_visibility"> [system]</span>
21328
21329
21330
21331
21332                <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
21333
21334
21335            </td> <!-- entry_type -->
21336
21337            <td class="entry_description">
21338              <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
21339for each pixel.<wbr/></p>
21340            </td>
21341
21342            <td class="entry_units">
21343
21344          The hue shift is given in degrees; saturation and value scale factors are
21345          unitless and are between 0 and 1 inclusive
21346
21347            </td>
21348
21349            <td class="entry_range">
21350            </td>
21351
21352            <td class="entry_tags">
21353              <ul class="entry_tags">
21354                  <li><a href="#tag_RAW">RAW</a></li>
21355              </ul>
21356            </td>
21357
21358          </tr>
21359          <tr class="entries_header">
21360            <th class="th_details" colspan="5">Details</th>
21361          </tr>
21362          <tr class="entry_cont">
21363            <td class="entry_details" colspan="5">
21364              <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
21365<a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
21366<p>Each entry of this map contains three floats corresponding to the
21367hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
21368hue shift has the lowest index.<wbr/> The map entries are stored in the key
21369in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
21370hue divisions in the middle loop,<wbr/> and the saturation divisions in the
21371inner loop.<wbr/> All zero input saturation entries are required to have a
21372value scale factor of 1.<wbr/>0.<wbr/></p>
21373            </td>
21374          </tr>
21375
21376
21377          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21378           <!-- end of entry -->
21379
21380
21381          <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
21382            <td class="entry_name
21383             " rowspan="3">
21384              android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
21385            </td>
21386            <td class="entry_type">
21387                <span class="entry_type_name">float</span>
21388                <span class="entry_type_container">x</span>
21389
21390                <span class="entry_type_array">
21391                  samples x 2
21392                </span>
21393              <span class="entry_type_visibility"> [system]</span>
21394
21395
21396
21397
21398                <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
21399
21400
21401            </td> <!-- entry_type -->
21402
21403            <td class="entry_description">
21404              <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
21405            </td>
21406
21407            <td class="entry_units">
21408            </td>
21409
21410            <td class="entry_range">
21411              <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
21412<code>[0,<wbr/> 1]</code>.<wbr/>  The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
21413sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
21414            </td>
21415
21416            <td class="entry_tags">
21417              <ul class="entry_tags">
21418                  <li><a href="#tag_RAW">RAW</a></li>
21419              </ul>
21420            </td>
21421
21422          </tr>
21423          <tr class="entries_header">
21424            <th class="th_details" colspan="5">Details</th>
21425          </tr>
21426          <tr class="entry_cont">
21427            <td class="entry_details" colspan="5">
21428              <p>This key contains a default tone curve that can be applied while
21429processing the image as a starting point for user adjustments.<wbr/>
21430The curve is specified as a list of value pairs in linear gamma.<wbr/>
21431The curve is interpolated using a cubic spline.<wbr/></p>
21432            </td>
21433          </tr>
21434
21435
21436          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21437           <!-- end of entry -->
21438
21439
21440          <tr class="entry" id="dynamic_android.sensor.greenSplit">
21441            <td class="entry_name
21442             " rowspan="5">
21443              android.<wbr/>sensor.<wbr/>green<wbr/>Split
21444            </td>
21445            <td class="entry_type">
21446                <span class="entry_type_name">float</span>
21447
21448              <span class="entry_type_visibility"> [public]</span>
21449
21450
21451
21452
21453
21454
21455            </td> <!-- entry_type -->
21456
21457            <td class="entry_description">
21458              <p>The worst-case divergence between Bayer green channels.<wbr/></p>
21459            </td>
21460
21461            <td class="entry_units">
21462            </td>
21463
21464            <td class="entry_range">
21465              <p>&gt;= 0</p>
21466            </td>
21467
21468            <td class="entry_tags">
21469              <ul class="entry_tags">
21470                  <li><a href="#tag_RAW">RAW</a></li>
21471              </ul>
21472            </td>
21473
21474          </tr>
21475          <tr class="entries_header">
21476            <th class="th_details" colspan="5">Details</th>
21477          </tr>
21478          <tr class="entry_cont">
21479            <td class="entry_details" colspan="5">
21480              <p>This value is an estimate of the worst case split between the
21481Bayer green channels in the red and blue rows in the sensor color
21482filter array.<wbr/></p>
21483<p>The green split is calculated as follows:</p>
21484<ol>
21485<li>A 5x5 pixel (or larger) window W within the active sensor array is
21486chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
21487mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/>  The location and size of the window
21488chosen is implementation defined,<wbr/> and should be chosen to provide a
21489green split estimate that is both representative of the entire image
21490for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
21491<li>The arithmetic mean of the green channels from the red
21492rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
21493<li>The arithmetic mean of the green channels from the blue
21494rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
21495<li>The maximum ratio R of the two means is computed as follows:
21496<code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
21497</ol>
21498<p>The ratio R is the green split divergence reported for this property,<wbr/>
21499which represents how much the green channels differ in the mosaic
21500pattern.<wbr/>  This value is typically used to determine the treatment of
21501the green mosaic channels when demosaicing.<wbr/></p>
21502<p>The green split value can be roughly interpreted as follows:</p>
21503<ul>
21504<li>R &lt; 1.<wbr/>03 is a negligible split (&lt;3% divergence).<wbr/></li>
21505<li>1.<wbr/>20 &lt;= R &gt;= 1.<wbr/>03 will require some software
21506correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
21507<li>R &gt; 1.<wbr/>20 will require strong software correction to produce
21508a usuable image (&gt;20% divergence).<wbr/></li>
21509</ul>
21510            </td>
21511          </tr>
21512
21513          <tr class="entries_header">
21514            <th class="th_details" colspan="5">HAL Implementation Details</th>
21515          </tr>
21516          <tr class="entry_cont">
21517            <td class="entry_details" colspan="5">
21518              <p>The green split given may be a static value based on prior
21519characterization of the camera sensor using the green split
21520calculation method given here over a large,<wbr/> representative,<wbr/> sample
21521set of images.<wbr/>  Other methods of calculation that produce equivalent
21522results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
21523            </td>
21524          </tr>
21525
21526          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21527           <!-- end of entry -->
21528
21529
21530          <tr class="entry" id="dynamic_android.sensor.testPatternData">
21531            <td class="entry_name
21532             " rowspan="5">
21533              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
21534            </td>
21535            <td class="entry_type">
21536                <span class="entry_type_name">int32</span>
21537                <span class="entry_type_container">x</span>
21538
21539                <span class="entry_type_array">
21540                  4
21541                </span>
21542              <span class="entry_type_visibility"> [public]</span>
21543
21544
21545
21546
21547
21548
21549            </td> <!-- entry_type -->
21550
21551            <td class="entry_description">
21552              <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
21553when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
21554            </td>
21555
21556            <td class="entry_units">
21557            </td>
21558
21559            <td class="entry_range">
21560            </td>
21561
21562            <td class="entry_tags">
21563            </td>
21564
21565          </tr>
21566          <tr class="entries_header">
21567            <th class="th_details" colspan="5">Details</th>
21568          </tr>
21569          <tr class="entry_cont">
21570            <td class="entry_details" colspan="5">
21571              <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
21572The camera device then uses the most significant X bits
21573that correspond to how many bits are in its Bayer raw sensor
21574output.<wbr/></p>
21575<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
2157610 most significant bits from each color channel.<wbr/></p>
21577            </td>
21578          </tr>
21579
21580          <tr class="entries_header">
21581            <th class="th_details" colspan="5">HAL Implementation Details</th>
21582          </tr>
21583          <tr class="entry_cont">
21584            <td class="entry_details" colspan="5">
21585
21586            </td>
21587          </tr>
21588
21589          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21590           <!-- end of entry -->
21591
21592
21593          <tr class="entry" id="dynamic_android.sensor.testPatternMode">
21594            <td class="entry_name
21595             " rowspan="5">
21596              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
21597            </td>
21598            <td class="entry_type">
21599                <span class="entry_type_name entry_type_name_enum">int32</span>
21600
21601              <span class="entry_type_visibility"> [public]</span>
21602
21603
21604
21605
21606
21607                <ul class="entry_type_enum">
21608                  <li>
21609                    <span class="entry_type_enum_name">OFF</span>
21610                    <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
21611device returns captures from the image sensor.<wbr/></p>
21612<p>This is the default if the key is not set.<wbr/></p></span>
21613                  </li>
21614                  <li>
21615                    <span class="entry_type_enum_name">SOLID_COLOR</span>
21616                    <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
21617respective color channel provided in
21618<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
21619<p>For example:</p>
21620<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
21621</code></pre>
21622<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
21623<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
21624</code></pre>
21625<p>All red pixels are 100% red.<wbr/> Only the odd green pixels
21626are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
21627                  </li>
21628                  <li>
21629                    <span class="entry_type_enum_name">COLOR_BARS</span>
21630                    <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
21631<p>The vertical bars (left-to-right) are as follows:</p>
21632<ul>
21633<li>100% white</li>
21634<li>yellow</li>
21635<li>cyan</li>
21636<li>green</li>
21637<li>magenta</li>
21638<li>red</li>
21639<li>blue</li>
21640<li>black</li>
21641</ul>
21642<p>In general the image would look like the following:</p>
21643<pre><code>W Y C G M R B K
21644W Y C G M R B K
21645W Y C G M R B K
21646W Y C G M R B K
21647W Y C G M R B K
21648.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
21649.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
21650.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
21651
21652(B = Blue,<wbr/> K = Black)
21653</code></pre>
21654<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
21655When this is not possible,<wbr/> the bar size should be rounded
21656down to the nearest integer and the pattern can repeat
21657on the right side.<wbr/></p>
21658<p>Each bar's height must always take up the full sensor
21659pixel array height.<wbr/></p>
21660<p>Each pixel in this test pattern must be set to either
216610% intensity or 100% intensity.<wbr/></p></span>
21662                  </li>
21663                  <li>
21664                    <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
21665                    <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
21666each bar should start at its specified color at the top,<wbr/>
21667and fade to gray at the bottom.<wbr/></p>
21668<p>Furthermore each bar is further subdivided into a left and
21669right half.<wbr/> The left half should have a smooth gradient,<wbr/>
21670and the right half should have a quantized gradient.<wbr/></p>
21671<p>In particular,<wbr/> the right half's should consist of blocks of the
21672same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
21673<p>The least significant bits in the quantized gradient should
21674be copied from the most significant bits of the smooth gradient.<wbr/></p>
21675<p>The height of each bar should always be a multiple of 128.<wbr/>
21676When this is not the case,<wbr/> the pattern should repeat at the bottom
21677of the image.<wbr/></p></span>
21678                  </li>
21679                  <li>
21680                    <span class="entry_type_enum_name">PN9</span>
21681                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
21682generated from a PN9 512-bit sequence (typically implemented
21683in hardware with a linear feedback shift register).<wbr/></p>
21684<p>The generator should be reset at the beginning of each frame,<wbr/>
21685and thus each subsequent raw frame with this test pattern should
21686be exactly the same as the last.<wbr/></p></span>
21687                  </li>
21688                  <li>
21689                    <span class="entry_type_enum_name">CUSTOM1</span>
21690                    <span class="entry_type_enum_value">256</span>
21691                    <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
21692available only on this camera device are at least this numeric
21693value.<wbr/></p>
21694<p>All of the custom test patterns will be static
21695(that is the raw image must not vary from frame to frame).<wbr/></p></span>
21696                  </li>
21697                </ul>
21698
21699            </td> <!-- entry_type -->
21700
21701            <td class="entry_description">
21702              <p>When enabled,<wbr/> the sensor sends a test pattern instead of
21703doing a real exposure from the camera.<wbr/></p>
21704            </td>
21705
21706            <td class="entry_units">
21707            </td>
21708
21709            <td class="entry_range">
21710              <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
21711            </td>
21712
21713            <td class="entry_tags">
21714            </td>
21715
21716          </tr>
21717          <tr class="entries_header">
21718            <th class="th_details" colspan="5">Details</th>
21719          </tr>
21720          <tr class="entry_cont">
21721            <td class="entry_details" colspan="5">
21722              <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
21723by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
21724work as normal.<wbr/></p>
21725<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
21726occur (and that the test pattern remain unmodified,<wbr/> since the flash
21727would not actually affect it).<wbr/></p>
21728<p>Defaults to OFF.<wbr/></p>
21729            </td>
21730          </tr>
21731
21732          <tr class="entries_header">
21733            <th class="th_details" colspan="5">HAL Implementation Details</th>
21734          </tr>
21735          <tr class="entry_cont">
21736            <td class="entry_details" colspan="5">
21737              <p>All test patterns are specified in the Bayer domain.<wbr/></p>
21738<p>The HAL may choose to substitute test patterns from the sensor
21739with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
21740indistinguishable to the ISP whether the data came from the
21741sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
21742            </td>
21743          </tr>
21744
21745          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21746           <!-- end of entry -->
21747
21748
21749          <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
21750            <td class="entry_name
21751             " rowspan="5">
21752              android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
21753            </td>
21754            <td class="entry_type">
21755                <span class="entry_type_name">int64</span>
21756
21757              <span class="entry_type_visibility"> [public]</span>
21758
21759
21760              <span class="entry_type_hwlevel">[limited] </span>
21761
21762
21763
21764
21765            </td> <!-- entry_type -->
21766
21767            <td class="entry_description">
21768              <p>Duration between the start of first row exposure
21769and the start of last row exposure.<wbr/></p>
21770            </td>
21771
21772            <td class="entry_units">
21773              Nanoseconds
21774            </td>
21775
21776            <td class="entry_range">
21777              <p>&gt;= 0 and &lt;
21778<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
21779            </td>
21780
21781            <td class="entry_tags">
21782              <ul class="entry_tags">
21783                  <li><a href="#tag_V1">V1</a></li>
21784              </ul>
21785            </td>
21786
21787          </tr>
21788          <tr class="entries_header">
21789            <th class="th_details" colspan="5">Details</th>
21790          </tr>
21791          <tr class="entry_cont">
21792            <td class="entry_details" colspan="5">
21793              <p>This is the exposure time skew between the first and last
21794row exposure start times.<wbr/> The first row and the last row are
21795the first and last rows inside of the
21796<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21797<p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
21798to the frame readout time.<wbr/></p>
21799            </td>
21800          </tr>
21801
21802          <tr class="entries_header">
21803            <th class="th_details" colspan="5">HAL Implementation Details</th>
21804          </tr>
21805          <tr class="entry_cont">
21806            <td class="entry_details" colspan="5">
21807              <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
21808exposure at the same time.<wbr/></p>
21809            </td>
21810          </tr>
21811
21812          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21813           <!-- end of entry -->
21814
21815
21816          <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel">
21817            <td class="entry_name
21818             " rowspan="5">
21819              android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level
21820            </td>
21821            <td class="entry_type">
21822                <span class="entry_type_name">float</span>
21823                <span class="entry_type_container">x</span>
21824
21825                <span class="entry_type_array">
21826                  4
21827                </span>
21828              <span class="entry_type_visibility"> [public]</span>
21829
21830
21831
21832
21833                <div class="entry_type_notes">2x2 raw count block</div>
21834
21835
21836            </td> <!-- entry_type -->
21837
21838            <td class="entry_description">
21839              <p>A per-frame dynamic black level offset for each of the color filter
21840arrangement (CFA) mosaic channels.<wbr/></p>
21841            </td>
21842
21843            <td class="entry_units">
21844            </td>
21845
21846            <td class="entry_range">
21847              <p>&gt;= 0 for each.<wbr/></p>
21848            </td>
21849
21850            <td class="entry_tags">
21851              <ul class="entry_tags">
21852                  <li><a href="#tag_RAW">RAW</a></li>
21853              </ul>
21854            </td>
21855
21856          </tr>
21857          <tr class="entries_header">
21858            <th class="th_details" colspan="5">Details</th>
21859          </tr>
21860          <tr class="entry_cont">
21861            <td class="entry_details" colspan="5">
21862              <p>Camera sensor black levels may vary dramatically for different
21863capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black
21864level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too
21865inaccurate to represent the actual value on a per-frame basis.<wbr/> The
21866camera device internal pipeline relies on reliable black level values
21867to process the raw images appropriately.<wbr/> To get the best image
21868quality,<wbr/> the camera device may choose to estimate the per frame black
21869level values either based on optically shielded black regions
21870(<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p>
21871<p>This key reports the camera device estimated per-frame zero light
21872value for each of the CFA mosaic channels in the camera sensor.<wbr/> The
21873<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse
21874approximation of the actual black level values.<wbr/> This value is the
21875black level used in camera device internal image processing pipeline
21876and generally more accurate than the fixed black level values.<wbr/>
21877However,<wbr/> since they are estimated values by the camera device,<wbr/> they
21878may not be as accurate as the black level values calculated from the
21879optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p>
21880<p>The values are given in the same order as channels listed for the CFA
21881layout 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
21882nth value given corresponds to the black level offset for the nth
21883color channel listed in the CFA.<wbr/></p>
21884<p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
21885available or the camera device advertises this key via
21886<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
21887            </td>
21888          </tr>
21889
21890          <tr class="entries_header">
21891            <th class="th_details" colspan="5">HAL Implementation Details</th>
21892          </tr>
21893          <tr class="entry_cont">
21894            <td class="entry_details" colspan="5">
21895              <p>The values are given in row-column scan order,<wbr/> with the first value
21896corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
21897            </td>
21898          </tr>
21899
21900          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21901           <!-- end of entry -->
21902
21903
21904          <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel">
21905            <td class="entry_name
21906             " rowspan="5">
21907              android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level
21908            </td>
21909            <td class="entry_type">
21910                <span class="entry_type_name">int32</span>
21911
21912              <span class="entry_type_visibility"> [public]</span>
21913
21914
21915
21916
21917
21918
21919            </td> <!-- entry_type -->
21920
21921            <td class="entry_description">
21922              <p>Maximum raw value output by sensor for this frame.<wbr/></p>
21923            </td>
21924
21925            <td class="entry_units">
21926            </td>
21927
21928            <td class="entry_range">
21929              <p>&gt;= 0</p>
21930            </td>
21931
21932            <td class="entry_tags">
21933              <ul class="entry_tags">
21934                  <li><a href="#tag_RAW">RAW</a></li>
21935              </ul>
21936            </td>
21937
21938          </tr>
21939          <tr class="entries_header">
21940            <th class="th_details" colspan="5">Details</th>
21941          </tr>
21942          <tr class="entry_cont">
21943            <td class="entry_details" colspan="5">
21944              <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different
21945capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white
21946level will change accordingly.<wbr/> This key is similar to
21947<a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device
21948estimated white level for each frame.<wbr/></p>
21949<p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
21950available or the camera device advertises this key via
21951<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
21952            </td>
21953          </tr>
21954
21955          <tr class="entries_header">
21956            <th class="th_details" colspan="5">HAL Implementation Details</th>
21957          </tr>
21958          <tr class="entry_cont">
21959            <td class="entry_details" colspan="5">
21960              <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
21961so the value for linear sensors should not be significantly lower
21962than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
21963            </td>
21964          </tr>
21965
21966          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21967           <!-- end of entry -->
21968
21969
21970
21971      <!-- end of kind -->
21972      </tbody>
21973
21974  <!-- end of section -->
21975  <tr><td colspan="6" id="section_shading" class="section">shading</td></tr>
21976
21977
21978      <tr><td colspan="6" class="kind">controls</td></tr>
21979
21980      <thead class="entries_header">
21981        <tr>
21982          <th class="th_name">Property Name</th>
21983          <th class="th_type">Type</th>
21984          <th class="th_description">Description</th>
21985          <th class="th_units">Units</th>
21986          <th class="th_range">Range</th>
21987          <th class="th_tags">Tags</th>
21988        </tr>
21989      </thead>
21990
21991      <tbody>
21992
21993
21994
21995
21996
21997
21998
21999
22000
22001
22002          <tr class="entry" id="controls_android.shading.mode">
22003            <td class="entry_name
22004             " rowspan="3">
22005              android.<wbr/>shading.<wbr/>mode
22006            </td>
22007            <td class="entry_type">
22008                <span class="entry_type_name entry_type_name_enum">byte</span>
22009
22010              <span class="entry_type_visibility"> [public]</span>
22011
22012
22013              <span class="entry_type_hwlevel">[full] </span>
22014
22015
22016
22017                <ul class="entry_type_enum">
22018                  <li>
22019                    <span class="entry_type_enum_name">OFF</span>
22020                    <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
22021                  </li>
22022                  <li>
22023                    <span class="entry_type_enum_name">FAST</span>
22024                    <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
22025frame rate relative to sensor raw output</p></span>
22026                  </li>
22027                  <li>
22028                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
22029                    <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
22030cost of possibly reduced frame rate.<wbr/></p></span>
22031                  </li>
22032                </ul>
22033
22034            </td> <!-- entry_type -->
22035
22036            <td class="entry_description">
22037              <p>Quality of lens shading correction applied
22038to the image data.<wbr/></p>
22039            </td>
22040
22041            <td class="entry_units">
22042            </td>
22043
22044            <td class="entry_range">
22045              <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
22046            </td>
22047
22048            <td class="entry_tags">
22049            </td>
22050
22051          </tr>
22052          <tr class="entries_header">
22053            <th class="th_details" colspan="5">Details</th>
22054          </tr>
22055          <tr class="entry_cont">
22056            <td class="entry_details" colspan="5">
22057              <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
22058camera device,<wbr/> and an identity lens shading map data will be provided
22059if <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
22060shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
22061the 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
22062map shown below:</p>
22063<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/>
22064 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/>
22065 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/>
22066 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/>
22067 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/>
22068 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 ]
22069</code></pre>
22070<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
22071device.<wbr/> Applications can request lens shading map data by setting
22072<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
22073shading 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
22074data will be the one applied by the camera device for this capture request.<wbr/></p>
22075<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
22076the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
22077AWB 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>
22078OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
22079to be converged before using the returned shading map data.<wbr/></p>
22080            </td>
22081          </tr>
22082
22083
22084          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22085           <!-- end of entry -->
22086
22087
22088          <tr class="entry" id="controls_android.shading.strength">
22089            <td class="entry_name
22090             " rowspan="1">
22091              android.<wbr/>shading.<wbr/>strength
22092            </td>
22093            <td class="entry_type">
22094                <span class="entry_type_name">byte</span>
22095
22096              <span class="entry_type_visibility"> [system]</span>
22097
22098
22099
22100
22101
22102
22103            </td> <!-- entry_type -->
22104
22105            <td class="entry_description">
22106              <p>Control the amount of shading correction
22107applied to the images</p>
22108            </td>
22109
22110            <td class="entry_units">
22111              unitless: 1-10; 10 is full shading
22112          compensation
22113            </td>
22114
22115            <td class="entry_range">
22116            </td>
22117
22118            <td class="entry_tags">
22119              <ul class="entry_tags">
22120                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22121              </ul>
22122            </td>
22123
22124          </tr>
22125
22126
22127          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22128           <!-- end of entry -->
22129
22130
22131
22132      <!-- end of kind -->
22133      </tbody>
22134      <tr><td colspan="6" class="kind">dynamic</td></tr>
22135
22136      <thead class="entries_header">
22137        <tr>
22138          <th class="th_name">Property Name</th>
22139          <th class="th_type">Type</th>
22140          <th class="th_description">Description</th>
22141          <th class="th_units">Units</th>
22142          <th class="th_range">Range</th>
22143          <th class="th_tags">Tags</th>
22144        </tr>
22145      </thead>
22146
22147      <tbody>
22148
22149
22150
22151
22152
22153
22154
22155
22156
22157
22158          <tr class="entry" id="dynamic_android.shading.mode">
22159            <td class="entry_name
22160             " rowspan="3">
22161              android.<wbr/>shading.<wbr/>mode
22162            </td>
22163            <td class="entry_type">
22164                <span class="entry_type_name entry_type_name_enum">byte</span>
22165
22166              <span class="entry_type_visibility"> [public]</span>
22167
22168
22169              <span class="entry_type_hwlevel">[full] </span>
22170
22171
22172
22173                <ul class="entry_type_enum">
22174                  <li>
22175                    <span class="entry_type_enum_name">OFF</span>
22176                    <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
22177                  </li>
22178                  <li>
22179                    <span class="entry_type_enum_name">FAST</span>
22180                    <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
22181frame rate relative to sensor raw output</p></span>
22182                  </li>
22183                  <li>
22184                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
22185                    <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
22186cost of possibly reduced frame rate.<wbr/></p></span>
22187                  </li>
22188                </ul>
22189
22190            </td> <!-- entry_type -->
22191
22192            <td class="entry_description">
22193              <p>Quality of lens shading correction applied
22194to the image data.<wbr/></p>
22195            </td>
22196
22197            <td class="entry_units">
22198            </td>
22199
22200            <td class="entry_range">
22201              <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
22202            </td>
22203
22204            <td class="entry_tags">
22205            </td>
22206
22207          </tr>
22208          <tr class="entries_header">
22209            <th class="th_details" colspan="5">Details</th>
22210          </tr>
22211          <tr class="entry_cont">
22212            <td class="entry_details" colspan="5">
22213              <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
22214camera device,<wbr/> and an identity lens shading map data will be provided
22215if <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
22216shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
22217the 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
22218map shown below:</p>
22219<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/>
22220 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/>
22221 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/>
22222 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/>
22223 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/>
22224 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 ]
22225</code></pre>
22226<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
22227device.<wbr/> Applications can request lens shading map data by setting
22228<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
22229shading 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
22230data will be the one applied by the camera device for this capture request.<wbr/></p>
22231<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
22232the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
22233AWB 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>
22234OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
22235to be converged before using the returned shading map data.<wbr/></p>
22236            </td>
22237          </tr>
22238
22239
22240          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22241           <!-- end of entry -->
22242
22243
22244
22245      <!-- end of kind -->
22246      </tbody>
22247      <tr><td colspan="6" class="kind">static</td></tr>
22248
22249      <thead class="entries_header">
22250        <tr>
22251          <th class="th_name">Property Name</th>
22252          <th class="th_type">Type</th>
22253          <th class="th_description">Description</th>
22254          <th class="th_units">Units</th>
22255          <th class="th_range">Range</th>
22256          <th class="th_tags">Tags</th>
22257        </tr>
22258      </thead>
22259
22260      <tbody>
22261
22262
22263
22264
22265
22266
22267
22268
22269
22270
22271          <tr class="entry" id="static_android.shading.availableModes">
22272            <td class="entry_name
22273             " rowspan="5">
22274              android.<wbr/>shading.<wbr/>available<wbr/>Modes
22275            </td>
22276            <td class="entry_type">
22277                <span class="entry_type_name">byte</span>
22278                <span class="entry_type_container">x</span>
22279
22280                <span class="entry_type_array">
22281                  n
22282                </span>
22283              <span class="entry_type_visibility"> [public as enumList]</span>
22284
22285
22286              <span class="entry_type_hwlevel">[legacy] </span>
22287
22288
22289                <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
22290
22291
22292            </td> <!-- entry_type -->
22293
22294            <td class="entry_description">
22295              <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>
22296            </td>
22297
22298            <td class="entry_units">
22299            </td>
22300
22301            <td class="entry_range">
22302              <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
22303            </td>
22304
22305            <td class="entry_tags">
22306            </td>
22307
22308          </tr>
22309          <tr class="entries_header">
22310            <th class="th_details" colspan="5">Details</th>
22311          </tr>
22312          <tr class="entry_cont">
22313            <td class="entry_details" colspan="5">
22314              <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
22315Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
22316list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
22317LEGACY devices will always only support FAST mode.<wbr/></p>
22318            </td>
22319          </tr>
22320
22321          <tr class="entries_header">
22322            <th class="th_details" colspan="5">HAL Implementation Details</th>
22323          </tr>
22324          <tr class="entry_cont">
22325            <td class="entry_details" colspan="5">
22326              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
22327available on the camera device,<wbr/> but the underlying implementation can be the same for
22328both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
22329slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
22330            </td>
22331          </tr>
22332
22333          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22334           <!-- end of entry -->
22335
22336
22337
22338      <!-- end of kind -->
22339      </tbody>
22340
22341  <!-- end of section -->
22342  <tr><td colspan="6" id="section_statistics" class="section">statistics</td></tr>
22343
22344
22345      <tr><td colspan="6" class="kind">controls</td></tr>
22346
22347      <thead class="entries_header">
22348        <tr>
22349          <th class="th_name">Property Name</th>
22350          <th class="th_type">Type</th>
22351          <th class="th_description">Description</th>
22352          <th class="th_units">Units</th>
22353          <th class="th_range">Range</th>
22354          <th class="th_tags">Tags</th>
22355        </tr>
22356      </thead>
22357
22358      <tbody>
22359
22360
22361
22362
22363
22364
22365
22366
22367
22368
22369          <tr class="entry" id="controls_android.statistics.faceDetectMode">
22370            <td class="entry_name
22371             " rowspan="5">
22372              android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
22373            </td>
22374            <td class="entry_type">
22375                <span class="entry_type_name entry_type_name_enum">byte</span>
22376
22377              <span class="entry_type_visibility"> [public]</span>
22378
22379
22380              <span class="entry_type_hwlevel">[legacy] </span>
22381
22382
22383
22384                <ul class="entry_type_enum">
22385                  <li>
22386                    <span class="entry_type_enum_name">OFF</span>
22387                    <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
22388results.<wbr/></p></span>
22389                  </li>
22390                  <li>
22391                    <span class="entry_type_enum_name">SIMPLE</span>
22392                    <span class="entry_type_enum_optional">[optional]</span>
22393                    <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
22394                  </li>
22395                  <li>
22396                    <span class="entry_type_enum_name">FULL</span>
22397                    <span class="entry_type_enum_optional">[optional]</span>
22398                    <span class="entry_type_enum_notes"><p>Return all face
22399metadata.<wbr/></p>
22400<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
22401                  </li>
22402                </ul>
22403
22404            </td> <!-- entry_type -->
22405
22406            <td class="entry_description">
22407              <p>Operating mode for the face detector
22408unit.<wbr/></p>
22409            </td>
22410
22411            <td class="entry_units">
22412            </td>
22413
22414            <td class="entry_range">
22415              <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
22416            </td>
22417
22418            <td class="entry_tags">
22419              <ul class="entry_tags">
22420                  <li><a href="#tag_BC">BC</a></li>
22421              </ul>
22422            </td>
22423
22424          </tr>
22425          <tr class="entries_header">
22426            <th class="th_details" colspan="5">Details</th>
22427          </tr>
22428          <tr class="entry_cont">
22429            <td class="entry_details" colspan="5">
22430              <p>Whether face detection is enabled,<wbr/> and whether it
22431should output just the basic fields or the full set of
22432fields.<wbr/></p>
22433            </td>
22434          </tr>
22435
22436          <tr class="entries_header">
22437            <th class="th_details" colspan="5">HAL Implementation Details</th>
22438          </tr>
22439          <tr class="entry_cont">
22440            <td class="entry_details" colspan="5">
22441              <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
22442<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
22443FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
22444<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
22445            </td>
22446          </tr>
22447
22448          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22449           <!-- end of entry -->
22450
22451
22452          <tr class="entry" id="controls_android.statistics.histogramMode">
22453            <td class="entry_name
22454             " rowspan="1">
22455              android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
22456            </td>
22457            <td class="entry_type">
22458                <span class="entry_type_name entry_type_name_enum">byte</span>
22459
22460              <span class="entry_type_visibility"> [system as boolean]</span>
22461
22462
22463
22464
22465
22466                <ul class="entry_type_enum">
22467                  <li>
22468                    <span class="entry_type_enum_name">OFF</span>
22469                  </li>
22470                  <li>
22471                    <span class="entry_type_enum_name">ON</span>
22472                  </li>
22473                </ul>
22474
22475            </td> <!-- entry_type -->
22476
22477            <td class="entry_description">
22478              <p>Operating mode for histogram
22479generation</p>
22480            </td>
22481
22482            <td class="entry_units">
22483            </td>
22484
22485            <td class="entry_range">
22486            </td>
22487
22488            <td class="entry_tags">
22489              <ul class="entry_tags">
22490                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22491              </ul>
22492            </td>
22493
22494          </tr>
22495
22496
22497          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22498           <!-- end of entry -->
22499
22500
22501          <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
22502            <td class="entry_name
22503             " rowspan="1">
22504              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
22505            </td>
22506            <td class="entry_type">
22507                <span class="entry_type_name entry_type_name_enum">byte</span>
22508
22509              <span class="entry_type_visibility"> [system as boolean]</span>
22510
22511
22512
22513
22514
22515                <ul class="entry_type_enum">
22516                  <li>
22517                    <span class="entry_type_enum_name">OFF</span>
22518                  </li>
22519                  <li>
22520                    <span class="entry_type_enum_name">ON</span>
22521                  </li>
22522                </ul>
22523
22524            </td> <!-- entry_type -->
22525
22526            <td class="entry_description">
22527              <p>Operating mode for sharpness map
22528generation</p>
22529            </td>
22530
22531            <td class="entry_units">
22532            </td>
22533
22534            <td class="entry_range">
22535            </td>
22536
22537            <td class="entry_tags">
22538              <ul class="entry_tags">
22539                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22540              </ul>
22541            </td>
22542
22543          </tr>
22544
22545
22546          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22547           <!-- end of entry -->
22548
22549
22550          <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
22551            <td class="entry_name
22552             " rowspan="3">
22553              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
22554            </td>
22555            <td class="entry_type">
22556                <span class="entry_type_name entry_type_name_enum">byte</span>
22557
22558              <span class="entry_type_visibility"> [public as boolean]</span>
22559
22560
22561
22562
22563
22564                <ul class="entry_type_enum">
22565                  <li>
22566                    <span class="entry_type_enum_name">OFF</span>
22567                    <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
22568                  </li>
22569                  <li>
22570                    <span class="entry_type_enum_name">ON</span>
22571                    <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
22572                  </li>
22573                </ul>
22574
22575            </td> <!-- entry_type -->
22576
22577            <td class="entry_description">
22578              <p>Operating mode for hot pixel map generation.<wbr/></p>
22579            </td>
22580
22581            <td class="entry_units">
22582            </td>
22583
22584            <td class="entry_range">
22585              <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>
22586            </td>
22587
22588            <td class="entry_tags">
22589              <ul class="entry_tags">
22590                  <li><a href="#tag_V1">V1</a></li>
22591                  <li><a href="#tag_RAW">RAW</a></li>
22592              </ul>
22593            </td>
22594
22595          </tr>
22596          <tr class="entries_header">
22597            <th class="th_details" colspan="5">Details</th>
22598          </tr>
22599          <tr class="entry_cont">
22600            <td class="entry_details" colspan="5">
22601              <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/>
22602If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
22603            </td>
22604          </tr>
22605
22606
22607          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22608           <!-- end of entry -->
22609
22610
22611          <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
22612            <td class="entry_name
22613             " rowspan="3">
22614              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
22615            </td>
22616            <td class="entry_type">
22617                <span class="entry_type_name entry_type_name_enum">byte</span>
22618
22619              <span class="entry_type_visibility"> [public]</span>
22620
22621
22622              <span class="entry_type_hwlevel">[full] </span>
22623
22624
22625
22626                <ul class="entry_type_enum">
22627                  <li>
22628                    <span class="entry_type_enum_name">OFF</span>
22629                    <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
22630                  </li>
22631                  <li>
22632                    <span class="entry_type_enum_name">ON</span>
22633                    <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
22634                  </li>
22635                </ul>
22636
22637            </td> <!-- entry_type -->
22638
22639            <td class="entry_description">
22640              <p>Whether the camera device will output the lens
22641shading map in output result metadata.<wbr/></p>
22642            </td>
22643
22644            <td class="entry_units">
22645            </td>
22646
22647            <td class="entry_range">
22648              <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>
22649            </td>
22650
22651            <td class="entry_tags">
22652              <ul class="entry_tags">
22653                  <li><a href="#tag_RAW">RAW</a></li>
22654              </ul>
22655            </td>
22656
22657          </tr>
22658          <tr class="entries_header">
22659            <th class="th_details" colspan="5">Details</th>
22660          </tr>
22661          <tr class="entry_cont">
22662            <td class="entry_details" colspan="5">
22663              <p>When set to ON,<wbr/>
22664<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
22665the output result metadata.<wbr/></p>
22666<p>ON is always supported on devices with the RAW capability.<wbr/></p>
22667            </td>
22668          </tr>
22669
22670
22671          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22672           <!-- end of entry -->
22673
22674
22675
22676      <!-- end of kind -->
22677      </tbody>
22678      <tr><td colspan="6" class="kind">static</td></tr>
22679
22680      <thead class="entries_header">
22681        <tr>
22682          <th class="th_name">Property Name</th>
22683          <th class="th_type">Type</th>
22684          <th class="th_description">Description</th>
22685          <th class="th_units">Units</th>
22686          <th class="th_range">Range</th>
22687          <th class="th_tags">Tags</th>
22688        </tr>
22689      </thead>
22690
22691      <tbody>
22692
22693
22694
22695
22696
22697
22698
22699
22700
22701
22702
22703
22704          <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
22705            <td class="entry_name
22706             " rowspan="3">
22707              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
22708            </td>
22709            <td class="entry_type">
22710                <span class="entry_type_name">byte</span>
22711                <span class="entry_type_container">x</span>
22712
22713                <span class="entry_type_array">
22714                  n
22715                </span>
22716              <span class="entry_type_visibility"> [public as enumList]</span>
22717
22718
22719              <span class="entry_type_hwlevel">[legacy] </span>
22720
22721
22722                <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
22723
22724
22725            </td> <!-- entry_type -->
22726
22727            <td class="entry_description">
22728              <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
22729supported by this camera device.<wbr/></p>
22730            </td>
22731
22732            <td class="entry_units">
22733            </td>
22734
22735            <td class="entry_range">
22736              <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
22737            </td>
22738
22739            <td class="entry_tags">
22740            </td>
22741
22742          </tr>
22743          <tr class="entries_header">
22744            <th class="th_details" colspan="5">Details</th>
22745          </tr>
22746          <tr class="entry_cont">
22747            <td class="entry_details" colspan="5">
22748              <p>OFF is always supported.<wbr/></p>
22749            </td>
22750          </tr>
22751
22752
22753          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22754           <!-- end of entry -->
22755
22756
22757          <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
22758            <td class="entry_name
22759             " rowspan="1">
22760              android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
22761            </td>
22762            <td class="entry_type">
22763                <span class="entry_type_name">int32</span>
22764
22765              <span class="entry_type_visibility"> [system]</span>
22766
22767
22768
22769
22770
22771
22772            </td> <!-- entry_type -->
22773
22774            <td class="entry_description">
22775              <p>Number of histogram buckets
22776supported</p>
22777            </td>
22778
22779            <td class="entry_units">
22780            </td>
22781
22782            <td class="entry_range">
22783              <p>&gt;= 64</p>
22784            </td>
22785
22786            <td class="entry_tags">
22787              <ul class="entry_tags">
22788                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22789              </ul>
22790            </td>
22791
22792          </tr>
22793
22794
22795          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22796           <!-- end of entry -->
22797
22798
22799          <tr class="entry" id="static_android.statistics.info.maxFaceCount">
22800            <td class="entry_name
22801             " rowspan="1">
22802              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
22803            </td>
22804            <td class="entry_type">
22805                <span class="entry_type_name">int32</span>
22806
22807              <span class="entry_type_visibility"> [public]</span>
22808
22809
22810              <span class="entry_type_hwlevel">[legacy] </span>
22811
22812
22813
22814
22815            </td> <!-- entry_type -->
22816
22817            <td class="entry_description">
22818              <p>The maximum number of simultaneously detectable
22819faces.<wbr/></p>
22820            </td>
22821
22822            <td class="entry_units">
22823            </td>
22824
22825            <td class="entry_range">
22826              <p>0 for cameras without available face detection; otherwise:
22827<code>&gt;=4</code> for LIMITED or FULL hwlevel devices or
22828<code>&gt;0</code> for LEGACY devices.<wbr/></p>
22829            </td>
22830
22831            <td class="entry_tags">
22832              <ul class="entry_tags">
22833                  <li><a href="#tag_BC">BC</a></li>
22834              </ul>
22835            </td>
22836
22837          </tr>
22838
22839
22840          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22841           <!-- end of entry -->
22842
22843
22844          <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
22845            <td class="entry_name
22846             " rowspan="1">
22847              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
22848            </td>
22849            <td class="entry_type">
22850                <span class="entry_type_name">int32</span>
22851
22852              <span class="entry_type_visibility"> [system]</span>
22853
22854
22855
22856
22857
22858
22859            </td> <!-- entry_type -->
22860
22861            <td class="entry_description">
22862              <p>Maximum value possible for a histogram
22863bucket</p>
22864            </td>
22865
22866            <td class="entry_units">
22867            </td>
22868
22869            <td class="entry_range">
22870            </td>
22871
22872            <td class="entry_tags">
22873              <ul class="entry_tags">
22874                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22875              </ul>
22876            </td>
22877
22878          </tr>
22879
22880
22881          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22882           <!-- end of entry -->
22883
22884
22885          <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
22886            <td class="entry_name
22887             " rowspan="1">
22888              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
22889            </td>
22890            <td class="entry_type">
22891                <span class="entry_type_name">int32</span>
22892
22893              <span class="entry_type_visibility"> [system]</span>
22894
22895
22896
22897
22898
22899
22900            </td> <!-- entry_type -->
22901
22902            <td class="entry_description">
22903              <p>Maximum value possible for a sharpness map
22904region.<wbr/></p>
22905            </td>
22906
22907            <td class="entry_units">
22908            </td>
22909
22910            <td class="entry_range">
22911            </td>
22912
22913            <td class="entry_tags">
22914              <ul class="entry_tags">
22915                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22916              </ul>
22917            </td>
22918
22919          </tr>
22920
22921
22922          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22923           <!-- end of entry -->
22924
22925
22926          <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
22927            <td class="entry_name
22928             " rowspan="1">
22929              android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
22930            </td>
22931            <td class="entry_type">
22932                <span class="entry_type_name">int32</span>
22933                <span class="entry_type_container">x</span>
22934
22935                <span class="entry_type_array">
22936                  2
22937                </span>
22938              <span class="entry_type_visibility"> [system as size]</span>
22939
22940
22941
22942
22943                <div class="entry_type_notes">width x height</div>
22944
22945
22946            </td> <!-- entry_type -->
22947
22948            <td class="entry_description">
22949              <p>Dimensions of the sharpness
22950map</p>
22951            </td>
22952
22953            <td class="entry_units">
22954            </td>
22955
22956            <td class="entry_range">
22957              <p>Must be at least 32 x 32</p>
22958            </td>
22959
22960            <td class="entry_tags">
22961              <ul class="entry_tags">
22962                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22963              </ul>
22964            </td>
22965
22966          </tr>
22967
22968
22969          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22970           <!-- end of entry -->
22971
22972
22973          <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
22974            <td class="entry_name
22975             " rowspan="3">
22976              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
22977            </td>
22978            <td class="entry_type">
22979                <span class="entry_type_name">byte</span>
22980                <span class="entry_type_container">x</span>
22981
22982                <span class="entry_type_array">
22983                  n
22984                </span>
22985              <span class="entry_type_visibility"> [public as boolean]</span>
22986
22987
22988
22989
22990                <div class="entry_type_notes">list of enums</div>
22991
22992
22993            </td> <!-- entry_type -->
22994
22995            <td class="entry_description">
22996              <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
22997supported by this camera device.<wbr/></p>
22998            </td>
22999
23000            <td class="entry_units">
23001            </td>
23002
23003            <td class="entry_range">
23004              <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
23005            </td>
23006
23007            <td class="entry_tags">
23008              <ul class="entry_tags">
23009                  <li><a href="#tag_V1">V1</a></li>
23010                  <li><a href="#tag_RAW">RAW</a></li>
23011              </ul>
23012            </td>
23013
23014          </tr>
23015          <tr class="entries_header">
23016            <th class="th_details" colspan="5">Details</th>
23017          </tr>
23018          <tr class="entry_cont">
23019            <td class="entry_details" colspan="5">
23020              <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
23021<code>false</code>.<wbr/></p>
23022<p>ON is always supported on devices with the RAW capability.<wbr/></p>
23023            </td>
23024          </tr>
23025
23026
23027          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23028           <!-- end of entry -->
23029
23030
23031          <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
23032            <td class="entry_name
23033             " rowspan="3">
23034              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
23035            </td>
23036            <td class="entry_type">
23037                <span class="entry_type_name">byte</span>
23038                <span class="entry_type_container">x</span>
23039
23040                <span class="entry_type_array">
23041                  n
23042                </span>
23043              <span class="entry_type_visibility"> [public as enumList]</span>
23044
23045
23046
23047
23048                <div class="entry_type_notes">list of enums</div>
23049
23050
23051            </td> <!-- entry_type -->
23052
23053            <td class="entry_description">
23054              <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
23055are supported by this camera device.<wbr/></p>
23056            </td>
23057
23058            <td class="entry_units">
23059            </td>
23060
23061            <td class="entry_range">
23062              <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
23063            </td>
23064
23065            <td class="entry_tags">
23066            </td>
23067
23068          </tr>
23069          <tr class="entries_header">
23070            <th class="th_details" colspan="5">Details</th>
23071          </tr>
23072          <tr class="entry_cont">
23073            <td class="entry_details" colspan="5">
23074              <p>If no lens shading map output is available for this camera device,<wbr/> this key will
23075contain only OFF.<wbr/></p>
23076<p>ON is always supported on devices with the RAW capability.<wbr/>
23077LEGACY mode devices will always only support OFF.<wbr/></p>
23078            </td>
23079          </tr>
23080
23081
23082          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23083           <!-- end of entry -->
23084
23085
23086
23087
23088
23089
23090      <!-- end of kind -->
23091      </tbody>
23092      <tr><td colspan="6" class="kind">dynamic</td></tr>
23093
23094      <thead class="entries_header">
23095        <tr>
23096          <th class="th_name">Property Name</th>
23097          <th class="th_type">Type</th>
23098          <th class="th_description">Description</th>
23099          <th class="th_units">Units</th>
23100          <th class="th_range">Range</th>
23101          <th class="th_tags">Tags</th>
23102        </tr>
23103      </thead>
23104
23105      <tbody>
23106
23107
23108
23109
23110
23111
23112
23113
23114
23115
23116          <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
23117            <td class="entry_name
23118             " rowspan="5">
23119              android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
23120            </td>
23121            <td class="entry_type">
23122                <span class="entry_type_name entry_type_name_enum">byte</span>
23123
23124              <span class="entry_type_visibility"> [public]</span>
23125
23126
23127              <span class="entry_type_hwlevel">[legacy] </span>
23128
23129
23130
23131                <ul class="entry_type_enum">
23132                  <li>
23133                    <span class="entry_type_enum_name">OFF</span>
23134                    <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
23135results.<wbr/></p></span>
23136                  </li>
23137                  <li>
23138                    <span class="entry_type_enum_name">SIMPLE</span>
23139                    <span class="entry_type_enum_optional">[optional]</span>
23140                    <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
23141                  </li>
23142                  <li>
23143                    <span class="entry_type_enum_name">FULL</span>
23144                    <span class="entry_type_enum_optional">[optional]</span>
23145                    <span class="entry_type_enum_notes"><p>Return all face
23146metadata.<wbr/></p>
23147<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
23148                  </li>
23149                </ul>
23150
23151            </td> <!-- entry_type -->
23152
23153            <td class="entry_description">
23154              <p>Operating mode for the face detector
23155unit.<wbr/></p>
23156            </td>
23157
23158            <td class="entry_units">
23159            </td>
23160
23161            <td class="entry_range">
23162              <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
23163            </td>
23164
23165            <td class="entry_tags">
23166              <ul class="entry_tags">
23167                  <li><a href="#tag_BC">BC</a></li>
23168              </ul>
23169            </td>
23170
23171          </tr>
23172          <tr class="entries_header">
23173            <th class="th_details" colspan="5">Details</th>
23174          </tr>
23175          <tr class="entry_cont">
23176            <td class="entry_details" colspan="5">
23177              <p>Whether face detection is enabled,<wbr/> and whether it
23178should output just the basic fields or the full set of
23179fields.<wbr/></p>
23180            </td>
23181          </tr>
23182
23183          <tr class="entries_header">
23184            <th class="th_details" colspan="5">HAL Implementation Details</th>
23185          </tr>
23186          <tr class="entry_cont">
23187            <td class="entry_details" colspan="5">
23188              <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
23189<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
23190FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
23191<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
23192            </td>
23193          </tr>
23194
23195          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23196           <!-- end of entry -->
23197
23198
23199          <tr class="entry" id="dynamic_android.statistics.faceIds">
23200            <td class="entry_name
23201             " rowspan="3">
23202              android.<wbr/>statistics.<wbr/>face<wbr/>Ids
23203            </td>
23204            <td class="entry_type">
23205                <span class="entry_type_name">int32</span>
23206                <span class="entry_type_container">x</span>
23207
23208                <span class="entry_type_array">
23209                  n
23210                </span>
23211              <span class="entry_type_visibility"> [ndk_public]</span>
23212
23213
23214              <span class="entry_type_hwlevel">[legacy] </span>
23215
23216
23217
23218
23219            </td> <!-- entry_type -->
23220
23221            <td class="entry_description">
23222              <p>List of unique IDs for detected faces.<wbr/></p>
23223            </td>
23224
23225            <td class="entry_units">
23226            </td>
23227
23228            <td class="entry_range">
23229            </td>
23230
23231            <td class="entry_tags">
23232              <ul class="entry_tags">
23233                  <li><a href="#tag_BC">BC</a></li>
23234              </ul>
23235            </td>
23236
23237          </tr>
23238          <tr class="entries_header">
23239            <th class="th_details" colspan="5">Details</th>
23240          </tr>
23241          <tr class="entry_cont">
23242            <td class="entry_details" colspan="5">
23243              <p>Each detected face is given a unique ID that is valid for as long as the face is visible
23244to the camera device.<wbr/>  A face that leaves the field of view and later returns may be
23245assigned a new ID.<wbr/></p>
23246<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
23247            </td>
23248          </tr>
23249
23250
23251          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23252           <!-- end of entry -->
23253
23254
23255          <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
23256            <td class="entry_name
23257             " rowspan="3">
23258              android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
23259            </td>
23260            <td class="entry_type">
23261                <span class="entry_type_name">int32</span>
23262                <span class="entry_type_container">x</span>
23263
23264                <span class="entry_type_array">
23265                  n x 6
23266                </span>
23267              <span class="entry_type_visibility"> [ndk_public]</span>
23268
23269
23270              <span class="entry_type_hwlevel">[legacy] </span>
23271
23272
23273                <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
23274
23275
23276            </td> <!-- entry_type -->
23277
23278            <td class="entry_description">
23279              <p>List of landmarks for detected
23280faces.<wbr/></p>
23281            </td>
23282
23283            <td class="entry_units">
23284            </td>
23285
23286            <td class="entry_range">
23287            </td>
23288
23289            <td class="entry_tags">
23290              <ul class="entry_tags">
23291                  <li><a href="#tag_BC">BC</a></li>
23292              </ul>
23293            </td>
23294
23295          </tr>
23296          <tr class="entries_header">
23297            <th class="th_details" colspan="5">Details</th>
23298          </tr>
23299          <tr class="entry_cont">
23300            <td class="entry_details" colspan="5">
23301              <p>The coordinate system is that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
23302<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
23303<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
23304            </td>
23305          </tr>
23306
23307
23308          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23309           <!-- end of entry -->
23310
23311
23312          <tr class="entry" id="dynamic_android.statistics.faceRectangles">
23313            <td class="entry_name
23314             " rowspan="3">
23315              android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
23316            </td>
23317            <td class="entry_type">
23318                <span class="entry_type_name">int32</span>
23319                <span class="entry_type_container">x</span>
23320
23321                <span class="entry_type_array">
23322                  n x 4
23323                </span>
23324              <span class="entry_type_visibility"> [ndk_public as rectangle]</span>
23325
23326
23327              <span class="entry_type_hwlevel">[legacy] </span>
23328
23329
23330                <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
23331
23332
23333            </td> <!-- entry_type -->
23334
23335            <td class="entry_description">
23336              <p>List of the bounding rectangles for detected
23337faces.<wbr/></p>
23338            </td>
23339
23340            <td class="entry_units">
23341            </td>
23342
23343            <td class="entry_range">
23344            </td>
23345
23346            <td class="entry_tags">
23347              <ul class="entry_tags">
23348                  <li><a href="#tag_BC">BC</a></li>
23349              </ul>
23350            </td>
23351
23352          </tr>
23353          <tr class="entries_header">
23354            <th class="th_details" colspan="5">Details</th>
23355          </tr>
23356          <tr class="entry_cont">
23357            <td class="entry_details" colspan="5">
23358              <p>The coordinate system is that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
23359<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
23360<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
23361            </td>
23362          </tr>
23363
23364
23365          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23366           <!-- end of entry -->
23367
23368
23369          <tr class="entry" id="dynamic_android.statistics.faceScores">
23370            <td class="entry_name
23371             " rowspan="5">
23372              android.<wbr/>statistics.<wbr/>face<wbr/>Scores
23373            </td>
23374            <td class="entry_type">
23375                <span class="entry_type_name">byte</span>
23376                <span class="entry_type_container">x</span>
23377
23378                <span class="entry_type_array">
23379                  n
23380                </span>
23381              <span class="entry_type_visibility"> [ndk_public]</span>
23382
23383
23384              <span class="entry_type_hwlevel">[legacy] </span>
23385
23386
23387
23388
23389            </td> <!-- entry_type -->
23390
23391            <td class="entry_description">
23392              <p>List of the face confidence scores for
23393detected faces</p>
23394            </td>
23395
23396            <td class="entry_units">
23397            </td>
23398
23399            <td class="entry_range">
23400              <p>1-100</p>
23401            </td>
23402
23403            <td class="entry_tags">
23404              <ul class="entry_tags">
23405                  <li><a href="#tag_BC">BC</a></li>
23406              </ul>
23407            </td>
23408
23409          </tr>
23410          <tr class="entries_header">
23411            <th class="th_details" colspan="5">Details</th>
23412          </tr>
23413          <tr class="entry_cont">
23414            <td class="entry_details" colspan="5">
23415              <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
23416            </td>
23417          </tr>
23418
23419          <tr class="entries_header">
23420            <th class="th_details" colspan="5">HAL Implementation Details</th>
23421          </tr>
23422          <tr class="entry_cont">
23423            <td class="entry_details" colspan="5">
23424              <p>The value should be meaningful (for example,<wbr/> setting 100 at
23425all times is illegal).<wbr/></p>
23426            </td>
23427          </tr>
23428
23429          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23430           <!-- end of entry -->
23431
23432
23433          <tr class="entry" id="dynamic_android.statistics.faces">
23434            <td class="entry_name
23435             " rowspan="3">
23436              android.<wbr/>statistics.<wbr/>faces
23437            </td>
23438            <td class="entry_type">
23439                <span class="entry_type_name">int32</span>
23440                <span class="entry_type_container">x</span>
23441
23442                <span class="entry_type_array">
23443                  n
23444                </span>
23445              <span class="entry_type_visibility"> [java_public as face]</span>
23446
23447              <span class="entry_type_synthetic">[synthetic] </span>
23448
23449              <span class="entry_type_hwlevel">[legacy] </span>
23450
23451
23452
23453
23454            </td> <!-- entry_type -->
23455
23456            <td class="entry_description">
23457              <p>List of the faces detected through camera face detection
23458in this capture.<wbr/></p>
23459            </td>
23460
23461            <td class="entry_units">
23462            </td>
23463
23464            <td class="entry_range">
23465            </td>
23466
23467            <td class="entry_tags">
23468            </td>
23469
23470          </tr>
23471          <tr class="entries_header">
23472            <th class="th_details" colspan="5">Details</th>
23473          </tr>
23474          <tr class="entry_cont">
23475            <td class="entry_details" colspan="5">
23476              <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>
23477            </td>
23478          </tr>
23479
23480
23481          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23482           <!-- end of entry -->
23483
23484
23485          <tr class="entry" id="dynamic_android.statistics.histogram">
23486            <td class="entry_name
23487             " rowspan="3">
23488              android.<wbr/>statistics.<wbr/>histogram
23489            </td>
23490            <td class="entry_type">
23491                <span class="entry_type_name">int32</span>
23492                <span class="entry_type_container">x</span>
23493
23494                <span class="entry_type_array">
23495                  n x 3
23496                </span>
23497              <span class="entry_type_visibility"> [system]</span>
23498
23499
23500
23501
23502                <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>
23503
23504
23505            </td> <!-- entry_type -->
23506
23507            <td class="entry_description">
23508              <p>A 3-channel histogram based on the raw
23509sensor data</p>
23510            </td>
23511
23512            <td class="entry_units">
23513            </td>
23514
23515            <td class="entry_range">
23516            </td>
23517
23518            <td class="entry_tags">
23519              <ul class="entry_tags">
23520                  <li><a href="#tag_FUTURE">FUTURE</a></li>
23521              </ul>
23522            </td>
23523
23524          </tr>
23525          <tr class="entries_header">
23526            <th class="th_details" colspan="5">Details</th>
23527          </tr>
23528          <tr class="entry_cont">
23529            <td class="entry_details" colspan="5">
23530              <p>The k'th bucket (0-based) covers the input range
23531(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/>
23532(k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
23533supported,<wbr/> all channels should have the same data</p>
23534            </td>
23535          </tr>
23536
23537
23538          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23539           <!-- end of entry -->
23540
23541
23542          <tr class="entry" id="dynamic_android.statistics.histogramMode">
23543            <td class="entry_name
23544             " rowspan="1">
23545              android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
23546            </td>
23547            <td class="entry_type">
23548                <span class="entry_type_name entry_type_name_enum">byte</span>
23549
23550              <span class="entry_type_visibility"> [system as boolean]</span>
23551
23552
23553
23554
23555
23556                <ul class="entry_type_enum">
23557                  <li>
23558                    <span class="entry_type_enum_name">OFF</span>
23559                  </li>
23560                  <li>
23561                    <span class="entry_type_enum_name">ON</span>
23562                  </li>
23563                </ul>
23564
23565            </td> <!-- entry_type -->
23566
23567            <td class="entry_description">
23568              <p>Operating mode for histogram
23569generation</p>
23570            </td>
23571
23572            <td class="entry_units">
23573            </td>
23574
23575            <td class="entry_range">
23576            </td>
23577
23578            <td class="entry_tags">
23579              <ul class="entry_tags">
23580                  <li><a href="#tag_FUTURE">FUTURE</a></li>
23581              </ul>
23582            </td>
23583
23584          </tr>
23585
23586
23587          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23588           <!-- end of entry -->
23589
23590
23591          <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
23592            <td class="entry_name
23593             " rowspan="3">
23594              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
23595            </td>
23596            <td class="entry_type">
23597                <span class="entry_type_name">int32</span>
23598                <span class="entry_type_container">x</span>
23599
23600                <span class="entry_type_array">
23601                  n x m x 3
23602                </span>
23603              <span class="entry_type_visibility"> [system]</span>
23604
23605
23606
23607
23608                <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>
23609
23610
23611            </td> <!-- entry_type -->
23612
23613            <td class="entry_description">
23614              <p>A 3-channel sharpness map,<wbr/> based on the raw
23615sensor data</p>
23616            </td>
23617
23618            <td class="entry_units">
23619            </td>
23620
23621            <td class="entry_range">
23622            </td>
23623
23624            <td class="entry_tags">
23625              <ul class="entry_tags">
23626                  <li><a href="#tag_FUTURE">FUTURE</a></li>
23627              </ul>
23628            </td>
23629
23630          </tr>
23631          <tr class="entries_header">
23632            <th class="th_details" colspan="5">Details</th>
23633          </tr>
23634          <tr class="entry_cont">
23635            <td class="entry_details" colspan="5">
23636              <p>If only a monochrome sharpness map is supported,<wbr/>
23637all channels should have the same data</p>
23638            </td>
23639          </tr>
23640
23641
23642          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23643           <!-- end of entry -->
23644
23645
23646          <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
23647            <td class="entry_name
23648             " rowspan="1">
23649              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
23650            </td>
23651            <td class="entry_type">
23652                <span class="entry_type_name entry_type_name_enum">byte</span>
23653
23654              <span class="entry_type_visibility"> [system as boolean]</span>
23655
23656
23657
23658
23659
23660                <ul class="entry_type_enum">
23661                  <li>
23662                    <span class="entry_type_enum_name">OFF</span>
23663                  </li>
23664                  <li>
23665                    <span class="entry_type_enum_name">ON</span>
23666                  </li>
23667                </ul>
23668
23669            </td> <!-- entry_type -->
23670
23671            <td class="entry_description">
23672              <p>Operating mode for sharpness map
23673generation</p>
23674            </td>
23675
23676            <td class="entry_units">
23677            </td>
23678
23679            <td class="entry_range">
23680            </td>
23681
23682            <td class="entry_tags">
23683              <ul class="entry_tags">
23684                  <li><a href="#tag_FUTURE">FUTURE</a></li>
23685              </ul>
23686            </td>
23687
23688          </tr>
23689
23690
23691          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23692           <!-- end of entry -->
23693
23694
23695          <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
23696            <td class="entry_name
23697             " rowspan="3">
23698              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
23699            </td>
23700            <td class="entry_type">
23701                <span class="entry_type_name">byte</span>
23702
23703              <span class="entry_type_visibility"> [java_public as lensShadingMap]</span>
23704
23705
23706              <span class="entry_type_hwlevel">[full] </span>
23707
23708
23709
23710
23711            </td> <!-- entry_type -->
23712
23713            <td class="entry_description">
23714              <p>The shading map is a low-resolution floating-point map
23715that lists the coefficients used to correct for vignetting,<wbr/> for each
23716Bayer color channel.<wbr/></p>
23717            </td>
23718
23719            <td class="entry_units">
23720            </td>
23721
23722            <td class="entry_range">
23723              <p>Each gain factor is &gt;= 1</p>
23724            </td>
23725
23726            <td class="entry_tags">
23727            </td>
23728
23729          </tr>
23730          <tr class="entries_header">
23731            <th class="th_details" colspan="5">Details</th>
23732          </tr>
23733          <tr class="entry_cont">
23734            <td class="entry_details" colspan="5">
23735              <p>The map provided here is the same map that is used by the camera device to
23736correct both color shading and vignetting for output non-RAW images.<wbr/></p>
23737<p>When there is no lens shading correction applied to RAW
23738output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
23739false),<wbr/> this map is the complete lens shading correction
23740map; when there is some lens shading correction applied to
23741the 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
23742correction map that needs to be applied to get shading
23743corrected images that match the camera device's output for
23744non-RAW formats.<wbr/></p>
23745<p>For a complete shading correction map,<wbr/> the least shaded
23746section of the image will have a gain factor of 1; all
23747other sections will have gains above 1.<wbr/></p>
23748<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
23749will take into account the colorCorrection settings.<wbr/></p>
23750<p>The shading map is for the entire active pixel array,<wbr/> and is not
23751affected by the crop region specified in the request.<wbr/> Each shading map
23752entry is the value of the shading compensation map over a specific
23753pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
23754map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
23755(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
23756pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
23757The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
23758<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
23759channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
23760The shading map is stored in a fully interleaved format.<wbr/></p>
23761<p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
23762and will be smaller than 64x64.<wbr/></p>
23763<p>As an example,<wbr/> given a very small map defined as:</p>
23764<pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
23765values =
23766[ 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/>
23767    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/>
23768  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/>
23769    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/>
23770  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/>
23771    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 ]
23772</code></pre>
23773<p>The low-resolution scaling map images for each channel are
23774(displayed using nearest-neighbor interpolation):</p>
23775<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
23776<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
23777<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
23778<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
23779<p>As a visualization only,<wbr/> inverting the full-color map to recover an
23780image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
23781<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
23782            </td>
23783          </tr>
23784
23785
23786          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23787           <!-- end of entry -->
23788
23789
23790          <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
23791            <td class="entry_name
23792             " rowspan="5">
23793              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
23794            </td>
23795            <td class="entry_type">
23796                <span class="entry_type_name">float</span>
23797                <span class="entry_type_container">x</span>
23798
23799                <span class="entry_type_array">
23800                  4 x n x m
23801                </span>
23802              <span class="entry_type_visibility"> [ndk_public]</span>
23803
23804
23805              <span class="entry_type_hwlevel">[full] </span>
23806
23807
23808                <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
23809
23810
23811            </td> <!-- entry_type -->
23812
23813            <td class="entry_description">
23814              <p>The shading map is a low-resolution floating-point map
23815that lists the coefficients used to correct for vignetting and color shading,<wbr/>
23816for each Bayer color channel of RAW image data.<wbr/></p>
23817            </td>
23818
23819            <td class="entry_units">
23820            </td>
23821
23822            <td class="entry_range">
23823              <p>Each gain factor is &gt;= 1</p>
23824            </td>
23825
23826            <td class="entry_tags">
23827            </td>
23828
23829          </tr>
23830          <tr class="entries_header">
23831            <th class="th_details" colspan="5">Details</th>
23832          </tr>
23833          <tr class="entry_cont">
23834            <td class="entry_details" colspan="5">
23835              <p>The map provided here is the same map that is used by the camera device to
23836correct both color shading and vignetting for output non-RAW images.<wbr/></p>
23837<p>When there is no lens shading correction applied to RAW
23838output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
23839false),<wbr/> this map is the complete lens shading correction
23840map; when there is some lens shading correction applied to
23841the 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
23842correction map that needs to be applied to get shading
23843corrected images that match the camera device's output for
23844non-RAW formats.<wbr/></p>
23845<p>For a complete shading correction map,<wbr/> the least shaded
23846section of the image will have a gain factor of 1; all
23847other sections will have gains above 1.<wbr/></p>
23848<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
23849will take into account the colorCorrection settings.<wbr/></p>
23850<p>The shading map is for the entire active pixel array,<wbr/> and is not
23851affected by the crop region specified in the request.<wbr/> Each shading map
23852entry is the value of the shading compensation map over a specific
23853pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
23854map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
23855(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
23856pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
23857The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
23858<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
23859channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
23860The shading map is stored in a fully interleaved format,<wbr/> and its size
23861is 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>
23862<p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
23863and will be smaller than 64x64.<wbr/></p>
23864<p>As an example,<wbr/> given a very small map defined as:</p>
23865<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
23866<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
23867[ 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/>
23868    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/>
23869  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/>
23870    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/>
23871  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/>
23872    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 ]
23873</code></pre>
23874<p>The low-resolution scaling map images for each channel are
23875(displayed using nearest-neighbor interpolation):</p>
23876<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
23877<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
23878<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
23879<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
23880<p>As a visualization only,<wbr/> inverting the full-color map to recover an
23881image of a gray wall (using bicubic interpolation for visual quality)
23882as captured by the sensor gives:</p>
23883<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
23884<p>Note that the RAW image data might be subject to lens shading
23885correction not reported on this map.<wbr/> Query
23886<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
23887to lens shading correction.<wbr/> If <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a>
23888is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
23889correction.<wbr/> In the case full lens shading correction is applied to RAW
23890images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
23891In other words,<wbr/> the map reported in this key is the remaining lens shading
23892that needs to be applied on the RAW image to get images without lens shading
23893artifacts.<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
23894formats.<wbr/></p>
23895            </td>
23896          </tr>
23897
23898          <tr class="entries_header">
23899            <th class="th_details" colspan="5">HAL Implementation Details</th>
23900          </tr>
23901          <tr class="entry_cont">
23902            <td class="entry_details" colspan="5">
23903              <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
23904When AE and AWB are in AUTO modes
23905(<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
23906may have all the information it need to generate most accurate lens shading map.<wbr/> When
23907AE or AWB are in manual mode
23908(<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
23909may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
23910generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
23911the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
23912            </td>
23913          </tr>
23914
23915          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23916           <!-- end of entry -->
23917
23918
23919          <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
23920            <td class="entry_name
23921                entry_name_deprecated
23922             " rowspan="3">
23923              android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
23924            </td>
23925            <td class="entry_type">
23926                <span class="entry_type_name">float</span>
23927                <span class="entry_type_container">x</span>
23928
23929                <span class="entry_type_array">
23930                  4
23931                </span>
23932              <span class="entry_type_visibility"> [hidden]</span>
23933
23934
23935
23936              <span class="entry_type_deprecated">[deprecated] </span>
23937
23938                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
23939
23940
23941            </td> <!-- entry_type -->
23942
23943            <td class="entry_description">
23944              <p>The best-fit color channel gains calculated
23945by the camera device's statistics units for the current output frame.<wbr/></p>
23946            </td>
23947
23948            <td class="entry_units">
23949            </td>
23950
23951            <td class="entry_range">
23952              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
23953            </td>
23954
23955            <td class="entry_tags">
23956            </td>
23957
23958          </tr>
23959          <tr class="entries_header">
23960            <th class="th_details" colspan="5">Details</th>
23961          </tr>
23962          <tr class="entry_cont">
23963            <td class="entry_details" colspan="5">
23964              <p>This may be different than the gains used for this frame,<wbr/>
23965since statistics processing on data from a new frame
23966typically completes after the transform has already been
23967applied to that frame.<wbr/></p>
23968<p>The 4 channel gains are defined in Bayer domain,<wbr/>
23969see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
23970<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
23971regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
23972            </td>
23973          </tr>
23974
23975
23976          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23977           <!-- end of entry -->
23978
23979
23980          <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
23981            <td class="entry_name
23982                entry_name_deprecated
23983             " rowspan="3">
23984              android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
23985            </td>
23986            <td class="entry_type">
23987                <span class="entry_type_name">rational</span>
23988                <span class="entry_type_container">x</span>
23989
23990                <span class="entry_type_array">
23991                  3 x 3
23992                </span>
23993              <span class="entry_type_visibility"> [hidden]</span>
23994
23995
23996
23997              <span class="entry_type_deprecated">[deprecated] </span>
23998
23999                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
24000
24001
24002            </td> <!-- entry_type -->
24003
24004            <td class="entry_description">
24005              <p>The best-fit color transform matrix estimate
24006calculated by the camera device's statistics units for the current
24007output frame.<wbr/></p>
24008            </td>
24009
24010            <td class="entry_units">
24011            </td>
24012
24013            <td class="entry_range">
24014              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
24015            </td>
24016
24017            <td class="entry_tags">
24018            </td>
24019
24020          </tr>
24021          <tr class="entries_header">
24022            <th class="th_details" colspan="5">Details</th>
24023          </tr>
24024          <tr class="entry_cont">
24025            <td class="entry_details" colspan="5">
24026              <p>The camera device will provide the estimate from its
24027statistics unit on the white balance transforms to use
24028for the next frame.<wbr/> These are the values the camera device believes
24029are the best fit for the current output frame.<wbr/> This may
24030be different than the transform used for this frame,<wbr/> since
24031statistics processing on data from a new frame typically
24032completes after the transform has already been applied to
24033that frame.<wbr/></p>
24034<p>These estimates must be provided for all frames,<wbr/> even if
24035capture settings and color transforms are set by the application.<wbr/></p>
24036<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
24037regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
24038            </td>
24039          </tr>
24040
24041
24042          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24043           <!-- end of entry -->
24044
24045
24046          <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
24047            <td class="entry_name
24048             " rowspan="3">
24049              android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
24050            </td>
24051            <td class="entry_type">
24052                <span class="entry_type_name entry_type_name_enum">byte</span>
24053
24054              <span class="entry_type_visibility"> [public]</span>
24055
24056
24057              <span class="entry_type_hwlevel">[full] </span>
24058
24059
24060
24061                <ul class="entry_type_enum">
24062                  <li>
24063                    <span class="entry_type_enum_name">NONE</span>
24064                    <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
24065in the current scene.<wbr/></p></span>
24066                  </li>
24067                  <li>
24068                    <span class="entry_type_enum_name">50HZ</span>
24069                    <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
24070in the current scene.<wbr/></p></span>
24071                  </li>
24072                  <li>
24073                    <span class="entry_type_enum_name">60HZ</span>
24074                    <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
24075in the current scene.<wbr/></p></span>
24076                  </li>
24077                </ul>
24078
24079            </td> <!-- entry_type -->
24080
24081            <td class="entry_description">
24082              <p>The camera device estimated scene illumination lighting
24083frequency.<wbr/></p>
24084            </td>
24085
24086            <td class="entry_units">
24087            </td>
24088
24089            <td class="entry_range">
24090            </td>
24091
24092            <td class="entry_tags">
24093            </td>
24094
24095          </tr>
24096          <tr class="entries_header">
24097            <th class="th_details" colspan="5">Details</th>
24098          </tr>
24099          <tr class="entry_cont">
24100            <td class="entry_details" colspan="5">
24101              <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
24102that depends on the local utility power standards.<wbr/> This flicker must be
24103accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
24104The camera device uses this entry to tell the application what the scene
24105illuminant frequency is.<wbr/></p>
24106<p>When manual exposure control is enabled
24107(<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> ==
24108OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
24109antibanding,<wbr/> and the application can ensure it selects
24110exposure times that do not cause banding issues by looking
24111into this metadata field.<wbr/> See
24112<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
24113<p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
24114            </td>
24115          </tr>
24116
24117
24118          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24119           <!-- end of entry -->
24120
24121
24122          <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
24123            <td class="entry_name
24124             " rowspan="3">
24125              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
24126            </td>
24127            <td class="entry_type">
24128                <span class="entry_type_name entry_type_name_enum">byte</span>
24129
24130              <span class="entry_type_visibility"> [public as boolean]</span>
24131
24132
24133
24134
24135
24136                <ul class="entry_type_enum">
24137                  <li>
24138                    <span class="entry_type_enum_name">OFF</span>
24139                    <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
24140                  </li>
24141                  <li>
24142                    <span class="entry_type_enum_name">ON</span>
24143                    <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
24144                  </li>
24145                </ul>
24146
24147            </td> <!-- entry_type -->
24148
24149            <td class="entry_description">
24150              <p>Operating mode for hot pixel map generation.<wbr/></p>
24151            </td>
24152
24153            <td class="entry_units">
24154            </td>
24155
24156            <td class="entry_range">
24157              <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>
24158            </td>
24159
24160            <td class="entry_tags">
24161              <ul class="entry_tags">
24162                  <li><a href="#tag_V1">V1</a></li>
24163                  <li><a href="#tag_RAW">RAW</a></li>
24164              </ul>
24165            </td>
24166
24167          </tr>
24168          <tr class="entries_header">
24169            <th class="th_details" colspan="5">Details</th>
24170          </tr>
24171          <tr class="entry_cont">
24172            <td class="entry_details" colspan="5">
24173              <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/>
24174If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
24175            </td>
24176          </tr>
24177
24178
24179          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24180           <!-- end of entry -->
24181
24182
24183          <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
24184            <td class="entry_name
24185             " rowspan="5">
24186              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
24187            </td>
24188            <td class="entry_type">
24189                <span class="entry_type_name">int32</span>
24190                <span class="entry_type_container">x</span>
24191
24192                <span class="entry_type_array">
24193                  2 x n
24194                </span>
24195              <span class="entry_type_visibility"> [public as point]</span>
24196
24197
24198
24199
24200                <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
24201
24202
24203            </td> <!-- entry_type -->
24204
24205            <td class="entry_description">
24206              <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
24207            </td>
24208
24209            <td class="entry_units">
24210            </td>
24211
24212            <td class="entry_range">
24213              <p>n &lt;= number of pixels on the sensor.<wbr/>
24214The <code>(x,<wbr/> y)</code> coordinates must be bounded by
24215<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
24216            </td>
24217
24218            <td class="entry_tags">
24219              <ul class="entry_tags">
24220                  <li><a href="#tag_V1">V1</a></li>
24221                  <li><a href="#tag_RAW">RAW</a></li>
24222              </ul>
24223            </td>
24224
24225          </tr>
24226          <tr class="entries_header">
24227            <th class="th_details" colspan="5">Details</th>
24228          </tr>
24229          <tr class="entry_cont">
24230            <td class="entry_details" colspan="5">
24231              <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
24232<code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
24233bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
24234height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/>
24235This may include hot pixels that lie outside of the active array
24236bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
24237            </td>
24238          </tr>
24239
24240          <tr class="entries_header">
24241            <th class="th_details" colspan="5">HAL Implementation Details</th>
24242          </tr>
24243          <tr class="entry_cont">
24244            <td class="entry_details" colspan="5">
24245              <p>A hotpixel map contains the coordinates of pixels on the camera
24246sensor that do report valid values (usually due to defects in
24247the camera sensor).<wbr/> This includes pixels that are stuck at certain
24248values,<wbr/> or have a response that does not accuractly encode the
24249incoming light from the scene.<wbr/></p>
24250<p>To avoid performance issues,<wbr/> there should be significantly fewer hot
24251pixels than actual pixels on the camera sensor.<wbr/></p>
24252            </td>
24253          </tr>
24254
24255          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24256           <!-- end of entry -->
24257
24258
24259          <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
24260            <td class="entry_name
24261             " rowspan="3">
24262              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
24263            </td>
24264            <td class="entry_type">
24265                <span class="entry_type_name entry_type_name_enum">byte</span>
24266
24267              <span class="entry_type_visibility"> [public]</span>
24268
24269
24270              <span class="entry_type_hwlevel">[full] </span>
24271
24272
24273
24274                <ul class="entry_type_enum">
24275                  <li>
24276                    <span class="entry_type_enum_name">OFF</span>
24277                    <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
24278                  </li>
24279                  <li>
24280                    <span class="entry_type_enum_name">ON</span>
24281                    <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
24282                  </li>
24283                </ul>
24284
24285            </td> <!-- entry_type -->
24286
24287            <td class="entry_description">
24288              <p>Whether the camera device will output the lens
24289shading map in output result metadata.<wbr/></p>
24290            </td>
24291
24292            <td class="entry_units">
24293            </td>
24294
24295            <td class="entry_range">
24296              <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>
24297            </td>
24298
24299            <td class="entry_tags">
24300              <ul class="entry_tags">
24301                  <li><a href="#tag_RAW">RAW</a></li>
24302              </ul>
24303            </td>
24304
24305          </tr>
24306          <tr class="entries_header">
24307            <th class="th_details" colspan="5">Details</th>
24308          </tr>
24309          <tr class="entry_cont">
24310            <td class="entry_details" colspan="5">
24311              <p>When set to ON,<wbr/>
24312<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
24313the output result metadata.<wbr/></p>
24314<p>ON is always supported on devices with the RAW capability.<wbr/></p>
24315            </td>
24316          </tr>
24317
24318
24319          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24320           <!-- end of entry -->
24321
24322
24323
24324      <!-- end of kind -->
24325      </tbody>
24326
24327  <!-- end of section -->
24328  <tr><td colspan="6" id="section_tonemap" class="section">tonemap</td></tr>
24329
24330
24331      <tr><td colspan="6" class="kind">controls</td></tr>
24332
24333      <thead class="entries_header">
24334        <tr>
24335          <th class="th_name">Property Name</th>
24336          <th class="th_type">Type</th>
24337          <th class="th_description">Description</th>
24338          <th class="th_units">Units</th>
24339          <th class="th_range">Range</th>
24340          <th class="th_tags">Tags</th>
24341        </tr>
24342      </thead>
24343
24344      <tbody>
24345
24346
24347
24348
24349
24350
24351
24352
24353
24354
24355          <tr class="entry" id="controls_android.tonemap.curveBlue">
24356            <td class="entry_name
24357             " rowspan="3">
24358              android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
24359            </td>
24360            <td class="entry_type">
24361                <span class="entry_type_name">float</span>
24362                <span class="entry_type_container">x</span>
24363
24364                <span class="entry_type_array">
24365                  n x 2
24366                </span>
24367              <span class="entry_type_visibility"> [ndk_public]</span>
24368
24369
24370              <span class="entry_type_hwlevel">[full] </span>
24371
24372
24373                <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>
24374
24375
24376            </td> <!-- entry_type -->
24377
24378            <td class="entry_description">
24379              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
24380channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24381CONTRAST_<wbr/>CURVE.<wbr/></p>
24382            </td>
24383
24384            <td class="entry_units">
24385            </td>
24386
24387            <td class="entry_range">
24388            </td>
24389
24390            <td class="entry_tags">
24391            </td>
24392
24393          </tr>
24394          <tr class="entries_header">
24395            <th class="th_details" colspan="5">Details</th>
24396          </tr>
24397          <tr class="entry_cont">
24398            <td class="entry_details" colspan="5">
24399              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
24400            </td>
24401          </tr>
24402
24403
24404          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24405           <!-- end of entry -->
24406
24407
24408          <tr class="entry" id="controls_android.tonemap.curveGreen">
24409            <td class="entry_name
24410             " rowspan="3">
24411              android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
24412            </td>
24413            <td class="entry_type">
24414                <span class="entry_type_name">float</span>
24415                <span class="entry_type_container">x</span>
24416
24417                <span class="entry_type_array">
24418                  n x 2
24419                </span>
24420              <span class="entry_type_visibility"> [ndk_public]</span>
24421
24422
24423              <span class="entry_type_hwlevel">[full] </span>
24424
24425
24426                <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>
24427
24428
24429            </td> <!-- entry_type -->
24430
24431            <td class="entry_description">
24432              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
24433channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24434CONTRAST_<wbr/>CURVE.<wbr/></p>
24435            </td>
24436
24437            <td class="entry_units">
24438            </td>
24439
24440            <td class="entry_range">
24441            </td>
24442
24443            <td class="entry_tags">
24444            </td>
24445
24446          </tr>
24447          <tr class="entries_header">
24448            <th class="th_details" colspan="5">Details</th>
24449          </tr>
24450          <tr class="entry_cont">
24451            <td class="entry_details" colspan="5">
24452              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
24453            </td>
24454          </tr>
24455
24456
24457          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24458           <!-- end of entry -->
24459
24460
24461          <tr class="entry" id="controls_android.tonemap.curveRed">
24462            <td class="entry_name
24463             " rowspan="5">
24464              android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
24465            </td>
24466            <td class="entry_type">
24467                <span class="entry_type_name">float</span>
24468                <span class="entry_type_container">x</span>
24469
24470                <span class="entry_type_array">
24471                  n x 2
24472                </span>
24473              <span class="entry_type_visibility"> [ndk_public]</span>
24474
24475
24476              <span class="entry_type_hwlevel">[full] </span>
24477
24478
24479                <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>
24480
24481
24482            </td> <!-- entry_type -->
24483
24484            <td class="entry_description">
24485              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
24486channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24487CONTRAST_<wbr/>CURVE.<wbr/></p>
24488            </td>
24489
24490            <td class="entry_units">
24491            </td>
24492
24493            <td class="entry_range">
24494              <p>0-1 on both input and output coordinates,<wbr/> normalized
24495as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
24496            </td>
24497
24498            <td class="entry_tags">
24499            </td>
24500
24501          </tr>
24502          <tr class="entries_header">
24503            <th class="th_details" colspan="5">Details</th>
24504          </tr>
24505          <tr class="entry_cont">
24506            <td class="entry_details" colspan="5">
24507              <p>Each channel's curve is defined by an array of control points:</p>
24508<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
24509  [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
245102 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
24511<p>These are sorted in order of increasing <code>Pin</code>; it is
24512required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
24513define a complete mapping.<wbr/> For input values between control points,<wbr/>
24514the camera device must linearly interpolate between the control
24515points.<wbr/></p>
24516<p>Each curve can have an independent number of points,<wbr/> and the number
24517of points can be less than max (that is,<wbr/> the request doesn't have to
24518always provide a curve with number of points equivalent to
24519<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
24520<p>A few examples,<wbr/> and their corresponding graphical mappings; these
24521only specify the red channel and the precision is limited to 4
24522digits,<wbr/> for conciseness.<wbr/></p>
24523<p>Linear mapping:</p>
24524<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 ]
24525</code></pre>
24526<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
24527<p>Invert mapping:</p>
24528<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 ]
24529</code></pre>
24530<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
24531<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
24532<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
24533  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/>
24534  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/>
24535  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/>
24536  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 ]
24537</code></pre>
24538<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
24539<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
24540<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
24541  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/>
24542  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/>
24543  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/>
24544  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 ]
24545</code></pre>
24546<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24547            </td>
24548          </tr>
24549
24550          <tr class="entries_header">
24551            <th class="th_details" colspan="5">HAL Implementation Details</th>
24552          </tr>
24553          <tr class="entry_cont">
24554            <td class="entry_details" colspan="5">
24555              <p>For good quality of mapping,<wbr/> at least 128 control points are
24556preferred.<wbr/></p>
24557<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
24558control points used as are available.<wbr/></p>
24559            </td>
24560          </tr>
24561
24562          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24563           <!-- end of entry -->
24564
24565
24566          <tr class="entry" id="controls_android.tonemap.curve">
24567            <td class="entry_name
24568             " rowspan="5">
24569              android.<wbr/>tonemap.<wbr/>curve
24570            </td>
24571            <td class="entry_type">
24572                <span class="entry_type_name">float</span>
24573
24574              <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
24575
24576              <span class="entry_type_synthetic">[synthetic] </span>
24577
24578              <span class="entry_type_hwlevel">[full] </span>
24579
24580
24581
24582
24583            </td> <!-- entry_type -->
24584
24585            <td class="entry_description">
24586              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
24587is CONTRAST_<wbr/>CURVE.<wbr/></p>
24588            </td>
24589
24590            <td class="entry_units">
24591            </td>
24592
24593            <td class="entry_range">
24594            </td>
24595
24596            <td class="entry_tags">
24597            </td>
24598
24599          </tr>
24600          <tr class="entries_header">
24601            <th class="th_details" colspan="5">Details</th>
24602          </tr>
24603          <tr class="entry_cont">
24604            <td class="entry_details" colspan="5">
24605              <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
24606channels respectively.<wbr/> The following example uses the red channel as an
24607example.<wbr/> The same logic applies to green and blue channel.<wbr/>
24608Each channel's curve is defined by an array of control points:</p>
24609<pre><code>curveRed =
24610  [ 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) ]
246112 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
24612<p>These are sorted in order of increasing <code>Pin</code>; it is always
24613guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
24614define a complete mapping.<wbr/> For input values between control points,<wbr/>
24615the camera device must linearly interpolate between the control
24616points.<wbr/></p>
24617<p>Each curve can have an independent number of points,<wbr/> and the number
24618of points can be less than max (that is,<wbr/> the request doesn't have to
24619always provide a curve with number of points equivalent to
24620<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
24621<p>A few examples,<wbr/> and their corresponding graphical mappings; these
24622only specify the red channel and the precision is limited to 4
24623digits,<wbr/> for conciseness.<wbr/></p>
24624<p>Linear mapping:</p>
24625<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
24626</code></pre>
24627<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
24628<p>Invert mapping:</p>
24629<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
24630</code></pre>
24631<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
24632<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
24633<pre><code>curveRed = [
24634  (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/>
24635  (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/>
24636  (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/>
24637  (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) ]
24638</code></pre>
24639<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
24640<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
24641<pre><code>curveRed = [
24642  (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/>
24643  (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/>
24644  (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/>
24645  (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) ]
24646</code></pre>
24647<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24648            </td>
24649          </tr>
24650
24651          <tr class="entries_header">
24652            <th class="th_details" colspan="5">HAL Implementation Details</th>
24653          </tr>
24654          <tr class="entry_cont">
24655            <td class="entry_details" colspan="5">
24656              <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
24657curveBlue entries.<wbr/></p>
24658            </td>
24659          </tr>
24660
24661          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24662           <!-- end of entry -->
24663
24664
24665          <tr class="entry" id="controls_android.tonemap.mode">
24666            <td class="entry_name
24667             " rowspan="3">
24668              android.<wbr/>tonemap.<wbr/>mode
24669            </td>
24670            <td class="entry_type">
24671                <span class="entry_type_name entry_type_name_enum">byte</span>
24672
24673              <span class="entry_type_visibility"> [public]</span>
24674
24675
24676              <span class="entry_type_hwlevel">[full] </span>
24677
24678
24679
24680                <ul class="entry_type_enum">
24681                  <li>
24682                    <span class="entry_type_enum_name">CONTRAST_CURVE</span>
24683                    <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
24684the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
24685<p>All color enhancement and tonemapping must be disabled,<wbr/> except
24686for applying the tonemapping curve specified by
24687<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
24688<p>Must not slow down frame rate relative to raw
24689sensor output.<wbr/></p></span>
24690                  </li>
24691                  <li>
24692                    <span class="entry_type_enum_name">FAST</span>
24693                    <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
24694reducing frame rate compared to raw sensor output.<wbr/></p></span>
24695                  </li>
24696                  <li>
24697                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
24698                    <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
24699the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
24700                  </li>
24701                  <li>
24702                    <span class="entry_type_enum_name">GAMMA_VALUE</span>
24703                    <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
24704tonemapping.<wbr/></p>
24705<p>All color enhancement and tonemapping must be disabled,<wbr/> except
24706for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
24707<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
24708                  </li>
24709                  <li>
24710                    <span class="entry_type_enum_name">PRESET_CURVE</span>
24711                    <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
24712<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
24713<p>All color enhancement and tonemapping must be disabled,<wbr/> except
24714for applying the tonemapping curve specified by
24715<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
24716<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
24717                  </li>
24718                </ul>
24719
24720            </td> <!-- entry_type -->
24721
24722            <td class="entry_description">
24723              <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
24724            </td>
24725
24726            <td class="entry_units">
24727            </td>
24728
24729            <td class="entry_range">
24730              <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
24731            </td>
24732
24733            <td class="entry_tags">
24734            </td>
24735
24736          </tr>
24737          <tr class="entries_header">
24738            <th class="th_details" colspan="5">Details</th>
24739          </tr>
24740          <tr class="entry_cont">
24741            <td class="entry_details" colspan="5">
24742              <p>When switching to an application-defined contrast curve by setting
24743<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
24744per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
24745mapping from input high-bit-depth pixel value to the output
24746low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
24747and output may change depending on the camera pipeline,<wbr/> the values
24748are specified by normalized floating-point numbers.<wbr/></p>
24749<p>More-complex color mapping operations such as 3D color look-up
24750tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
24751transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24752CONTRAST_<wbr/>CURVE.<wbr/></p>
24753<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
24754emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
24755These values are always available,<wbr/> and as close as possible to the
24756actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
24757<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
24758provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
24759roughly the same.<wbr/></p>
24760            </td>
24761          </tr>
24762
24763
24764          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24765           <!-- end of entry -->
24766
24767
24768          <tr class="entry" id="controls_android.tonemap.gamma">
24769            <td class="entry_name
24770             " rowspan="3">
24771              android.<wbr/>tonemap.<wbr/>gamma
24772            </td>
24773            <td class="entry_type">
24774                <span class="entry_type_name">float</span>
24775
24776              <span class="entry_type_visibility"> [public]</span>
24777
24778
24779
24780
24781
24782
24783            </td> <!-- entry_type -->
24784
24785            <td class="entry_description">
24786              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24787GAMMA_<wbr/>VALUE</p>
24788            </td>
24789
24790            <td class="entry_units">
24791            </td>
24792
24793            <td class="entry_range">
24794            </td>
24795
24796            <td class="entry_tags">
24797            </td>
24798
24799          </tr>
24800          <tr class="entries_header">
24801            <th class="th_details" colspan="5">Details</th>
24802          </tr>
24803          <tr class="entry_cont">
24804            <td class="entry_details" colspan="5">
24805              <p>The tonemap curve will be defined the following formula:
24806* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
24807where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
24808pow is the power function and gamma is the gamma value specified by this
24809key.<wbr/></p>
24810<p>The same curve will be applied to all color channels.<wbr/> The camera device
24811may clip the input gamma value to its supported range.<wbr/> The actual applied
24812value will be returned in capture result.<wbr/></p>
24813<p>The valid range of gamma value varies on different devices,<wbr/> but values
24814within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
24815            </td>
24816          </tr>
24817
24818
24819          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24820           <!-- end of entry -->
24821
24822
24823          <tr class="entry" id="controls_android.tonemap.presetCurve">
24824            <td class="entry_name
24825             " rowspan="3">
24826              android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
24827            </td>
24828            <td class="entry_type">
24829                <span class="entry_type_name entry_type_name_enum">byte</span>
24830
24831              <span class="entry_type_visibility"> [public]</span>
24832
24833
24834
24835
24836
24837                <ul class="entry_type_enum">
24838                  <li>
24839                    <span class="entry_type_enum_name">SRGB</span>
24840                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
24841                  </li>
24842                  <li>
24843                    <span class="entry_type_enum_name">REC709</span>
24844                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
24845                  </li>
24846                </ul>
24847
24848            </td> <!-- entry_type -->
24849
24850            <td class="entry_description">
24851              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24852PRESET_<wbr/>CURVE</p>
24853            </td>
24854
24855            <td class="entry_units">
24856            </td>
24857
24858            <td class="entry_range">
24859            </td>
24860
24861            <td class="entry_tags">
24862            </td>
24863
24864          </tr>
24865          <tr class="entries_header">
24866            <th class="th_details" colspan="5">Details</th>
24867          </tr>
24868          <tr class="entry_cont">
24869            <td class="entry_details" colspan="5">
24870              <p>The tonemap curve will be defined by specified standard.<wbr/></p>
24871<p>sRGB (approximated by 16 control points):</p>
24872<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24873<p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
24874<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
24875<p>Note that above figures show a 16 control points approximation of preset
24876curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
24877            </td>
24878          </tr>
24879
24880
24881          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24882           <!-- end of entry -->
24883
24884
24885
24886      <!-- end of kind -->
24887      </tbody>
24888      <tr><td colspan="6" class="kind">static</td></tr>
24889
24890      <thead class="entries_header">
24891        <tr>
24892          <th class="th_name">Property Name</th>
24893          <th class="th_type">Type</th>
24894          <th class="th_description">Description</th>
24895          <th class="th_units">Units</th>
24896          <th class="th_range">Range</th>
24897          <th class="th_tags">Tags</th>
24898        </tr>
24899      </thead>
24900
24901      <tbody>
24902
24903
24904
24905
24906
24907
24908
24909
24910
24911
24912          <tr class="entry" id="static_android.tonemap.maxCurvePoints">
24913            <td class="entry_name
24914             " rowspan="5">
24915              android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
24916            </td>
24917            <td class="entry_type">
24918                <span class="entry_type_name">int32</span>
24919
24920              <span class="entry_type_visibility"> [public]</span>
24921
24922
24923              <span class="entry_type_hwlevel">[full] </span>
24924
24925
24926
24927
24928            </td> <!-- entry_type -->
24929
24930            <td class="entry_description">
24931              <p>Maximum number of supported points in the
24932tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
24933            </td>
24934
24935            <td class="entry_units">
24936            </td>
24937
24938            <td class="entry_range">
24939            </td>
24940
24941            <td class="entry_tags">
24942            </td>
24943
24944          </tr>
24945          <tr class="entries_header">
24946            <th class="th_details" colspan="5">Details</th>
24947          </tr>
24948          <tr class="entry_cont">
24949            <td class="entry_details" colspan="5">
24950              <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
24951less than this maximum,<wbr/> the camera device will resample the curve to its internal
24952representation,<wbr/> using linear interpolation.<wbr/></p>
24953<p>The output curves in the result metadata may have a different number
24954of points than the input curves,<wbr/> and will represent the actual
24955hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
24956            </td>
24957          </tr>
24958
24959          <tr class="entries_header">
24960            <th class="th_details" colspan="5">HAL Implementation Details</th>
24961          </tr>
24962          <tr class="entry_cont">
24963            <td class="entry_details" colspan="5">
24964              <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
24965            </td>
24966          </tr>
24967
24968          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24969           <!-- end of entry -->
24970
24971
24972          <tr class="entry" id="static_android.tonemap.availableToneMapModes">
24973            <td class="entry_name
24974             " rowspan="5">
24975              android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
24976            </td>
24977            <td class="entry_type">
24978                <span class="entry_type_name">byte</span>
24979                <span class="entry_type_container">x</span>
24980
24981                <span class="entry_type_array">
24982                  n
24983                </span>
24984              <span class="entry_type_visibility"> [public as enumList]</span>
24985
24986
24987              <span class="entry_type_hwlevel">[full] </span>
24988
24989
24990                <div class="entry_type_notes">list of enums</div>
24991
24992
24993            </td> <!-- entry_type -->
24994
24995            <td class="entry_description">
24996              <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
24997device.<wbr/></p>
24998            </td>
24999
25000            <td class="entry_units">
25001            </td>
25002
25003            <td class="entry_range">
25004              <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
25005            </td>
25006
25007            <td class="entry_tags">
25008            </td>
25009
25010          </tr>
25011          <tr class="entries_header">
25012            <th class="th_details" colspan="5">Details</th>
25013          </tr>
25014          <tr class="entry_cont">
25015            <td class="entry_details" colspan="5">
25016              <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
25017at least one of below mode combinations:</p>
25018<ul>
25019<li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
25020<li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
25021</ul>
25022<p>This includes all FULL level devices.<wbr/></p>
25023            </td>
25024          </tr>
25025
25026          <tr class="entries_header">
25027            <th class="th_details" colspan="5">HAL Implementation Details</th>
25028          </tr>
25029          <tr class="entry_cont">
25030            <td class="entry_details" colspan="5">
25031              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
25032on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
25033That is,<wbr/> if the highest quality implementation on the camera device does not slow down
25034capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
25035            </td>
25036          </tr>
25037
25038          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25039           <!-- end of entry -->
25040
25041
25042
25043      <!-- end of kind -->
25044      </tbody>
25045      <tr><td colspan="6" class="kind">dynamic</td></tr>
25046
25047      <thead class="entries_header">
25048        <tr>
25049          <th class="th_name">Property Name</th>
25050          <th class="th_type">Type</th>
25051          <th class="th_description">Description</th>
25052          <th class="th_units">Units</th>
25053          <th class="th_range">Range</th>
25054          <th class="th_tags">Tags</th>
25055        </tr>
25056      </thead>
25057
25058      <tbody>
25059
25060
25061
25062
25063
25064
25065
25066
25067
25068
25069          <tr class="entry" id="dynamic_android.tonemap.curveBlue">
25070            <td class="entry_name
25071             " rowspan="3">
25072              android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
25073            </td>
25074            <td class="entry_type">
25075                <span class="entry_type_name">float</span>
25076                <span class="entry_type_container">x</span>
25077
25078                <span class="entry_type_array">
25079                  n x 2
25080                </span>
25081              <span class="entry_type_visibility"> [ndk_public]</span>
25082
25083
25084              <span class="entry_type_hwlevel">[full] </span>
25085
25086
25087                <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>
25088
25089
25090            </td> <!-- entry_type -->
25091
25092            <td class="entry_description">
25093              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
25094channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25095CONTRAST_<wbr/>CURVE.<wbr/></p>
25096            </td>
25097
25098            <td class="entry_units">
25099            </td>
25100
25101            <td class="entry_range">
25102            </td>
25103
25104            <td class="entry_tags">
25105            </td>
25106
25107          </tr>
25108          <tr class="entries_header">
25109            <th class="th_details" colspan="5">Details</th>
25110          </tr>
25111          <tr class="entry_cont">
25112            <td class="entry_details" colspan="5">
25113              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
25114            </td>
25115          </tr>
25116
25117
25118          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25119           <!-- end of entry -->
25120
25121
25122          <tr class="entry" id="dynamic_android.tonemap.curveGreen">
25123            <td class="entry_name
25124             " rowspan="3">
25125              android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
25126            </td>
25127            <td class="entry_type">
25128                <span class="entry_type_name">float</span>
25129                <span class="entry_type_container">x</span>
25130
25131                <span class="entry_type_array">
25132                  n x 2
25133                </span>
25134              <span class="entry_type_visibility"> [ndk_public]</span>
25135
25136
25137              <span class="entry_type_hwlevel">[full] </span>
25138
25139
25140                <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>
25141
25142
25143            </td> <!-- entry_type -->
25144
25145            <td class="entry_description">
25146              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
25147channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25148CONTRAST_<wbr/>CURVE.<wbr/></p>
25149            </td>
25150
25151            <td class="entry_units">
25152            </td>
25153
25154            <td class="entry_range">
25155            </td>
25156
25157            <td class="entry_tags">
25158            </td>
25159
25160          </tr>
25161          <tr class="entries_header">
25162            <th class="th_details" colspan="5">Details</th>
25163          </tr>
25164          <tr class="entry_cont">
25165            <td class="entry_details" colspan="5">
25166              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
25167            </td>
25168          </tr>
25169
25170
25171          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25172           <!-- end of entry -->
25173
25174
25175          <tr class="entry" id="dynamic_android.tonemap.curveRed">
25176            <td class="entry_name
25177             " rowspan="5">
25178              android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
25179            </td>
25180            <td class="entry_type">
25181                <span class="entry_type_name">float</span>
25182                <span class="entry_type_container">x</span>
25183
25184                <span class="entry_type_array">
25185                  n x 2
25186                </span>
25187              <span class="entry_type_visibility"> [ndk_public]</span>
25188
25189
25190              <span class="entry_type_hwlevel">[full] </span>
25191
25192
25193                <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>
25194
25195
25196            </td> <!-- entry_type -->
25197
25198            <td class="entry_description">
25199              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
25200channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25201CONTRAST_<wbr/>CURVE.<wbr/></p>
25202            </td>
25203
25204            <td class="entry_units">
25205            </td>
25206
25207            <td class="entry_range">
25208              <p>0-1 on both input and output coordinates,<wbr/> normalized
25209as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
25210            </td>
25211
25212            <td class="entry_tags">
25213            </td>
25214
25215          </tr>
25216          <tr class="entries_header">
25217            <th class="th_details" colspan="5">Details</th>
25218          </tr>
25219          <tr class="entry_cont">
25220            <td class="entry_details" colspan="5">
25221              <p>Each channel's curve is defined by an array of control points:</p>
25222<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
25223  [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
252242 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
25225<p>These are sorted in order of increasing <code>Pin</code>; it is
25226required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
25227define a complete mapping.<wbr/> For input values between control points,<wbr/>
25228the camera device must linearly interpolate between the control
25229points.<wbr/></p>
25230<p>Each curve can have an independent number of points,<wbr/> and the number
25231of points can be less than max (that is,<wbr/> the request doesn't have to
25232always provide a curve with number of points equivalent to
25233<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
25234<p>A few examples,<wbr/> and their corresponding graphical mappings; these
25235only specify the red channel and the precision is limited to 4
25236digits,<wbr/> for conciseness.<wbr/></p>
25237<p>Linear mapping:</p>
25238<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 ]
25239</code></pre>
25240<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
25241<p>Invert mapping:</p>
25242<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 ]
25243</code></pre>
25244<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
25245<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
25246<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
25247  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/>
25248  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/>
25249  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/>
25250  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 ]
25251</code></pre>
25252<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
25253<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
25254<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
25255  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/>
25256  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/>
25257  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/>
25258  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 ]
25259</code></pre>
25260<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
25261            </td>
25262          </tr>
25263
25264          <tr class="entries_header">
25265            <th class="th_details" colspan="5">HAL Implementation Details</th>
25266          </tr>
25267          <tr class="entry_cont">
25268            <td class="entry_details" colspan="5">
25269              <p>For good quality of mapping,<wbr/> at least 128 control points are
25270preferred.<wbr/></p>
25271<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
25272control points used as are available.<wbr/></p>
25273            </td>
25274          </tr>
25275
25276          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25277           <!-- end of entry -->
25278
25279
25280          <tr class="entry" id="dynamic_android.tonemap.curve">
25281            <td class="entry_name
25282             " rowspan="5">
25283              android.<wbr/>tonemap.<wbr/>curve
25284            </td>
25285            <td class="entry_type">
25286                <span class="entry_type_name">float</span>
25287
25288              <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
25289
25290              <span class="entry_type_synthetic">[synthetic] </span>
25291
25292              <span class="entry_type_hwlevel">[full] </span>
25293
25294
25295
25296
25297            </td> <!-- entry_type -->
25298
25299            <td class="entry_description">
25300              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
25301is CONTRAST_<wbr/>CURVE.<wbr/></p>
25302            </td>
25303
25304            <td class="entry_units">
25305            </td>
25306
25307            <td class="entry_range">
25308            </td>
25309
25310            <td class="entry_tags">
25311            </td>
25312
25313          </tr>
25314          <tr class="entries_header">
25315            <th class="th_details" colspan="5">Details</th>
25316          </tr>
25317          <tr class="entry_cont">
25318            <td class="entry_details" colspan="5">
25319              <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
25320channels respectively.<wbr/> The following example uses the red channel as an
25321example.<wbr/> The same logic applies to green and blue channel.<wbr/>
25322Each channel's curve is defined by an array of control points:</p>
25323<pre><code>curveRed =
25324  [ 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) ]
253252 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
25326<p>These are sorted in order of increasing <code>Pin</code>; it is always
25327guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
25328define a complete mapping.<wbr/> For input values between control points,<wbr/>
25329the camera device must linearly interpolate between the control
25330points.<wbr/></p>
25331<p>Each curve can have an independent number of points,<wbr/> and the number
25332of points can be less than max (that is,<wbr/> the request doesn't have to
25333always provide a curve with number of points equivalent to
25334<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
25335<p>A few examples,<wbr/> and their corresponding graphical mappings; these
25336only specify the red channel and the precision is limited to 4
25337digits,<wbr/> for conciseness.<wbr/></p>
25338<p>Linear mapping:</p>
25339<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
25340</code></pre>
25341<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
25342<p>Invert mapping:</p>
25343<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
25344</code></pre>
25345<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
25346<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
25347<pre><code>curveRed = [
25348  (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/>
25349  (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/>
25350  (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/>
25351  (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) ]
25352</code></pre>
25353<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
25354<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
25355<pre><code>curveRed = [
25356  (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/>
25357  (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/>
25358  (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/>
25359  (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) ]
25360</code></pre>
25361<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
25362            </td>
25363          </tr>
25364
25365          <tr class="entries_header">
25366            <th class="th_details" colspan="5">HAL Implementation Details</th>
25367          </tr>
25368          <tr class="entry_cont">
25369            <td class="entry_details" colspan="5">
25370              <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
25371curveBlue entries.<wbr/></p>
25372            </td>
25373          </tr>
25374
25375          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25376           <!-- end of entry -->
25377
25378
25379          <tr class="entry" id="dynamic_android.tonemap.mode">
25380            <td class="entry_name
25381             " rowspan="3">
25382              android.<wbr/>tonemap.<wbr/>mode
25383            </td>
25384            <td class="entry_type">
25385                <span class="entry_type_name entry_type_name_enum">byte</span>
25386
25387              <span class="entry_type_visibility"> [public]</span>
25388
25389
25390              <span class="entry_type_hwlevel">[full] </span>
25391
25392
25393
25394                <ul class="entry_type_enum">
25395                  <li>
25396                    <span class="entry_type_enum_name">CONTRAST_CURVE</span>
25397                    <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
25398the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
25399<p>All color enhancement and tonemapping must be disabled,<wbr/> except
25400for applying the tonemapping curve specified by
25401<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
25402<p>Must not slow down frame rate relative to raw
25403sensor output.<wbr/></p></span>
25404                  </li>
25405                  <li>
25406                    <span class="entry_type_enum_name">FAST</span>
25407                    <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
25408reducing frame rate compared to raw sensor output.<wbr/></p></span>
25409                  </li>
25410                  <li>
25411                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
25412                    <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
25413the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
25414                  </li>
25415                  <li>
25416                    <span class="entry_type_enum_name">GAMMA_VALUE</span>
25417                    <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
25418tonemapping.<wbr/></p>
25419<p>All color enhancement and tonemapping must be disabled,<wbr/> except
25420for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
25421<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
25422                  </li>
25423                  <li>
25424                    <span class="entry_type_enum_name">PRESET_CURVE</span>
25425                    <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
25426<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
25427<p>All color enhancement and tonemapping must be disabled,<wbr/> except
25428for applying the tonemapping curve specified by
25429<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
25430<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
25431                  </li>
25432                </ul>
25433
25434            </td> <!-- entry_type -->
25435
25436            <td class="entry_description">
25437              <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
25438            </td>
25439
25440            <td class="entry_units">
25441            </td>
25442
25443            <td class="entry_range">
25444              <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
25445            </td>
25446
25447            <td class="entry_tags">
25448            </td>
25449
25450          </tr>
25451          <tr class="entries_header">
25452            <th class="th_details" colspan="5">Details</th>
25453          </tr>
25454          <tr class="entry_cont">
25455            <td class="entry_details" colspan="5">
25456              <p>When switching to an application-defined contrast curve by setting
25457<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
25458per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
25459mapping from input high-bit-depth pixel value to the output
25460low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
25461and output may change depending on the camera pipeline,<wbr/> the values
25462are specified by normalized floating-point numbers.<wbr/></p>
25463<p>More-complex color mapping operations such as 3D color look-up
25464tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
25465transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25466CONTRAST_<wbr/>CURVE.<wbr/></p>
25467<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
25468emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
25469These values are always available,<wbr/> and as close as possible to the
25470actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
25471<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
25472provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
25473roughly the same.<wbr/></p>
25474            </td>
25475          </tr>
25476
25477
25478          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25479           <!-- end of entry -->
25480
25481
25482          <tr class="entry" id="dynamic_android.tonemap.gamma">
25483            <td class="entry_name
25484             " rowspan="3">
25485              android.<wbr/>tonemap.<wbr/>gamma
25486            </td>
25487            <td class="entry_type">
25488                <span class="entry_type_name">float</span>
25489
25490              <span class="entry_type_visibility"> [public]</span>
25491
25492
25493
25494
25495
25496
25497            </td> <!-- entry_type -->
25498
25499            <td class="entry_description">
25500              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25501GAMMA_<wbr/>VALUE</p>
25502            </td>
25503
25504            <td class="entry_units">
25505            </td>
25506
25507            <td class="entry_range">
25508            </td>
25509
25510            <td class="entry_tags">
25511            </td>
25512
25513          </tr>
25514          <tr class="entries_header">
25515            <th class="th_details" colspan="5">Details</th>
25516          </tr>
25517          <tr class="entry_cont">
25518            <td class="entry_details" colspan="5">
25519              <p>The tonemap curve will be defined the following formula:
25520* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
25521where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
25522pow is the power function and gamma is the gamma value specified by this
25523key.<wbr/></p>
25524<p>The same curve will be applied to all color channels.<wbr/> The camera device
25525may clip the input gamma value to its supported range.<wbr/> The actual applied
25526value will be returned in capture result.<wbr/></p>
25527<p>The valid range of gamma value varies on different devices,<wbr/> but values
25528within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
25529            </td>
25530          </tr>
25531
25532
25533          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25534           <!-- end of entry -->
25535
25536
25537          <tr class="entry" id="dynamic_android.tonemap.presetCurve">
25538            <td class="entry_name
25539             " rowspan="3">
25540              android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
25541            </td>
25542            <td class="entry_type">
25543                <span class="entry_type_name entry_type_name_enum">byte</span>
25544
25545              <span class="entry_type_visibility"> [public]</span>
25546
25547
25548
25549
25550
25551                <ul class="entry_type_enum">
25552                  <li>
25553                    <span class="entry_type_enum_name">SRGB</span>
25554                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
25555                  </li>
25556                  <li>
25557                    <span class="entry_type_enum_name">REC709</span>
25558                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
25559                  </li>
25560                </ul>
25561
25562            </td> <!-- entry_type -->
25563
25564            <td class="entry_description">
25565              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25566PRESET_<wbr/>CURVE</p>
25567            </td>
25568
25569            <td class="entry_units">
25570            </td>
25571
25572            <td class="entry_range">
25573            </td>
25574
25575            <td class="entry_tags">
25576            </td>
25577
25578          </tr>
25579          <tr class="entries_header">
25580            <th class="th_details" colspan="5">Details</th>
25581          </tr>
25582          <tr class="entry_cont">
25583            <td class="entry_details" colspan="5">
25584              <p>The tonemap curve will be defined by specified standard.<wbr/></p>
25585<p>sRGB (approximated by 16 control points):</p>
25586<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
25587<p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
25588<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
25589<p>Note that above figures show a 16 control points approximation of preset
25590curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
25591            </td>
25592          </tr>
25593
25594
25595          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25596           <!-- end of entry -->
25597
25598
25599
25600      <!-- end of kind -->
25601      </tbody>
25602
25603  <!-- end of section -->
25604  <tr><td colspan="6" id="section_led" class="section">led</td></tr>
25605
25606
25607      <tr><td colspan="6" class="kind">controls</td></tr>
25608
25609      <thead class="entries_header">
25610        <tr>
25611          <th class="th_name">Property Name</th>
25612          <th class="th_type">Type</th>
25613          <th class="th_description">Description</th>
25614          <th class="th_units">Units</th>
25615          <th class="th_range">Range</th>
25616          <th class="th_tags">Tags</th>
25617        </tr>
25618      </thead>
25619
25620      <tbody>
25621
25622
25623
25624
25625
25626
25627
25628
25629
25630
25631          <tr class="entry" id="controls_android.led.transmit">
25632            <td class="entry_name
25633             " rowspan="1">
25634              android.<wbr/>led.<wbr/>transmit
25635            </td>
25636            <td class="entry_type">
25637                <span class="entry_type_name entry_type_name_enum">byte</span>
25638
25639              <span class="entry_type_visibility"> [hidden as boolean]</span>
25640
25641
25642
25643
25644
25645                <ul class="entry_type_enum">
25646                  <li>
25647                    <span class="entry_type_enum_name">OFF</span>
25648                  </li>
25649                  <li>
25650                    <span class="entry_type_enum_name">ON</span>
25651                  </li>
25652                </ul>
25653
25654            </td> <!-- entry_type -->
25655
25656            <td class="entry_description">
25657              <p>This LED is nominally used to indicate to the user
25658that the camera is powered on and may be streaming images back to the
25659Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
25660disable this when video is processed locally and not transmitted to
25661any untrusted applications.<wbr/></p>
25662<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
25663transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
25664data is stored locally on the device.<wbr/></p>
25665<p>The LED <em>may</em> be off if a trusted application is using the data that
25666doesn't violate the above rules.<wbr/></p>
25667            </td>
25668
25669            <td class="entry_units">
25670            </td>
25671
25672            <td class="entry_range">
25673            </td>
25674
25675            <td class="entry_tags">
25676            </td>
25677
25678          </tr>
25679
25680
25681          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25682           <!-- end of entry -->
25683
25684
25685
25686      <!-- end of kind -->
25687      </tbody>
25688      <tr><td colspan="6" class="kind">dynamic</td></tr>
25689
25690      <thead class="entries_header">
25691        <tr>
25692          <th class="th_name">Property Name</th>
25693          <th class="th_type">Type</th>
25694          <th class="th_description">Description</th>
25695          <th class="th_units">Units</th>
25696          <th class="th_range">Range</th>
25697          <th class="th_tags">Tags</th>
25698        </tr>
25699      </thead>
25700
25701      <tbody>
25702
25703
25704
25705
25706
25707
25708
25709
25710
25711
25712          <tr class="entry" id="dynamic_android.led.transmit">
25713            <td class="entry_name
25714             " rowspan="1">
25715              android.<wbr/>led.<wbr/>transmit
25716            </td>
25717            <td class="entry_type">
25718                <span class="entry_type_name entry_type_name_enum">byte</span>
25719
25720              <span class="entry_type_visibility"> [hidden as boolean]</span>
25721
25722
25723
25724
25725
25726                <ul class="entry_type_enum">
25727                  <li>
25728                    <span class="entry_type_enum_name">OFF</span>
25729                  </li>
25730                  <li>
25731                    <span class="entry_type_enum_name">ON</span>
25732                  </li>
25733                </ul>
25734
25735            </td> <!-- entry_type -->
25736
25737            <td class="entry_description">
25738              <p>This LED is nominally used to indicate to the user
25739that the camera is powered on and may be streaming images back to the
25740Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
25741disable this when video is processed locally and not transmitted to
25742any untrusted applications.<wbr/></p>
25743<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
25744transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
25745data is stored locally on the device.<wbr/></p>
25746<p>The LED <em>may</em> be off if a trusted application is using the data that
25747doesn't violate the above rules.<wbr/></p>
25748            </td>
25749
25750            <td class="entry_units">
25751            </td>
25752
25753            <td class="entry_range">
25754            </td>
25755
25756            <td class="entry_tags">
25757            </td>
25758
25759          </tr>
25760
25761
25762          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25763           <!-- end of entry -->
25764
25765
25766
25767      <!-- end of kind -->
25768      </tbody>
25769      <tr><td colspan="6" class="kind">static</td></tr>
25770
25771      <thead class="entries_header">
25772        <tr>
25773          <th class="th_name">Property Name</th>
25774          <th class="th_type">Type</th>
25775          <th class="th_description">Description</th>
25776          <th class="th_units">Units</th>
25777          <th class="th_range">Range</th>
25778          <th class="th_tags">Tags</th>
25779        </tr>
25780      </thead>
25781
25782      <tbody>
25783
25784
25785
25786
25787
25788
25789
25790
25791
25792
25793          <tr class="entry" id="static_android.led.availableLeds">
25794            <td class="entry_name
25795             " rowspan="1">
25796              android.<wbr/>led.<wbr/>available<wbr/>Leds
25797            </td>
25798            <td class="entry_type">
25799                <span class="entry_type_name entry_type_name_enum">byte</span>
25800                <span class="entry_type_container">x</span>
25801
25802                <span class="entry_type_array">
25803                  n
25804                </span>
25805              <span class="entry_type_visibility"> [hidden]</span>
25806
25807
25808
25809
25810
25811                <ul class="entry_type_enum">
25812                  <li>
25813                    <span class="entry_type_enum_name">TRANSMIT</span>
25814                    <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>
25815                  </li>
25816                </ul>
25817
25818            </td> <!-- entry_type -->
25819
25820            <td class="entry_description">
25821              <p>A list of camera LEDs that are available on this system.<wbr/></p>
25822            </td>
25823
25824            <td class="entry_units">
25825            </td>
25826
25827            <td class="entry_range">
25828            </td>
25829
25830            <td class="entry_tags">
25831            </td>
25832
25833          </tr>
25834
25835
25836          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25837           <!-- end of entry -->
25838
25839
25840
25841      <!-- end of kind -->
25842      </tbody>
25843
25844  <!-- end of section -->
25845  <tr><td colspan="6" id="section_info" class="section">info</td></tr>
25846
25847
25848      <tr><td colspan="6" class="kind">static</td></tr>
25849
25850      <thead class="entries_header">
25851        <tr>
25852          <th class="th_name">Property Name</th>
25853          <th class="th_type">Type</th>
25854          <th class="th_description">Description</th>
25855          <th class="th_units">Units</th>
25856          <th class="th_range">Range</th>
25857          <th class="th_tags">Tags</th>
25858        </tr>
25859      </thead>
25860
25861      <tbody>
25862
25863
25864
25865
25866
25867
25868
25869
25870
25871
25872          <tr class="entry" id="static_android.info.supportedHardwareLevel">
25873            <td class="entry_name
25874             " rowspan="5">
25875              android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
25876            </td>
25877            <td class="entry_type">
25878                <span class="entry_type_name entry_type_name_enum">byte</span>
25879
25880              <span class="entry_type_visibility"> [public]</span>
25881
25882
25883              <span class="entry_type_hwlevel">[legacy] </span>
25884
25885
25886
25887                <ul class="entry_type_enum">
25888                  <li>
25889                    <span class="entry_type_enum_name">LIMITED</span>
25890                    <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or
25891better.<wbr/></p>
25892<p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the
25893<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
25894<p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic
25895support for color image capture.<wbr/> The only exception is that the device may
25896alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth
25897measurements and not color images.<wbr/></p>
25898<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>
25899to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before
25900capturing a high-quality still image.<wbr/></p>
25901<p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only
25902required to support full-automatic operation and post-processing (<code>OFF</code> is not
25903supported 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
25904<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p>
25905<p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and
25906can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span>
25907                  </li>
25908                  <li>
25909                    <span class="entry_type_enum_name">FULL</span>
25910                    <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p>
25911<p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the
25912<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
25913<p>A <code>FULL</code> device will support below capabilities:</p>
25914<ul>
25915<li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
25916  <code>BURST_<wbr/>CAPTURE</code>)</li>
25917<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>
25918<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>
25919<li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
25920  <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li>
25921<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>
25922<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>
25923</ul>
25924<p>Note:
25925Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
25926(<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level
2592723,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span>
25928                  </li>
25929                  <li>
25930                    <span class="entry_type_enum_name">LEGACY</span>
25931                    <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p>
25932<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>
25933documentation are supported.<wbr/></p>
25934<p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
25935post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/>
25936No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a
25937<code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
25938<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>
25939devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated
25940as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/>  This may
25941fire the flash for flash power metering during precapture,<wbr/> and then fire the flash
25942for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to
25943enable the flash.<wbr/></p></span>
25944                  </li>
25945                  <li>
25946                    <span class="entry_type_enum_name">3</span>
25947                    <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to
25948FULL-level capabilities.<wbr/></p>
25949<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
25950<code>LIMITED</code> tables in the <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a>
25951documentation are guaranteed to be supported.<wbr/></p>
25952<p>The following additional capabilities are guaranteed to be supported:</p>
25953<ul>
25954<li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
25955  <code>YUV_<wbr/>REPROCESSING</code>)</li>
25956<li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
25957  <code>RAW</code>)</li>
25958</ul></span>
25959                  </li>
25960                </ul>
25961
25962            </td> <!-- entry_type -->
25963
25964            <td class="entry_description">
25965              <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
25966            </td>
25967
25968            <td class="entry_units">
25969            </td>
25970
25971            <td class="entry_range">
25972            </td>
25973
25974            <td class="entry_tags">
25975            </td>
25976
25977          </tr>
25978          <tr class="entries_header">
25979            <th class="th_details" colspan="5">Details</th>
25980          </tr>
25981          <tr class="entry_cont">
25982            <td class="entry_details" colspan="5">
25983              <p>The supported hardware level is a high-level description of the camera device's
25984capabilities,<wbr/> summarizing several capabilities into one field.<wbr/>  Each level adds additional
25985features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/>
25986The ordering is <code>LEGACY &lt; LIMITED &lt; FULL &lt; LEVEL_<wbr/>3</code>.<wbr/></p>
25987<p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing
25988numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/>
25989the following code snippet can be used:</p>
25990<pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/>
25991boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) {
25992    int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL);
25993    if (deviceLevel == Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY) {
25994        return requiredLevel == deviceLevel;
25995    }
25996    //<wbr/> deviceLevel is not LEGACY,<wbr/> can use numerical sort
25997    return requiredLevel &lt;= deviceLevel;
25998}
25999</code></pre>
26000<p>At a high level,<wbr/> the levels are:</p>
26001<ul>
26002<li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older
26003  Android devices,<wbr/> and have very limited capabilities.<wbr/></li>
26004<li><code>LIMITED</code> devices represent the
26005  baseline feature set,<wbr/> and may also include additional capabilities that are
26006  subsets of <code>FULL</code>.<wbr/></li>
26007<li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and
26008  post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li>
26009<li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along
26010  with additional output stream configurations.<wbr/></li>
26011</ul>
26012<p>See the individual level enums for full descriptions of the supported capabilities.<wbr/>  The
26013<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a
26014finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or
26015ranges defined in individual <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> entries.<wbr/></p>
26016<p>Some features are not part of any particular hardware level or capability and must be
26017queried separately.<wbr/> These include:</p>
26018<ul>
26019<li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
26020<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>
26021<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>
26022<li>Optical or electrical image stabilization
26023  (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
26024   <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
26025</ul>
26026            </td>
26027          </tr>
26028
26029          <tr class="entries_header">
26030            <th class="th_details" colspan="5">HAL Implementation Details</th>
26031          </tr>
26032          <tr class="entry_cont">
26033            <td class="entry_details" colspan="5">
26034              <p>The camera 3 HAL device can implement one of three possible operational modes; LIMITED,<wbr/>
26035FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p>
26036<p>FULL support or better is expected from new higher-end devices.<wbr/> Limited
26037mode has hardware requirements roughly in line with those for a camera HAL device v1
26038implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict
26039superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p>
26040<p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
26041<p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in
26042the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on HALv1 devices,<wbr/> and is implemented
26043by the camera framework code.<wbr/></p>
26044            </td>
26045          </tr>
26046
26047          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26048           <!-- end of entry -->
26049
26050
26051
26052      <!-- end of kind -->
26053      </tbody>
26054
26055  <!-- end of section -->
26056  <tr><td colspan="6" id="section_blackLevel" class="section">blackLevel</td></tr>
26057
26058
26059      <tr><td colspan="6" class="kind">controls</td></tr>
26060
26061      <thead class="entries_header">
26062        <tr>
26063          <th class="th_name">Property Name</th>
26064          <th class="th_type">Type</th>
26065          <th class="th_description">Description</th>
26066          <th class="th_units">Units</th>
26067          <th class="th_range">Range</th>
26068          <th class="th_tags">Tags</th>
26069        </tr>
26070      </thead>
26071
26072      <tbody>
26073
26074
26075
26076
26077
26078
26079
26080
26081
26082
26083          <tr class="entry" id="controls_android.blackLevel.lock">
26084            <td class="entry_name
26085             " rowspan="5">
26086              android.<wbr/>black<wbr/>Level.<wbr/>lock
26087            </td>
26088            <td class="entry_type">
26089                <span class="entry_type_name entry_type_name_enum">byte</span>
26090
26091              <span class="entry_type_visibility"> [public as boolean]</span>
26092
26093
26094              <span class="entry_type_hwlevel">[full] </span>
26095
26096
26097
26098                <ul class="entry_type_enum">
26099                  <li>
26100                    <span class="entry_type_enum_name">OFF</span>
26101                  </li>
26102                  <li>
26103                    <span class="entry_type_enum_name">ON</span>
26104                  </li>
26105                </ul>
26106
26107            </td> <!-- entry_type -->
26108
26109            <td class="entry_description">
26110              <p>Whether black-level compensation is locked
26111to its current values,<wbr/> or is free to vary.<wbr/></p>
26112            </td>
26113
26114            <td class="entry_units">
26115            </td>
26116
26117            <td class="entry_range">
26118            </td>
26119
26120            <td class="entry_tags">
26121              <ul class="entry_tags">
26122                  <li><a href="#tag_HAL2">HAL2</a></li>
26123              </ul>
26124            </td>
26125
26126          </tr>
26127          <tr class="entries_header">
26128            <th class="th_details" colspan="5">Details</th>
26129          </tr>
26130          <tr class="entry_cont">
26131            <td class="entry_details" colspan="5">
26132              <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
26133compensation will not change until the lock is set to
26134<code>false</code> (OFF).<wbr/></p>
26135<p>Since changes to certain capture parameters (such as
26136exposure time) may require resetting of black level
26137compensation,<wbr/> the camera device must report whether setting
26138the black level lock was successful in the output result
26139metadata.<wbr/></p>
26140<p>For example,<wbr/> if a sequence of requests is as follows:</p>
26141<ul>
26142<li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
26143<li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
26144<li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
26145<li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
26146<li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
26147<li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
26148</ul>
26149<p>And the exposure change in Request 4 requires the camera
26150device to reset the black level offsets,<wbr/> then the output
26151result metadata is expected to be:</p>
26152<ul>
26153<li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
26154<li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
26155<li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
26156<li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
26157<li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
26158<li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
26159</ul>
26160<p>This indicates to the application that on frame 4,<wbr/> black
26161levels were reset due to exposure value changes,<wbr/> and pixel
26162values may not be consistent across captures.<wbr/></p>
26163<p>The camera device will maintain the lock to the extent
26164possible,<wbr/> only overriding the lock to OFF when changes to
26165other request parameters require a black level recalculation
26166or reset.<wbr/></p>
26167            </td>
26168          </tr>
26169
26170          <tr class="entries_header">
26171            <th class="th_details" colspan="5">HAL Implementation Details</th>
26172          </tr>
26173          <tr class="entry_cont">
26174            <td class="entry_details" colspan="5">
26175              <p>If for some reason black level locking is no longer possible
26176(for example,<wbr/> the analog gain has changed,<wbr/> which forces
26177black level offsets to be recalculated),<wbr/> then the HAL must
26178override this request (and it must report 'OFF' when this
26179does happen) until the next capture for which locking is
26180possible again.<wbr/></p>
26181            </td>
26182          </tr>
26183
26184          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26185           <!-- end of entry -->
26186
26187
26188
26189      <!-- end of kind -->
26190      </tbody>
26191      <tr><td colspan="6" class="kind">dynamic</td></tr>
26192
26193      <thead class="entries_header">
26194        <tr>
26195          <th class="th_name">Property Name</th>
26196          <th class="th_type">Type</th>
26197          <th class="th_description">Description</th>
26198          <th class="th_units">Units</th>
26199          <th class="th_range">Range</th>
26200          <th class="th_tags">Tags</th>
26201        </tr>
26202      </thead>
26203
26204      <tbody>
26205
26206
26207
26208
26209
26210
26211
26212
26213
26214
26215          <tr class="entry" id="dynamic_android.blackLevel.lock">
26216            <td class="entry_name
26217             " rowspan="5">
26218              android.<wbr/>black<wbr/>Level.<wbr/>lock
26219            </td>
26220            <td class="entry_type">
26221                <span class="entry_type_name entry_type_name_enum">byte</span>
26222
26223              <span class="entry_type_visibility"> [public as boolean]</span>
26224
26225
26226              <span class="entry_type_hwlevel">[full] </span>
26227
26228
26229
26230                <ul class="entry_type_enum">
26231                  <li>
26232                    <span class="entry_type_enum_name">OFF</span>
26233                  </li>
26234                  <li>
26235                    <span class="entry_type_enum_name">ON</span>
26236                  </li>
26237                </ul>
26238
26239            </td> <!-- entry_type -->
26240
26241            <td class="entry_description">
26242              <p>Whether black-level compensation is locked
26243to its current values,<wbr/> or is free to vary.<wbr/></p>
26244            </td>
26245
26246            <td class="entry_units">
26247            </td>
26248
26249            <td class="entry_range">
26250            </td>
26251
26252            <td class="entry_tags">
26253              <ul class="entry_tags">
26254                  <li><a href="#tag_HAL2">HAL2</a></li>
26255              </ul>
26256            </td>
26257
26258          </tr>
26259          <tr class="entries_header">
26260            <th class="th_details" colspan="5">Details</th>
26261          </tr>
26262          <tr class="entry_cont">
26263            <td class="entry_details" colspan="5">
26264              <p>Whether the black level offset was locked for this frame.<wbr/>  Should be
26265ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
26266a change in other capture settings forced the camera device to
26267perform a black level reset.<wbr/></p>
26268            </td>
26269          </tr>
26270
26271          <tr class="entries_header">
26272            <th class="th_details" colspan="5">HAL Implementation Details</th>
26273          </tr>
26274          <tr class="entry_cont">
26275            <td class="entry_details" colspan="5">
26276              <p>If for some reason black level locking is no longer possible
26277(for example,<wbr/> the analog gain has changed,<wbr/> which forces
26278black level offsets to be recalculated),<wbr/> then the HAL must
26279override this request (and it must report 'OFF' when this
26280does happen) until the next capture for which locking is
26281possible again.<wbr/></p>
26282            </td>
26283          </tr>
26284
26285          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26286           <!-- end of entry -->
26287
26288
26289
26290      <!-- end of kind -->
26291      </tbody>
26292
26293  <!-- end of section -->
26294  <tr><td colspan="6" id="section_sync" class="section">sync</td></tr>
26295
26296
26297      <tr><td colspan="6" class="kind">dynamic</td></tr>
26298
26299      <thead class="entries_header">
26300        <tr>
26301          <th class="th_name">Property Name</th>
26302          <th class="th_type">Type</th>
26303          <th class="th_description">Description</th>
26304          <th class="th_units">Units</th>
26305          <th class="th_range">Range</th>
26306          <th class="th_tags">Tags</th>
26307        </tr>
26308      </thead>
26309
26310      <tbody>
26311
26312
26313
26314
26315
26316
26317
26318
26319
26320
26321          <tr class="entry" id="dynamic_android.sync.frameNumber">
26322            <td class="entry_name
26323             " rowspan="5">
26324              android.<wbr/>sync.<wbr/>frame<wbr/>Number
26325            </td>
26326            <td class="entry_type">
26327                <span class="entry_type_name entry_type_name_enum">int64</span>
26328
26329              <span class="entry_type_visibility"> [ndk_public]</span>
26330
26331
26332              <span class="entry_type_hwlevel">[legacy] </span>
26333
26334
26335
26336                <ul class="entry_type_enum">
26337                  <li>
26338                    <span class="entry_type_enum_name">CONVERGING</span>
26339                    <span class="entry_type_enum_value">-1</span>
26340                    <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
26341<p>Synchronization is in progress,<wbr/> and reading metadata from this
26342result may include a mix of data that have taken effect since the
26343last synchronization time.<wbr/></p>
26344<p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
26345this value will update to the actual frame number frame number
26346the result is guaranteed to be synchronized to (as long as the
26347request settings remain constant).<wbr/></p></span>
26348                  </li>
26349                  <li>
26350                    <span class="entry_type_enum_name">UNKNOWN</span>
26351                    <span class="entry_type_enum_value">-2</span>
26352                    <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
26353<p>The result may have already converged,<wbr/> or it may be in
26354progress.<wbr/>  Reading from this result may include some mix
26355of settings from past requests.<wbr/></p>
26356<p>After a settings change,<wbr/> the new settings will eventually all
26357take effect for the output buffers and results.<wbr/> However,<wbr/> this
26358value will not change when that happens.<wbr/> Altering settings
26359rapidly may provide outcomes using mixes of settings from recent
26360requests.<wbr/></p>
26361<p>This value is intended primarily for backwards compatibility with
26362the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
26363                  </li>
26364                </ul>
26365
26366            </td> <!-- entry_type -->
26367
26368            <td class="entry_description">
26369              <p>The frame number corresponding to the last request
26370with which the output result (metadata + buffers) has been fully
26371synchronized.<wbr/></p>
26372            </td>
26373
26374            <td class="entry_units">
26375            </td>
26376
26377            <td class="entry_range">
26378              <p>Either a non-negative value corresponding to a
26379<code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
26380            </td>
26381
26382            <td class="entry_tags">
26383              <ul class="entry_tags">
26384                  <li><a href="#tag_V1">V1</a></li>
26385              </ul>
26386            </td>
26387
26388          </tr>
26389          <tr class="entries_header">
26390            <th class="th_details" colspan="5">Details</th>
26391          </tr>
26392          <tr class="entry_cont">
26393            <td class="entry_details" colspan="5">
26394              <p>When a request is submitted to the camera device,<wbr/> there is usually a
26395delay of several frames before the controls get applied.<wbr/> A camera
26396device may either choose to account for this delay by implementing a
26397pipeline and carefully submit well-timed atomic control updates,<wbr/> or
26398it may start streaming control changes that span over several frame
26399boundaries.<wbr/></p>
26400<p>In the latter case,<wbr/> whenever a request's settings change relative to
26401the previous submitted request,<wbr/> the full set of changes may take
26402multiple frame durations to fully take effect.<wbr/> Some settings may
26403take effect sooner (in less frame durations) than others.<wbr/></p>
26404<p>While a set of control changes are being propagated,<wbr/> this value
26405will be CONVERGING.<wbr/></p>
26406<p>Once it is fully known that a set of control changes have been
26407finished propagating,<wbr/> and the resulting updated control settings
26408have been read back by the camera device,<wbr/> this value will be set
26409to a non-negative frame number (corresponding to the request to
26410which the results have synchronized to).<wbr/></p>
26411<p>Older camera device implementations may not have a way to detect
26412when all camera controls have been applied,<wbr/> and will always set this
26413value to UNKNOWN.<wbr/></p>
26414<p>FULL capability devices will always have this value set to the
26415frame number of the request corresponding to this result.<wbr/></p>
26416<p><em>Further details</em>:</p>
26417<ul>
26418<li>Whenever a request differs from the last request,<wbr/> any future
26419results not yet returned may have this value set to CONVERGING (this
26420could include any in-progress captures not yet returned by the camera
26421device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
26422<li>Submitting a series of multiple requests that differ from the
26423previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
26424moves the new synchronization frame to the last non-repeating
26425request (using the smallest frame number from the contiguous list of
26426repeating requests).<wbr/></li>
26427<li>Submitting the same request repeatedly will not change this value
26428to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
26429<li>When this value changes to non-negative,<wbr/> that means that all of the
26430metadata controls from the request have been applied,<wbr/> all of the
26431metadata controls from the camera device have been read to the
26432updated values (into the result),<wbr/> and all of the graphics buffers
26433corresponding to this result are also synchronized to the request.<wbr/></li>
26434</ul>
26435<p><em>Pipeline considerations</em>:</p>
26436<p>Submitting a request with updated controls relative to the previously
26437submitted requests may also invalidate the synchronization state
26438of all the results corresponding to currently in-flight requests.<wbr/></p>
26439<p>In other words,<wbr/> results for this current request and up to
26440<a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
26441<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
26442            </td>
26443          </tr>
26444
26445          <tr class="entries_header">
26446            <th class="th_details" colspan="5">HAL Implementation Details</th>
26447          </tr>
26448          <tr class="entry_cont">
26449            <td class="entry_details" colspan="5">
26450              <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
26451is also UNKNOWN.<wbr/></p>
26452<p>FULL capability devices should simply set this value to the
26453<code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
26454            </td>
26455          </tr>
26456
26457          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26458           <!-- end of entry -->
26459
26460
26461
26462      <!-- end of kind -->
26463      </tbody>
26464      <tr><td colspan="6" class="kind">static</td></tr>
26465
26466      <thead class="entries_header">
26467        <tr>
26468          <th class="th_name">Property Name</th>
26469          <th class="th_type">Type</th>
26470          <th class="th_description">Description</th>
26471          <th class="th_units">Units</th>
26472          <th class="th_range">Range</th>
26473          <th class="th_tags">Tags</th>
26474        </tr>
26475      </thead>
26476
26477      <tbody>
26478
26479
26480
26481
26482
26483
26484
26485
26486
26487
26488          <tr class="entry" id="static_android.sync.maxLatency">
26489            <td class="entry_name
26490             " rowspan="5">
26491              android.<wbr/>sync.<wbr/>max<wbr/>Latency
26492            </td>
26493            <td class="entry_type">
26494                <span class="entry_type_name entry_type_name_enum">int32</span>
26495
26496              <span class="entry_type_visibility"> [public]</span>
26497
26498
26499              <span class="entry_type_hwlevel">[legacy] </span>
26500
26501
26502
26503                <ul class="entry_type_enum">
26504                  <li>
26505                    <span class="entry_type_enum_name">PER_FRAME_CONTROL</span>
26506                    <span class="entry_type_enum_value">0</span>
26507                    <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
26508<p>Changing controls over multiple requests one after another will
26509produce results that have those controls applied atomically
26510each frame.<wbr/></p>
26511<p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
26512                  </li>
26513                  <li>
26514                    <span class="entry_type_enum_name">UNKNOWN</span>
26515                    <span class="entry_type_enum_value">-1</span>
26516                    <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
26517of the past requests applied to the camera settings.<wbr/></p>
26518<p>By submitting a series of identical requests,<wbr/> the camera device
26519will eventually have the camera settings applied,<wbr/> but it is
26520unknown when that exact point will be.<wbr/></p>
26521<p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
26522                  </li>
26523                </ul>
26524
26525            </td> <!-- entry_type -->
26526
26527            <td class="entry_description">
26528              <p>The maximum number of frames that can occur after a request
26529(different than the previous) has been submitted,<wbr/> and before the
26530result's state becomes synchronized.<wbr/></p>
26531            </td>
26532
26533            <td class="entry_units">
26534              Frame counts
26535            </td>
26536
26537            <td class="entry_range">
26538              <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
26539            </td>
26540
26541            <td class="entry_tags">
26542              <ul class="entry_tags">
26543                  <li><a href="#tag_V1">V1</a></li>
26544              </ul>
26545            </td>
26546
26547          </tr>
26548          <tr class="entries_header">
26549            <th class="th_details" colspan="5">Details</th>
26550          </tr>
26551          <tr class="entry_cont">
26552            <td class="entry_details" colspan="5">
26553              <p>This defines the maximum distance (in number of metadata results),<wbr/>
26554between the frame number of the request that has new controls to apply
26555and the frame number of the result that has all the controls applied.<wbr/></p>
26556<p>In other words this acts as an upper boundary for how many frames
26557must occur before the camera device knows for a fact that the new
26558submitted camera settings have been applied in outgoing frames.<wbr/></p>
26559            </td>
26560          </tr>
26561
26562          <tr class="entries_header">
26563            <th class="th_details" colspan="5">HAL Implementation Details</th>
26564          </tr>
26565          <tr class="entry_cont">
26566            <td class="entry_details" colspan="5">
26567              <p>For example if maxLatency was 2,<wbr/></p>
26568<pre><code>initial request = X (repeating)
26569request1 = X
26570request2 = Y
26571request3 = Y
26572request4 = Y
26573
26574where requestN has frameNumber N,<wbr/> and the first of the repeating
26575initial request's has frameNumber F (and F &lt; 1).<wbr/>
26576
26577initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
26578result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
26579result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
26580result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
26581result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
26582
26583where resultN has frameNumber N.<wbr/>
26584</code></pre>
26585<p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
26586<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
26587<code>4 - 2 = 2</code>.<wbr/></p>
26588<p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
26589<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
26590<code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p>
26591<p>LIMITED devices are strongly encouraged to use a non-negative
26592value.<wbr/> If UNKNOWN is used here then app developers do not have a way
26593to know when sensor settings have been applied.<wbr/></p>
26594            </td>
26595          </tr>
26596
26597          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26598           <!-- end of entry -->
26599
26600
26601
26602      <!-- end of kind -->
26603      </tbody>
26604
26605  <!-- end of section -->
26606  <tr><td colspan="6" id="section_reprocess" class="section">reprocess</td></tr>
26607
26608
26609      <tr><td colspan="6" class="kind">controls</td></tr>
26610
26611      <thead class="entries_header">
26612        <tr>
26613          <th class="th_name">Property Name</th>
26614          <th class="th_type">Type</th>
26615          <th class="th_description">Description</th>
26616          <th class="th_units">Units</th>
26617          <th class="th_range">Range</th>
26618          <th class="th_tags">Tags</th>
26619        </tr>
26620      </thead>
26621
26622      <tbody>
26623
26624
26625
26626
26627
26628
26629
26630
26631
26632
26633          <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
26634            <td class="entry_name
26635             " rowspan="3">
26636              android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
26637            </td>
26638            <td class="entry_type">
26639                <span class="entry_type_name">float</span>
26640
26641              <span class="entry_type_visibility"> [java_public]</span>
26642
26643
26644              <span class="entry_type_hwlevel">[limited] </span>
26645
26646
26647
26648
26649            </td> <!-- entry_type -->
26650
26651            <td class="entry_description">
26652              <p>The amount of exposure time increase factor applied to the original output
26653frame by the application processing before sending for reprocessing.<wbr/></p>
26654            </td>
26655
26656            <td class="entry_units">
26657              Relative exposure time increase factor.<wbr/>
26658            </td>
26659
26660            <td class="entry_range">
26661              <p>&gt;= 1.<wbr/>0</p>
26662            </td>
26663
26664            <td class="entry_tags">
26665              <ul class="entry_tags">
26666                  <li><a href="#tag_REPROC">REPROC</a></li>
26667              </ul>
26668            </td>
26669
26670          </tr>
26671          <tr class="entries_header">
26672            <th class="th_details" colspan="5">Details</th>
26673          </tr>
26674          <tr class="entry_cont">
26675            <td class="entry_details" colspan="5">
26676              <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
26677capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
26678<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
26679output frames to effectively reduce the noise to the same level as a frame that was
26680captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
26681images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
26682the camera device is that the amount of noise in the image would be approximately what
26683would be expected if the original capture parameters had been a sensitivity of
26684S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
26685than S and T respectively.<wbr/> If the captured images were processed by the application
26686before being sent for reprocessing,<wbr/> then the application may have used image processing
26687algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
26688application-processed images (input images).<wbr/> By using the effectiveExposureFactor
26689control,<wbr/> the application can communicate to the camera device the actual noise level
26690improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
26691device can select appropriate noise reduction and edge enhancement parameters to avoid
26692excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
26693enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
26694<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
26695multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
26696fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
26697square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
26698adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
26699produce the best quality images.<wbr/></p>
26700<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
26701buffer in a way that affects its effective exposure time.<wbr/></p>
26702<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
26703reduction 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/>
26704Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
26705<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
26706            </td>
26707          </tr>
26708
26709
26710          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26711           <!-- end of entry -->
26712
26713
26714
26715      <!-- end of kind -->
26716      </tbody>
26717      <tr><td colspan="6" class="kind">dynamic</td></tr>
26718
26719      <thead class="entries_header">
26720        <tr>
26721          <th class="th_name">Property Name</th>
26722          <th class="th_type">Type</th>
26723          <th class="th_description">Description</th>
26724          <th class="th_units">Units</th>
26725          <th class="th_range">Range</th>
26726          <th class="th_tags">Tags</th>
26727        </tr>
26728      </thead>
26729
26730      <tbody>
26731
26732
26733
26734
26735
26736
26737
26738
26739
26740
26741          <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
26742            <td class="entry_name
26743             " rowspan="3">
26744              android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
26745            </td>
26746            <td class="entry_type">
26747                <span class="entry_type_name">float</span>
26748
26749              <span class="entry_type_visibility"> [java_public]</span>
26750
26751
26752              <span class="entry_type_hwlevel">[limited] </span>
26753
26754
26755
26756
26757            </td> <!-- entry_type -->
26758
26759            <td class="entry_description">
26760              <p>The amount of exposure time increase factor applied to the original output
26761frame by the application processing before sending for reprocessing.<wbr/></p>
26762            </td>
26763
26764            <td class="entry_units">
26765              Relative exposure time increase factor.<wbr/>
26766            </td>
26767
26768            <td class="entry_range">
26769              <p>&gt;= 1.<wbr/>0</p>
26770            </td>
26771
26772            <td class="entry_tags">
26773              <ul class="entry_tags">
26774                  <li><a href="#tag_REPROC">REPROC</a></li>
26775              </ul>
26776            </td>
26777
26778          </tr>
26779          <tr class="entries_header">
26780            <th class="th_details" colspan="5">Details</th>
26781          </tr>
26782          <tr class="entry_cont">
26783            <td class="entry_details" colspan="5">
26784              <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
26785capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
26786<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
26787output frames to effectively reduce the noise to the same level as a frame that was
26788captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
26789images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
26790the camera device is that the amount of noise in the image would be approximately what
26791would be expected if the original capture parameters had been a sensitivity of
26792S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
26793than S and T respectively.<wbr/> If the captured images were processed by the application
26794before being sent for reprocessing,<wbr/> then the application may have used image processing
26795algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
26796application-processed images (input images).<wbr/> By using the effectiveExposureFactor
26797control,<wbr/> the application can communicate to the camera device the actual noise level
26798improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
26799device can select appropriate noise reduction and edge enhancement parameters to avoid
26800excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
26801enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
26802<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
26803multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
26804fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
26805square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
26806adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
26807produce the best quality images.<wbr/></p>
26808<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
26809buffer in a way that affects its effective exposure time.<wbr/></p>
26810<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
26811reduction 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/>
26812Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
26813<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
26814            </td>
26815          </tr>
26816
26817
26818          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26819           <!-- end of entry -->
26820
26821
26822
26823      <!-- end of kind -->
26824      </tbody>
26825      <tr><td colspan="6" class="kind">static</td></tr>
26826
26827      <thead class="entries_header">
26828        <tr>
26829          <th class="th_name">Property Name</th>
26830          <th class="th_type">Type</th>
26831          <th class="th_description">Description</th>
26832          <th class="th_units">Units</th>
26833          <th class="th_range">Range</th>
26834          <th class="th_tags">Tags</th>
26835        </tr>
26836      </thead>
26837
26838      <tbody>
26839
26840
26841
26842
26843
26844
26845
26846
26847
26848
26849          <tr class="entry" id="static_android.reprocess.maxCaptureStall">
26850            <td class="entry_name
26851             " rowspan="3">
26852              android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
26853            </td>
26854            <td class="entry_type">
26855                <span class="entry_type_name">int32</span>
26856
26857              <span class="entry_type_visibility"> [java_public]</span>
26858
26859
26860              <span class="entry_type_hwlevel">[limited] </span>
26861
26862
26863
26864
26865            </td> <!-- entry_type -->
26866
26867            <td class="entry_description">
26868              <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
26869reprocess capture request.<wbr/></p>
26870            </td>
26871
26872            <td class="entry_units">
26873              Number of frames.<wbr/>
26874            </td>
26875
26876            <td class="entry_range">
26877              <p>&lt;= 4</p>
26878            </td>
26879
26880            <td class="entry_tags">
26881              <ul class="entry_tags">
26882                  <li><a href="#tag_REPROC">REPROC</a></li>
26883              </ul>
26884            </td>
26885
26886          </tr>
26887          <tr class="entries_header">
26888            <th class="th_details" colspan="5">Details</th>
26889          </tr>
26890          <tr class="entry_cont">
26891            <td class="entry_details" colspan="5">
26892              <p>The key describes the maximal interference that one reprocess (input) request
26893can introduce to the camera simultaneous streaming of regular (output) capture
26894requests,<wbr/> including repeating requests.<wbr/></p>
26895<p>When a reprocessing capture request is submitted while a camera output repeating request
26896(e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
26897pipeline for at least one frame duration so that the camera device is unable to process
26898the following capture request in time for the next sensor start of exposure boundary.<wbr/>
26899When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
26900duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
26901glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
26902the worst-case number of frame stall introduced by one reprocess request with any kind of
26903formats/<wbr/>sizes combination.<wbr/></p>
26904<p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
26905ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
26906<p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
26907i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
26908YUV_<wbr/>REPROCESSING).<wbr/></p>
26909            </td>
26910          </tr>
26911
26912
26913          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26914           <!-- end of entry -->
26915
26916
26917
26918      <!-- end of kind -->
26919      </tbody>
26920
26921  <!-- end of section -->
26922  <tr><td colspan="6" id="section_depth" class="section">depth</td></tr>
26923
26924
26925      <tr><td colspan="6" class="kind">static</td></tr>
26926
26927      <thead class="entries_header">
26928        <tr>
26929          <th class="th_name">Property Name</th>
26930          <th class="th_type">Type</th>
26931          <th class="th_description">Description</th>
26932          <th class="th_units">Units</th>
26933          <th class="th_range">Range</th>
26934          <th class="th_tags">Tags</th>
26935        </tr>
26936      </thead>
26937
26938      <tbody>
26939
26940
26941
26942
26943
26944
26945
26946
26947
26948
26949          <tr class="entry" id="static_android.depth.maxDepthSamples">
26950            <td class="entry_name
26951             " rowspan="3">
26952              android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
26953            </td>
26954            <td class="entry_type">
26955                <span class="entry_type_name">int32</span>
26956
26957              <span class="entry_type_visibility"> [system]</span>
26958
26959
26960              <span class="entry_type_hwlevel">[limited] </span>
26961
26962
26963
26964
26965            </td> <!-- entry_type -->
26966
26967            <td class="entry_description">
26968              <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
26969            </td>
26970
26971            <td class="entry_units">
26972            </td>
26973
26974            <td class="entry_range">
26975            </td>
26976
26977            <td class="entry_tags">
26978              <ul class="entry_tags">
26979                  <li><a href="#tag_DEPTH">DEPTH</a></li>
26980              </ul>
26981            </td>
26982
26983          </tr>
26984          <tr class="entries_header">
26985            <th class="th_details" colspan="5">Details</th>
26986          </tr>
26987          <tr class="entry_cont">
26988            <td class="entry_details" colspan="5">
26989              <p>If a camera device supports outputting depth range data in the form of a depth point
26990cloud (<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
26991number of points an output buffer may contain.<wbr/></p>
26992<p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
26993If output in the depth point cloud format is not supported,<wbr/> this entry will
26994not be defined.<wbr/></p>
26995            </td>
26996          </tr>
26997
26998
26999          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
27000           <!-- end of entry -->
27001
27002
27003          <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
27004            <td class="entry_name
27005             " rowspan="3">
27006              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
27007            </td>
27008            <td class="entry_type">
27009                <span class="entry_type_name entry_type_name_enum">int32</span>
27010                <span class="entry_type_container">x</span>
27011
27012                <span class="entry_type_array">
27013                  n x 4
27014                </span>
27015              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
27016
27017
27018              <span class="entry_type_hwlevel">[limited] </span>
27019
27020
27021
27022                <ul class="entry_type_enum">
27023                  <li>
27024                    <span class="entry_type_enum_name">OUTPUT</span>
27025                  </li>
27026                  <li>
27027                    <span class="entry_type_enum_name">INPUT</span>
27028                  </li>
27029                </ul>
27030
27031            </td> <!-- entry_type -->
27032
27033            <td class="entry_description">
27034              <p>The available depth dataspace stream
27035configurations that this camera device supports
27036(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
27037            </td>
27038
27039            <td class="entry_units">
27040            </td>
27041
27042            <td class="entry_range">
27043            </td>
27044
27045            <td class="entry_tags">
27046              <ul class="entry_tags">
27047                  <li><a href="#tag_DEPTH">DEPTH</a></li>
27048              </ul>
27049            </td>
27050
27051          </tr>
27052          <tr class="entries_header">
27053            <th class="th_details" colspan="5">Details</th>
27054          </tr>
27055          <tr class="entry_cont">
27056            <td class="entry_details" colspan="5">
27057              <p>These are output stream configurations for use with
27058dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
27059listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
27060<p>Only devices that support depth output for at least
27061the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
27062this entry.<wbr/></p>
27063<p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
27064sparse depth point cloud must report a single entry for
27065the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
27066<a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
27067the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
27068            </td>
27069          </tr>
27070
27071
27072          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
27073           <!-- end of entry -->
27074
27075
27076          <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
27077            <td class="entry_name
27078             " rowspan="3">
27079              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
27080            </td>
27081            <td class="entry_type">
27082                <span class="entry_type_name">int64</span>
27083                <span class="entry_type_container">x</span>
27084
27085                <span class="entry_type_array">
27086                  4 x n
27087                </span>
27088              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
27089
27090
27091              <span class="entry_type_hwlevel">[limited] </span>
27092
27093
27094
27095
27096            </td> <!-- entry_type -->
27097
27098            <td class="entry_description">
27099              <p>This lists the minimum frame duration for each
27100format/<wbr/>size combination for depth output formats.<wbr/></p>
27101            </td>
27102
27103            <td class="entry_units">
27104              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
27105            </td>
27106
27107            <td class="entry_range">
27108            </td>
27109
27110            <td class="entry_tags">
27111              <ul class="entry_tags">
27112                  <li><a href="#tag_DEPTH">DEPTH</a></li>
27113              </ul>
27114            </td>
27115
27116          </tr>
27117          <tr class="entries_header">
27118            <th class="th_details" colspan="5">Details</th>
27119          </tr>
27120          <tr class="entry_cont">
27121            <td class="entry_details" colspan="5">
27122              <p>This should correspond to the frame duration when only that
27123stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
27124set to either OFF or FAST.<wbr/></p>
27125<p>When multiple streams are used in a request,<wbr/> the minimum frame
27126duration will be max(individual stream min durations).<wbr/></p>
27127<p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
27128is the same regardless of whether the stream is input or output.<wbr/></p>
27129<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
27130<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
27131calculating the max frame rate.<wbr/></p>
27132<p>(Keep in sync with <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p>
27133            </td>
27134          </tr>
27135
27136
27137          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
27138           <!-- end of entry -->
27139
27140
27141          <tr class="entry" id="static_android.depth.availableDepthStallDurations">
27142            <td class="entry_name
27143             " rowspan="3">
27144              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
27145            </td>
27146            <td class="entry_type">
27147                <span class="entry_type_name">int64</span>
27148                <span class="entry_type_container">x</span>
27149
27150                <span class="entry_type_array">
27151                  4 x n
27152                </span>
27153              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
27154
27155
27156              <span class="entry_type_hwlevel">[limited] </span>
27157
27158
27159
27160
27161            </td> <!-- entry_type -->
27162
27163            <td class="entry_description">
27164              <p>This lists the maximum stall duration for each
27165output format/<wbr/>size combination for depth streams.<wbr/></p>
27166            </td>
27167
27168            <td class="entry_units">
27169              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
27170            </td>
27171
27172            <td class="entry_range">
27173            </td>
27174
27175            <td class="entry_tags">
27176              <ul class="entry_tags">
27177                  <li><a href="#tag_DEPTH">DEPTH</a></li>
27178              </ul>
27179            </td>
27180
27181          </tr>
27182          <tr class="entries_header">
27183            <th class="th_details" colspan="5">Details</th>
27184          </tr>
27185          <tr class="entry_cont">
27186            <td class="entry_details" colspan="5">
27187              <p>A stall duration is how much extra time would get added
27188to the normal minimum frame duration for a repeating request
27189that has streams with non-zero stall.<wbr/></p>
27190<p>This functions similarly to
27191<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
27192streams.<wbr/></p>
27193<p>All depth output stream formats may have a nonzero stall
27194duration.<wbr/></p>
27195            </td>
27196          </tr>
27197
27198
27199          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
27200           <!-- end of entry -->
27201
27202
27203          <tr class="entry" id="static_android.depth.depthIsExclusive">
27204            <td class="entry_name
27205             " rowspan="3">
27206              android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
27207            </td>
27208            <td class="entry_type">
27209                <span class="entry_type_name entry_type_name_enum">byte</span>
27210
27211              <span class="entry_type_visibility"> [public as boolean]</span>
27212
27213
27214              <span class="entry_type_hwlevel">[limited] </span>
27215
27216
27217
27218                <ul class="entry_type_enum">
27219                  <li>
27220                    <span class="entry_type_enum_name">FALSE</span>
27221                  </li>
27222                  <li>
27223                    <span class="entry_type_enum_name">TRUE</span>
27224                  </li>
27225                </ul>
27226
27227            </td> <!-- entry_type -->
27228
27229            <td class="entry_description">
27230              <p>Indicates whether a capture request may target both a
27231DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
27232YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
27233            </td>
27234
27235            <td class="entry_units">
27236            </td>
27237
27238            <td class="entry_range">
27239            </td>
27240
27241            <td class="entry_tags">
27242            </td>
27243
27244          </tr>
27245          <tr class="entries_header">
27246            <th class="th_details" colspan="5">Details</th>
27247          </tr>
27248          <tr class="entry_cont">
27249            <td class="entry_details" colspan="5">
27250              <p>If TRUE,<wbr/> including both depth and color outputs in a single
27251capture request is not supported.<wbr/> An application must interleave color
27252and depth requests.<wbr/>  If FALSE,<wbr/> a single request can target both types
27253of output.<wbr/></p>
27254<p>Typically,<wbr/> this restriction exists on camera devices that
27255need to emit a specific pattern or wavelength of light to
27256measure depth values,<wbr/> which causes the color image to be
27257corrupted during depth measurement.<wbr/></p>
27258            </td>
27259          </tr>
27260
27261
27262          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
27263           <!-- end of entry -->
27264
27265
27266
27267      <!-- end of kind -->
27268      </tbody>
27269
27270  <!-- end of section -->
27271<!-- </namespace> -->
27272  </table>
27273
27274  <div class="tags" id="tag_index">
27275    <h2>Tags</h2>
27276    <ul>
27277      <li id="tag_BC">BC -
27278        Needed for backwards compatibility with old Java API
27279
27280        <ul class="tags_entries">
27281          <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
27282          <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
27283          <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
27284          <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
27285          <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
27286          <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
27287          <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
27288          <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
27289          <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
27290          <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
27291          <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
27292          <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
27293          <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
27294          <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
27295          <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
27296          <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
27297          <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
27298          <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
27299          <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
27300          <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
27301          <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
27302          <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
27303          <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
27304          <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
27305          <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
27306          <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
27307          <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
27308          <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
27309          <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
27310          <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
27311          <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
27312          <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
27313          <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
27314          <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
27315          <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
27316          <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
27317          <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
27318          <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
27319          <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
27320          <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
27321          <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
27322          <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
27323          <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
27324          <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
27325          <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
27326          <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
27327          <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
27328          <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
27329          <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
27330          <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
27331          <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
27332          <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
27333          <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
27334          <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
27335          <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
27336          <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
27337          <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
27338          <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
27339          <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
27340          <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
27341          <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
27342          <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
27343          <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
27344          <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
27345          <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
27346          <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
27347          <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
27348        </ul>
27349      </li> <!-- tag_BC -->
27350      <li id="tag_V1">V1 -
27351        New features for first camera 2 release (API1)
27352
27353        <ul class="tags_entries">
27354          <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
27355          <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
27356          <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
27357          <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
27358          <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
27359          <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
27360          <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
27361          <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
27362          <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
27363          <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
27364          <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
27365          <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
27366          <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
27367          <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
27368          <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
27369          <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
27370          <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
27371          <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
27372          <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
27373          <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
27374          <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
27375          <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
27376          <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
27377          <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
27378          <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
27379          <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
27380          <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
27381          <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
27382          <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
27383          <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
27384          <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
27385          <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
27386          <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
27387          <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
27388          <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
27389          <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
27390          <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
27391          <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
27392          <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
27393          <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
27394          <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
27395          <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
27396          <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
27397          <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
27398          <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
27399        </ul>
27400      </li> <!-- tag_V1 -->
27401      <li id="tag_RAW">RAW -
27402        Needed for useful RAW image processing and DNG file support
27403
27404        <ul class="tags_entries">
27405          <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
27406          <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
27407          <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
27408          <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
27409          <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
27410          <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
27411          <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
27412          <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
27413          <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
27414          <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
27415          <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
27416          <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
27417          <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
27418          <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
27419          <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
27420          <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
27421          <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
27422          <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
27423          <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
27424          <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
27425          <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
27426          <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
27427          <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li>
27428          <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li>
27429          <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
27430          <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
27431          <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
27432          <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
27433          <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
27434        </ul>
27435      </li> <!-- tag_RAW -->
27436      <li id="tag_HAL2">HAL2 -
27437        Entry is only used by camera device HAL 2.x
27438
27439        <ul class="tags_entries">
27440          <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
27441          <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
27442          <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
27443          <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
27444          <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
27445        </ul>
27446      </li> <!-- tag_HAL2 -->
27447      <li id="tag_FULL">FULL -
27448        Entry is required for full hardware level devices, and optional for other hardware levels
27449
27450        <ul class="tags_entries">
27451          <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
27452        </ul>
27453      </li> <!-- tag_FULL -->
27454      <li id="tag_DEPTH">DEPTH -
27455        Entry is required for the depth capability.
27456
27457        <ul class="tags_entries">
27458          <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
27459          <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
27460          <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
27461          <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
27462          <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
27463          <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
27464          <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
27465          <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
27466        </ul>
27467      </li> <!-- tag_DEPTH -->
27468      <li id="tag_REPROC">REPROC -
27469        Entry is required for the YUV or PRIVATE reprocessing capability.
27470
27471        <ul class="tags_entries">
27472          <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
27473          <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
27474          <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
27475          <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
27476          <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
27477          <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
27478          <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
27479          <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
27480          <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
27481          <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
27482        </ul>
27483      </li> <!-- tag_REPROC -->
27484      <li id="tag_FUTURE">FUTURE -
27485        Entry is  under-specified and is not required for now. This is for book-keeping purpose,
27486        do not implement or use it, it may be revised for future.
27487
27488        <ul class="tags_entries">
27489          <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
27490          <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
27491          <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
27492          <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
27493          <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
27494          <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
27495          <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
27496          <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
27497          <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
27498          <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
27499          <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
27500          <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
27501          <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
27502          <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
27503          <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
27504          <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
27505          <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
27506          <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
27507          <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
27508          <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
27509          <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
27510        </ul>
27511      </li> <!-- tag_FUTURE -->
27512    </ul>
27513  </div>
27514
27515  [ <a href="#">top</a> ]
27516
27517</body>
27518</html>
27519