docs.html revision 30bf75b88a25a49fdd388fc3c5a77ecbdede2e24
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.2 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          </ul>
192        </li>
193        <li>
194          <span class="toc_kind_header">static</span>
195          <ul class="toc_section">
196            <li
197            ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li>
198            <li
199            ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li>
200            <li
201            ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li>
202            <li
203            ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li>
204            <li
205            ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li>
206            <li
207            ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li>
208            <li
209            ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li>
210            <li
211            ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li>
212            <li
213            ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li>
214            <li
215            ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li>
216            <li
217            ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li>
218            <li
219            ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li>
220            <li
221            ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li>
222            <li
223            ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li>
224            <li
225            ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li>
226            <li
227            ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li>
228            <li
229            ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li>
230            <li
231            ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li>
232            <li
233            ><a href="#static_android.control.availableModes">android.control.availableModes</a></li>
234          </ul>
235        </li>
236        <li>
237          <span class="toc_kind_header">dynamic</span>
238          <ul class="toc_section">
239            <li
240                class="toc_deprecated"
241            ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li>
242            <li
243            ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
244            <li
245            ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
246            <li
247            ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li>
248            <li
249            ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li>
250            <li
251            ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li>
252            <li
253            ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
254            <li
255            ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
256            <li
257            ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li>
258            <li
259            ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li>
260            <li
261            ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li>
262            <li
263            ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li>
264            <li
265            ><a href="#dynamic_android.control.afState">android.control.afState</a></li>
266            <li
267                class="toc_deprecated"
268            ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li>
269            <li
270            ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li>
271            <li
272            ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li>
273            <li
274            ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li>
275            <li
276            ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li>
277            <li
278            ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li>
279            <li
280            ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li>
281            <li
282            ><a href="#dynamic_android.control.mode">android.control.mode</a></li>
283            <li
284            ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li>
285            <li
286            ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
287          </ul>
288        </li>
289      </ul> <!-- toc_section -->
290    </li>
291    <li>
292      <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span>
293      <ul class="toc_section">
294        <li>
295          <span class="toc_kind_header">controls</span>
296          <ul class="toc_section">
297            <li
298            ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li>
299          </ul>
300        </li>
301      </ul> <!-- toc_section -->
302    </li>
303    <li>
304      <span class="toc_section_header"><a href="#section_edge">edge</a></span>
305      <ul class="toc_section">
306        <li>
307          <span class="toc_kind_header">controls</span>
308          <ul class="toc_section">
309            <li
310            ><a href="#controls_android.edge.mode">android.edge.mode</a></li>
311            <li
312            ><a href="#controls_android.edge.strength">android.edge.strength</a></li>
313          </ul>
314        </li>
315        <li>
316          <span class="toc_kind_header">static</span>
317          <ul class="toc_section">
318            <li
319            ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li>
320          </ul>
321        </li>
322        <li>
323          <span class="toc_kind_header">dynamic</span>
324          <ul class="toc_section">
325            <li
326            ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li>
327          </ul>
328        </li>
329      </ul> <!-- toc_section -->
330    </li>
331    <li>
332      <span class="toc_section_header"><a href="#section_flash">flash</a></span>
333      <ul class="toc_section">
334        <li>
335          <span class="toc_kind_header">controls</span>
336          <ul class="toc_section">
337            <li
338            ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li>
339            <li
340            ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li>
341            <li
342            ><a href="#controls_android.flash.mode">android.flash.mode</a></li>
343          </ul>
344        </li>
345        <li>
346          <span class="toc_kind_header">static</span>
347          <ul class="toc_section">
348
349            <li
350            ><a href="#static_android.flash.info.available">android.flash.info.available</a></li>
351            <li
352            ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li>
353
354            <li
355            ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li>
356            <li
357            ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li>
358          </ul>
359        </li>
360        <li>
361          <span class="toc_kind_header">dynamic</span>
362          <ul class="toc_section">
363            <li
364            ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li>
365            <li
366            ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li>
367            <li
368            ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li>
369            <li
370            ><a href="#dynamic_android.flash.state">android.flash.state</a></li>
371          </ul>
372        </li>
373      </ul> <!-- toc_section -->
374    </li>
375    <li>
376      <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span>
377      <ul class="toc_section">
378        <li>
379          <span class="toc_kind_header">controls</span>
380          <ul class="toc_section">
381            <li
382            ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li>
383          </ul>
384        </li>
385        <li>
386          <span class="toc_kind_header">static</span>
387          <ul class="toc_section">
388            <li
389            ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li>
390          </ul>
391        </li>
392        <li>
393          <span class="toc_kind_header">dynamic</span>
394          <ul class="toc_section">
395            <li
396            ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li>
397          </ul>
398        </li>
399      </ul> <!-- toc_section -->
400    </li>
401    <li>
402      <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span>
403      <ul class="toc_section">
404        <li>
405          <span class="toc_kind_header">controls</span>
406          <ul class="toc_section">
407            <li
408            ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
409            <li
410            ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
411            <li
412            ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
413            <li
414            ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
415            <li
416            ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li>
417            <li
418            ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li>
419            <li
420            ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
421            <li
422            ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
423          </ul>
424        </li>
425        <li>
426          <span class="toc_kind_header">static</span>
427          <ul class="toc_section">
428            <li
429            ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li>
430            <li
431            ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li>
432          </ul>
433        </li>
434        <li>
435          <span class="toc_kind_header">dynamic</span>
436          <ul class="toc_section">
437            <li
438            ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
439            <li
440            ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
441            <li
442            ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
443            <li
444            ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
445            <li
446            ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li>
447            <li
448            ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li>
449            <li
450            ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li>
451            <li
452            ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
453            <li
454            ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
455          </ul>
456        </li>
457      </ul> <!-- toc_section -->
458    </li>
459    <li>
460      <span class="toc_section_header"><a href="#section_lens">lens</a></span>
461      <ul class="toc_section">
462        <li>
463          <span class="toc_kind_header">controls</span>
464          <ul class="toc_section">
465            <li
466            ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li>
467            <li
468            ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li>
469            <li
470            ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li>
471            <li
472            ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li>
473            <li
474            ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
475          </ul>
476        </li>
477        <li>
478          <span class="toc_kind_header">static</span>
479          <ul class="toc_section">
480
481            <li
482            ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li>
483            <li
484            ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li>
485            <li
486            ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li>
487            <li
488            ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li>
489            <li
490            ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li>
491            <li
492            ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li>
493            <li
494            ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li>
495            <li
496            ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li>
497
498            <li
499            ><a href="#static_android.lens.facing">android.lens.facing</a></li>
500            <li
501            ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li>
502            <li
503            ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
504            <li
505            ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
506            <li
507            ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
508          </ul>
509        </li>
510        <li>
511          <span class="toc_kind_header">dynamic</span>
512          <ul class="toc_section">
513            <li
514            ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li>
515            <li
516            ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li>
517            <li
518            ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li>
519            <li
520            ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li>
521            <li
522            ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li>
523            <li
524            ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
525            <li
526            ><a href="#dynamic_android.lens.state">android.lens.state</a></li>
527            <li
528            ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li>
529            <li
530            ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
531            <li
532            ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
533            <li
534            ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
535          </ul>
536        </li>
537      </ul> <!-- toc_section -->
538    </li>
539    <li>
540      <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span>
541      <ul class="toc_section">
542        <li>
543          <span class="toc_kind_header">controls</span>
544          <ul class="toc_section">
545            <li
546            ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
547            <li
548            ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li>
549          </ul>
550        </li>
551        <li>
552          <span class="toc_kind_header">static</span>
553          <ul class="toc_section">
554            <li
555            ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li>
556          </ul>
557        </li>
558        <li>
559          <span class="toc_kind_header">dynamic</span>
560          <ul class="toc_section">
561            <li
562            ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
563          </ul>
564        </li>
565      </ul> <!-- toc_section -->
566    </li>
567    <li>
568      <span class="toc_section_header"><a href="#section_quirks">quirks</a></span>
569      <ul class="toc_section">
570        <li>
571          <span class="toc_kind_header">static</span>
572          <ul class="toc_section">
573            <li
574                class="toc_deprecated"
575            ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li>
576            <li
577                class="toc_deprecated"
578            ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li>
579            <li
580                class="toc_deprecated"
581            ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li>
582            <li
583                class="toc_deprecated"
584            ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li>
585          </ul>
586        </li>
587        <li>
588          <span class="toc_kind_header">dynamic</span>
589          <ul class="toc_section">
590            <li
591                class="toc_deprecated"
592            ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li>
593          </ul>
594        </li>
595      </ul> <!-- toc_section -->
596    </li>
597    <li>
598      <span class="toc_section_header"><a href="#section_request">request</a></span>
599      <ul class="toc_section">
600        <li>
601          <span class="toc_kind_header">controls</span>
602          <ul class="toc_section">
603            <li
604                class="toc_deprecated"
605            ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li>
606            <li
607            ><a href="#controls_android.request.id">android.request.id</a></li>
608            <li
609                class="toc_deprecated"
610            ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li>
611            <li
612            ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li>
613            <li
614                class="toc_deprecated"
615            ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li>
616            <li
617                class="toc_deprecated"
618            ><a href="#controls_android.request.type">android.request.type</a></li>
619          </ul>
620        </li>
621        <li>
622          <span class="toc_kind_header">static</span>
623          <ul class="toc_section">
624            <li
625            ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li>
626            <li
627            ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li>
628            <li
629            ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li>
630            <li
631            ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li>
632            <li
633                class="toc_deprecated"
634            ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li>
635            <li
636            ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li>
637            <li
638            ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li>
639            <li
640            ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li>
641            <li
642            ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li>
643            <li
644            ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li>
645            <li
646            ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
647            <li
648            ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
649          </ul>
650        </li>
651        <li>
652          <span class="toc_kind_header">dynamic</span>
653          <ul class="toc_section">
654            <li
655                class="toc_deprecated"
656            ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li>
657            <li
658            ><a href="#dynamic_android.request.id">android.request.id</a></li>
659            <li
660            ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li>
661            <li
662                class="toc_deprecated"
663            ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li>
664            <li
665            ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li>
666          </ul>
667        </li>
668      </ul> <!-- toc_section -->
669    </li>
670    <li>
671      <span class="toc_section_header"><a href="#section_scaler">scaler</a></span>
672      <ul class="toc_section">
673        <li>
674          <span class="toc_kind_header">controls</span>
675          <ul class="toc_section">
676            <li
677            ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
678          </ul>
679        </li>
680        <li>
681          <span class="toc_kind_header">static</span>
682          <ul class="toc_section">
683            <li
684                class="toc_deprecated"
685            ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li>
686            <li
687                class="toc_deprecated"
688            ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li>
689            <li
690                class="toc_deprecated"
691            ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li>
692            <li
693            ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li>
694            <li
695                class="toc_deprecated"
696            ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li>
697            <li
698                class="toc_deprecated"
699            ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li>
700            <li
701                class="toc_deprecated"
702            ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li>
703            <li
704                class="toc_deprecated"
705            ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li>
706            <li
707            ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li>
708            <li
709            ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li>
710            <li
711            ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li>
712            <li
713            ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li>
714            <li
715            ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li>
716            <li
717            ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li>
718          </ul>
719        </li>
720        <li>
721          <span class="toc_kind_header">dynamic</span>
722          <ul class="toc_section">
723            <li
724            ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
725          </ul>
726        </li>
727      </ul> <!-- toc_section -->
728    </li>
729    <li>
730      <span class="toc_section_header"><a href="#section_sensor">sensor</a></span>
731      <ul class="toc_section">
732        <li>
733          <span class="toc_kind_header">controls</span>
734          <ul class="toc_section">
735            <li
736            ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
737            <li
738            ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
739            <li
740            ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
741            <li
742            ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
743            <li
744            ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
745          </ul>
746        </li>
747        <li>
748          <span class="toc_kind_header">static</span>
749          <ul class="toc_section">
750
751            <li
752            ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
753            <li
754            ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
755            <li
756            ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
757            <li
758            ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
759            <li
760            ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
761            <li
762            ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li>
763            <li
764            ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li>
765            <li
766            ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li>
767            <li
768            ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li>
769            <li
770            ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li>
771            <li
772            ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li>
773
774            <li
775            ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
776            <li
777            ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
778            <li
779            ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
780            <li
781            ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
782            <li
783            ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
784            <li
785            ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
786            <li
787            ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
788            <li
789            ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
790            <li
791            ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
792            <li
793            ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
794            <li
795            ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
796            <li
797            ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
798            <li
799            ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
800            <li
801            ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
802          </ul>
803        </li>
804        <li>
805          <span class="toc_kind_header">dynamic</span>
806          <ul class="toc_section">
807            <li
808            ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
809            <li
810            ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
811            <li
812            ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
813            <li
814            ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
815            <li
816            ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
817            <li
818            ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
819            <li
820            ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
821            <li
822            ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
823            <li
824            ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
825            <li
826            ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
827            <li
828            ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
829            <li
830            ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
831            <li
832            ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
833          </ul>
834        </li>
835      </ul> <!-- toc_section -->
836    </li>
837    <li>
838      <span class="toc_section_header"><a href="#section_shading">shading</a></span>
839      <ul class="toc_section">
840        <li>
841          <span class="toc_kind_header">controls</span>
842          <ul class="toc_section">
843            <li
844            ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
845            <li
846            ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
847          </ul>
848        </li>
849        <li>
850          <span class="toc_kind_header">dynamic</span>
851          <ul class="toc_section">
852            <li
853            ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
854          </ul>
855        </li>
856        <li>
857          <span class="toc_kind_header">static</span>
858          <ul class="toc_section">
859            <li
860            ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li>
861          </ul>
862        </li>
863      </ul> <!-- toc_section -->
864    </li>
865    <li>
866      <span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
867      <ul class="toc_section">
868        <li>
869          <span class="toc_kind_header">controls</span>
870          <ul class="toc_section">
871            <li
872            ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
873            <li
874            ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
875            <li
876            ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
877            <li
878            ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
879            <li
880            ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
881          </ul>
882        </li>
883        <li>
884          <span class="toc_kind_header">static</span>
885          <ul class="toc_section">
886
887            <li
888            ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
889            <li
890            ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
891            <li
892            ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
893            <li
894            ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
895            <li
896            ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
897            <li
898            ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
899            <li
900            ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
901            <li
902            ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
903
904          </ul>
905        </li>
906        <li>
907          <span class="toc_kind_header">dynamic</span>
908          <ul class="toc_section">
909            <li
910            ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
911            <li
912            ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
913            <li
914            ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
915            <li
916            ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
917            <li
918            ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
919            <li
920            ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
921            <li
922            ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
923            <li
924            ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
925            <li
926            ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
927            <li
928            ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
929            <li
930            ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
931            <li
932            ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
933            <li
934                class="toc_deprecated"
935            ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
936            <li
937                class="toc_deprecated"
938            ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
939            <li
940            ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
941            <li
942            ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
943            <li
944            ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
945            <li
946            ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
947          </ul>
948        </li>
949      </ul> <!-- toc_section -->
950    </li>
951    <li>
952      <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
953      <ul class="toc_section">
954        <li>
955          <span class="toc_kind_header">controls</span>
956          <ul class="toc_section">
957            <li
958            ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
959            <li
960            ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
961            <li
962            ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
963            <li
964            ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
965            <li
966            ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
967            <li
968            ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li>
969            <li
970            ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
971          </ul>
972        </li>
973        <li>
974          <span class="toc_kind_header">static</span>
975          <ul class="toc_section">
976            <li
977            ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
978            <li
979            ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
980          </ul>
981        </li>
982        <li>
983          <span class="toc_kind_header">dynamic</span>
984          <ul class="toc_section">
985            <li
986            ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
987            <li
988            ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
989            <li
990            ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
991            <li
992            ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
993            <li
994            ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
995            <li
996            ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li>
997            <li
998            ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
999          </ul>
1000        </li>
1001      </ul> <!-- toc_section -->
1002    </li>
1003    <li>
1004      <span class="toc_section_header"><a href="#section_led">led</a></span>
1005      <ul class="toc_section">
1006        <li>
1007          <span class="toc_kind_header">controls</span>
1008          <ul class="toc_section">
1009            <li
1010            ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
1011          </ul>
1012        </li>
1013        <li>
1014          <span class="toc_kind_header">dynamic</span>
1015          <ul class="toc_section">
1016            <li
1017            ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
1018          </ul>
1019        </li>
1020        <li>
1021          <span class="toc_kind_header">static</span>
1022          <ul class="toc_section">
1023            <li
1024            ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
1025          </ul>
1026        </li>
1027      </ul> <!-- toc_section -->
1028    </li>
1029    <li>
1030      <span class="toc_section_header"><a href="#section_info">info</a></span>
1031      <ul class="toc_section">
1032        <li>
1033          <span class="toc_kind_header">static</span>
1034          <ul class="toc_section">
1035            <li
1036            ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
1037          </ul>
1038        </li>
1039      </ul> <!-- toc_section -->
1040    </li>
1041    <li>
1042      <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
1043      <ul class="toc_section">
1044        <li>
1045          <span class="toc_kind_header">controls</span>
1046          <ul class="toc_section">
1047            <li
1048            ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
1049          </ul>
1050        </li>
1051        <li>
1052          <span class="toc_kind_header">dynamic</span>
1053          <ul class="toc_section">
1054            <li
1055            ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
1056          </ul>
1057        </li>
1058      </ul> <!-- toc_section -->
1059    </li>
1060    <li>
1061      <span class="toc_section_header"><a href="#section_sync">sync</a></span>
1062      <ul class="toc_section">
1063        <li>
1064          <span class="toc_kind_header">dynamic</span>
1065          <ul class="toc_section">
1066            <li
1067            ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
1068          </ul>
1069        </li>
1070        <li>
1071          <span class="toc_kind_header">static</span>
1072          <ul class="toc_section">
1073            <li
1074            ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
1075          </ul>
1076        </li>
1077      </ul> <!-- toc_section -->
1078    </li>
1079    <li>
1080      <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span>
1081      <ul class="toc_section">
1082        <li>
1083          <span class="toc_kind_header">controls</span>
1084          <ul class="toc_section">
1085            <li
1086            ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1087          </ul>
1088        </li>
1089        <li>
1090          <span class="toc_kind_header">dynamic</span>
1091          <ul class="toc_section">
1092            <li
1093            ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1094          </ul>
1095        </li>
1096        <li>
1097          <span class="toc_kind_header">static</span>
1098          <ul class="toc_section">
1099            <li
1100            ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li>
1101          </ul>
1102        </li>
1103      </ul> <!-- toc_section -->
1104    </li>
1105    <li>
1106      <span class="toc_section_header"><a href="#section_depth">depth</a></span>
1107      <ul class="toc_section">
1108        <li>
1109          <span class="toc_kind_header">static</span>
1110          <ul class="toc_section">
1111            <li
1112            ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li>
1113            <li
1114            ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li>
1115            <li
1116            ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li>
1117            <li
1118            ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li>
1119            <li
1120            ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li>
1121          </ul>
1122        </li>
1123      </ul> <!-- toc_section -->
1124    </li>
1125  </ul>
1126
1127
1128  <h1>Properties</h1>
1129  <table class="properties">
1130
1131    <thead class="thead_dummy">
1132      <tr>
1133        <th class="th_name">Property Name</th>
1134        <th class="th_type">Type</th>
1135        <th class="th_description">Description</th>
1136        <th class="th_units">Units</th>
1137        <th class="th_range">Range</th>
1138        <th class="th_tags">Tags</th>
1139      </tr>
1140    </thead> <!-- so that the first occurrence of thead is not
1141                         above the first occurrence of tr -->
1142<!-- <namespace name="android"> -->
1143  <tr><td colspan="6" id="section_colorCorrection" class="section">colorCorrection</td></tr>
1144
1145
1146      <tr><td colspan="6" class="kind">controls</td></tr>
1147
1148      <thead class="entries_header">
1149        <tr>
1150          <th class="th_name">Property Name</th>
1151          <th class="th_type">Type</th>
1152          <th class="th_description">Description</th>
1153          <th class="th_units">Units</th>
1154          <th class="th_range">Range</th>
1155          <th class="th_tags">Tags</th>
1156        </tr>
1157      </thead>
1158
1159      <tbody>
1160
1161        
1162
1163        
1164
1165        
1166
1167        
1168
1169                
1170          <tr class="entry" id="controls_android.colorCorrection.mode">
1171            <td class="entry_name
1172             " rowspan="5">
1173              android.<wbr/>color<wbr/>Correction.<wbr/>mode
1174            </td>
1175            <td class="entry_type">
1176                <span class="entry_type_name entry_type_name_enum">byte</span>
1177
1178              <span class="entry_type_visibility"> [public]</span>
1179
1180
1181              <span class="entry_type_hwlevel">[full] </span>
1182
1183
1184
1185                <ul class="entry_type_enum">
1186                  <li>
1187                    <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1188                    <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1189and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1190<p>All advanced white balance adjustments (not specified
1191by our white balance pipeline) must be disabled.<wbr/></p>
1192<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
1193TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1194this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1195                  </li>
1196                  <li>
1197                    <span class="entry_type_enum_name">FAST</span>
1198                    <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1199capture rate relative to sensor raw output.<wbr/></p>
1200<p>Advanced white balance adjustments above and beyond
1201the specified white balance pipeline may be applied.<wbr/></p>
1202<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
1203the camera device uses the last frame's AWB values
1204(or defaults if AWB has never been run).<wbr/></p></span>
1205                  </li>
1206                  <li>
1207                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1208                    <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1209quality but the capture rate might be reduced (relative to sensor
1210raw output rate)</p>
1211<p>Advanced white balance adjustments above and beyond
1212the specified white balance pipeline may be applied.<wbr/></p>
1213<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
1214the camera device uses the last frame's AWB values
1215(or defaults if AWB has never been run).<wbr/></p></span>
1216                  </li>
1217                </ul>
1218
1219            </td> <!-- entry_type -->
1220
1221            <td class="entry_description">
1222              <p>The mode control selects how the image data is converted from the
1223sensor's native color into linear sRGB color.<wbr/></p>
1224            </td>
1225
1226            <td class="entry_units">
1227            </td>
1228
1229            <td class="entry_range">
1230            </td>
1231
1232            <td class="entry_tags">
1233            </td>
1234
1235          </tr>
1236          <tr class="entries_header">
1237            <th class="th_details" colspan="5">Details</th>
1238          </tr>
1239          <tr class="entry_cont">
1240            <td class="entry_details" colspan="5">
1241              <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
1242control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1243application controls how the color mapping is performed.<wbr/></p>
1244<p>We define the expected processing pipeline below.<wbr/> For consistency
1245across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1246<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1247do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1248<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1249camera device (in the results) and be roughly correct.<wbr/></p>
1250<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1251FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1252as what was produced by the camera device in the earlier frame.<wbr/></p>
1253<p>The expected processing pipeline is as follows:</p>
1254<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1255<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1256gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1257matrix (applied after demosaic).<wbr/></p>
1258<p>The 4-channel white-balance gains are defined as:</p>
1259<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1260</code></pre>
1261<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1262output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1263These may be identical for a given camera device implementation; if
1264the camera device does not support a separate gain for even/<wbr/>odd green
1265channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1266<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1267<p>The matrices for color transforms are defined as a 9-entry vector:</p>
1268<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 ]
1269</code></pre>
1270<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1271to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1272<p>with colors as follows:</p>
1273<pre><code>r' = I0r + I1g + I2b
1274g' = I3r + I4g + I5b
1275b' = I6r + I7g + I8b
1276</code></pre>
1277<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1278values are clipped to fit within the range.<wbr/></p>
1279            </td>
1280          </tr>
1281
1282          <tr class="entries_header">
1283            <th class="th_details" colspan="5">HAL Implementation Details</th>
1284          </tr>
1285          <tr class="entry_cont">
1286            <td class="entry_details" colspan="5">
1287              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1288on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1289That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1290capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1291            </td>
1292          </tr>
1293
1294          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1295           <!-- end of entry -->
1296        
1297                
1298          <tr class="entry" id="controls_android.colorCorrection.transform">
1299            <td class="entry_name
1300             " rowspan="3">
1301              android.<wbr/>color<wbr/>Correction.<wbr/>transform
1302            </td>
1303            <td class="entry_type">
1304                <span class="entry_type_name">rational</span>
1305                <span class="entry_type_container">x</span>
1306
1307                <span class="entry_type_array">
1308                  3 x 3
1309                </span>
1310              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1311
1312
1313              <span class="entry_type_hwlevel">[full] </span>
1314
1315
1316                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1317
1318
1319            </td> <!-- entry_type -->
1320
1321            <td class="entry_description">
1322              <p>A color transform matrix to use to transform
1323from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1324            </td>
1325
1326            <td class="entry_units">
1327              Unitless scale factors
1328            </td>
1329
1330            <td class="entry_range">
1331            </td>
1332
1333            <td class="entry_tags">
1334            </td>
1335
1336          </tr>
1337          <tr class="entries_header">
1338            <th class="th_details" colspan="5">Details</th>
1339          </tr>
1340          <tr class="entry_cont">
1341            <td class="entry_details" colspan="5">
1342              <p>This matrix is either set by the camera device when the request
1343<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1344directly by the application in the request when the
1345<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1346<p>In the latter case,<wbr/> the camera device may round the matrix to account
1347for precision issues; the final rounded matrix should be reported back
1348in this matrix result metadata.<wbr/> The transform should keep the magnitude
1349of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1350values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1351<p>The valid range of each matrix element varies on different devices,<wbr/> but
1352values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1353            </td>
1354          </tr>
1355
1356
1357          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1358           <!-- end of entry -->
1359        
1360                
1361          <tr class="entry" id="controls_android.colorCorrection.gains">
1362            <td class="entry_name
1363             " rowspan="5">
1364              android.<wbr/>color<wbr/>Correction.<wbr/>gains
1365            </td>
1366            <td class="entry_type">
1367                <span class="entry_type_name">float</span>
1368                <span class="entry_type_container">x</span>
1369
1370                <span class="entry_type_array">
1371                  4
1372                </span>
1373              <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1374
1375
1376              <span class="entry_type_hwlevel">[full] </span>
1377
1378
1379                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1380
1381
1382            </td> <!-- entry_type -->
1383
1384            <td class="entry_description">
1385              <p>Gains applying to Bayer raw color channels for
1386white-balance.<wbr/></p>
1387            </td>
1388
1389            <td class="entry_units">
1390              Unitless gain factors
1391            </td>
1392
1393            <td class="entry_range">
1394            </td>
1395
1396            <td class="entry_tags">
1397            </td>
1398
1399          </tr>
1400          <tr class="entries_header">
1401            <th class="th_details" colspan="5">Details</th>
1402          </tr>
1403          <tr class="entry_cont">
1404            <td class="entry_details" colspan="5">
1405              <p>These per-channel gains are either set by the camera device
1406when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1407TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1408request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1409TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1410<p>The gains in the result metadata are the gains actually
1411applied by the camera device to the current frame.<wbr/></p>
1412<p>The valid range of gains varies on different devices,<wbr/> but gains
1413between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1414device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1415this can create color artifacts.<wbr/></p>
1416            </td>
1417          </tr>
1418
1419          <tr class="entries_header">
1420            <th class="th_details" colspan="5">HAL Implementation Details</th>
1421          </tr>
1422          <tr class="entry_cont">
1423            <td class="entry_details" colspan="5">
1424              <p>The 4-channel white-balance gains are defined in
1425the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1426for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1427is the gain for green pixels on the odd rows.<wbr/></p>
1428<p>If a HAL does not support a separate gain for even/<wbr/>odd green
1429channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1430<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1431            </td>
1432          </tr>
1433
1434          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1435           <!-- end of entry -->
1436        
1437                
1438          <tr class="entry" id="controls_android.colorCorrection.aberrationMode">
1439            <td class="entry_name
1440             " rowspan="3">
1441              android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1442            </td>
1443            <td class="entry_type">
1444                <span class="entry_type_name entry_type_name_enum">byte</span>
1445
1446              <span class="entry_type_visibility"> [public]</span>
1447
1448
1449              <span class="entry_type_hwlevel">[legacy] </span>
1450
1451
1452
1453                <ul class="entry_type_enum">
1454                  <li>
1455                    <span class="entry_type_enum_name">OFF</span>
1456                    <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1457                  </li>
1458                  <li>
1459                    <span class="entry_type_enum_name">FAST</span>
1460                    <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1461relative to sensor raw output.<wbr/></p></span>
1462                  </li>
1463                  <li>
1464                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1465                    <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1466reduced (relative to sensor raw output rate)</p></span>
1467                  </li>
1468                </ul>
1469
1470            </td> <!-- entry_type -->
1471
1472            <td class="entry_description">
1473              <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1474            </td>
1475
1476            <td class="entry_units">
1477            </td>
1478
1479            <td class="entry_range">
1480              <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1481            </td>
1482
1483            <td class="entry_tags">
1484            </td>
1485
1486          </tr>
1487          <tr class="entries_header">
1488            <th class="th_details" colspan="5">Details</th>
1489          </tr>
1490          <tr class="entry_cont">
1491            <td class="entry_details" colspan="5">
1492              <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1493can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1494the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1495minimize the chromatic artifacts that may occur along the object boundaries in an
1496image.<wbr/></p>
1497<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1498correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1499use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1500capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1501applying aberration correction.<wbr/></p>
1502<p>LEGACY devices will always be in FAST mode.<wbr/></p>
1503            </td>
1504          </tr>
1505
1506
1507          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1508           <!-- end of entry -->
1509        
1510        
1511
1512      <!-- end of kind -->
1513      </tbody>
1514      <tr><td colspan="6" class="kind">dynamic</td></tr>
1515
1516      <thead class="entries_header">
1517        <tr>
1518          <th class="th_name">Property Name</th>
1519          <th class="th_type">Type</th>
1520          <th class="th_description">Description</th>
1521          <th class="th_units">Units</th>
1522          <th class="th_range">Range</th>
1523          <th class="th_tags">Tags</th>
1524        </tr>
1525      </thead>
1526
1527      <tbody>
1528
1529        
1530
1531        
1532
1533        
1534
1535        
1536
1537                
1538          <tr class="entry" id="dynamic_android.colorCorrection.mode">
1539            <td class="entry_name
1540             " rowspan="5">
1541              android.<wbr/>color<wbr/>Correction.<wbr/>mode
1542            </td>
1543            <td class="entry_type">
1544                <span class="entry_type_name entry_type_name_enum">byte</span>
1545
1546              <span class="entry_type_visibility"> [public]</span>
1547
1548
1549              <span class="entry_type_hwlevel">[full] </span>
1550
1551
1552
1553                <ul class="entry_type_enum">
1554                  <li>
1555                    <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1556                    <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1557and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1558<p>All advanced white balance adjustments (not specified
1559by our white balance pipeline) must be disabled.<wbr/></p>
1560<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
1561TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1562this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1563                  </li>
1564                  <li>
1565                    <span class="entry_type_enum_name">FAST</span>
1566                    <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1567capture rate relative to sensor raw output.<wbr/></p>
1568<p>Advanced white balance adjustments above and beyond
1569the specified white balance pipeline may be applied.<wbr/></p>
1570<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
1571the camera device uses the last frame's AWB values
1572(or defaults if AWB has never been run).<wbr/></p></span>
1573                  </li>
1574                  <li>
1575                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1576                    <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1577quality but the capture rate might be reduced (relative to sensor
1578raw output rate)</p>
1579<p>Advanced white balance adjustments above and beyond
1580the specified white balance pipeline may be applied.<wbr/></p>
1581<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
1582the camera device uses the last frame's AWB values
1583(or defaults if AWB has never been run).<wbr/></p></span>
1584                  </li>
1585                </ul>
1586
1587            </td> <!-- entry_type -->
1588
1589            <td class="entry_description">
1590              <p>The mode control selects how the image data is converted from the
1591sensor's native color into linear sRGB color.<wbr/></p>
1592            </td>
1593
1594            <td class="entry_units">
1595            </td>
1596
1597            <td class="entry_range">
1598            </td>
1599
1600            <td class="entry_tags">
1601            </td>
1602
1603          </tr>
1604          <tr class="entries_header">
1605            <th class="th_details" colspan="5">Details</th>
1606          </tr>
1607          <tr class="entry_cont">
1608            <td class="entry_details" colspan="5">
1609              <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
1610control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1611application controls how the color mapping is performed.<wbr/></p>
1612<p>We define the expected processing pipeline below.<wbr/> For consistency
1613across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1614<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1615do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1616<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1617camera device (in the results) and be roughly correct.<wbr/></p>
1618<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1619FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1620as what was produced by the camera device in the earlier frame.<wbr/></p>
1621<p>The expected processing pipeline is as follows:</p>
1622<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1623<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1624gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1625matrix (applied after demosaic).<wbr/></p>
1626<p>The 4-channel white-balance gains are defined as:</p>
1627<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1628</code></pre>
1629<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1630output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1631These may be identical for a given camera device implementation; if
1632the camera device does not support a separate gain for even/<wbr/>odd green
1633channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1634<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1635<p>The matrices for color transforms are defined as a 9-entry vector:</p>
1636<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 ]
1637</code></pre>
1638<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1639to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1640<p>with colors as follows:</p>
1641<pre><code>r' = I0r + I1g + I2b
1642g' = I3r + I4g + I5b
1643b' = I6r + I7g + I8b
1644</code></pre>
1645<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1646values are clipped to fit within the range.<wbr/></p>
1647            </td>
1648          </tr>
1649
1650          <tr class="entries_header">
1651            <th class="th_details" colspan="5">HAL Implementation Details</th>
1652          </tr>
1653          <tr class="entry_cont">
1654            <td class="entry_details" colspan="5">
1655              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1656on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1657That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1658capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1659            </td>
1660          </tr>
1661
1662          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1663           <!-- end of entry -->
1664        
1665                
1666          <tr class="entry" id="dynamic_android.colorCorrection.transform">
1667            <td class="entry_name
1668             " rowspan="3">
1669              android.<wbr/>color<wbr/>Correction.<wbr/>transform
1670            </td>
1671            <td class="entry_type">
1672                <span class="entry_type_name">rational</span>
1673                <span class="entry_type_container">x</span>
1674
1675                <span class="entry_type_array">
1676                  3 x 3
1677                </span>
1678              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1679
1680
1681              <span class="entry_type_hwlevel">[full] </span>
1682
1683
1684                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1685
1686
1687            </td> <!-- entry_type -->
1688
1689            <td class="entry_description">
1690              <p>A color transform matrix to use to transform
1691from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1692            </td>
1693
1694            <td class="entry_units">
1695              Unitless scale factors
1696            </td>
1697
1698            <td class="entry_range">
1699            </td>
1700
1701            <td class="entry_tags">
1702            </td>
1703
1704          </tr>
1705          <tr class="entries_header">
1706            <th class="th_details" colspan="5">Details</th>
1707          </tr>
1708          <tr class="entry_cont">
1709            <td class="entry_details" colspan="5">
1710              <p>This matrix is either set by the camera device when the request
1711<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1712directly by the application in the request when the
1713<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1714<p>In the latter case,<wbr/> the camera device may round the matrix to account
1715for precision issues; the final rounded matrix should be reported back
1716in this matrix result metadata.<wbr/> The transform should keep the magnitude
1717of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1718values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1719<p>The valid range of each matrix element varies on different devices,<wbr/> but
1720values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1721            </td>
1722          </tr>
1723
1724
1725          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1726           <!-- end of entry -->
1727        
1728                
1729          <tr class="entry" id="dynamic_android.colorCorrection.gains">
1730            <td class="entry_name
1731             " rowspan="5">
1732              android.<wbr/>color<wbr/>Correction.<wbr/>gains
1733            </td>
1734            <td class="entry_type">
1735                <span class="entry_type_name">float</span>
1736                <span class="entry_type_container">x</span>
1737
1738                <span class="entry_type_array">
1739                  4
1740                </span>
1741              <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1742
1743
1744              <span class="entry_type_hwlevel">[full] </span>
1745
1746
1747                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1748
1749
1750            </td> <!-- entry_type -->
1751
1752            <td class="entry_description">
1753              <p>Gains applying to Bayer raw color channels for
1754white-balance.<wbr/></p>
1755            </td>
1756
1757            <td class="entry_units">
1758              Unitless gain factors
1759            </td>
1760
1761            <td class="entry_range">
1762            </td>
1763
1764            <td class="entry_tags">
1765            </td>
1766
1767          </tr>
1768          <tr class="entries_header">
1769            <th class="th_details" colspan="5">Details</th>
1770          </tr>
1771          <tr class="entry_cont">
1772            <td class="entry_details" colspan="5">
1773              <p>These per-channel gains are either set by the camera device
1774when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1775TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1776request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1777TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1778<p>The gains in the result metadata are the gains actually
1779applied by the camera device to the current frame.<wbr/></p>
1780<p>The valid range of gains varies on different devices,<wbr/> but gains
1781between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1782device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1783this can create color artifacts.<wbr/></p>
1784            </td>
1785          </tr>
1786
1787          <tr class="entries_header">
1788            <th class="th_details" colspan="5">HAL Implementation Details</th>
1789          </tr>
1790          <tr class="entry_cont">
1791            <td class="entry_details" colspan="5">
1792              <p>The 4-channel white-balance gains are defined in
1793the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1794for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1795is the gain for green pixels on the odd rows.<wbr/></p>
1796<p>If a HAL does not support a separate gain for even/<wbr/>odd green
1797channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1798<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1799            </td>
1800          </tr>
1801
1802          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1803           <!-- end of entry -->
1804        
1805                
1806          <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
1807            <td class="entry_name
1808             " rowspan="3">
1809              android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1810            </td>
1811            <td class="entry_type">
1812                <span class="entry_type_name entry_type_name_enum">byte</span>
1813
1814              <span class="entry_type_visibility"> [public]</span>
1815
1816
1817              <span class="entry_type_hwlevel">[legacy] </span>
1818
1819
1820
1821                <ul class="entry_type_enum">
1822                  <li>
1823                    <span class="entry_type_enum_name">OFF</span>
1824                    <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1825                  </li>
1826                  <li>
1827                    <span class="entry_type_enum_name">FAST</span>
1828                    <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1829relative to sensor raw output.<wbr/></p></span>
1830                  </li>
1831                  <li>
1832                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1833                    <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1834reduced (relative to sensor raw output rate)</p></span>
1835                  </li>
1836                </ul>
1837
1838            </td> <!-- entry_type -->
1839
1840            <td class="entry_description">
1841              <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1842            </td>
1843
1844            <td class="entry_units">
1845            </td>
1846
1847            <td class="entry_range">
1848              <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1849            </td>
1850
1851            <td class="entry_tags">
1852            </td>
1853
1854          </tr>
1855          <tr class="entries_header">
1856            <th class="th_details" colspan="5">Details</th>
1857          </tr>
1858          <tr class="entry_cont">
1859            <td class="entry_details" colspan="5">
1860              <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1861can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1862the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1863minimize the chromatic artifacts that may occur along the object boundaries in an
1864image.<wbr/></p>
1865<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1866correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1867use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1868capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1869applying aberration correction.<wbr/></p>
1870<p>LEGACY devices will always be in FAST mode.<wbr/></p>
1871            </td>
1872          </tr>
1873
1874
1875          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1876           <!-- end of entry -->
1877        
1878        
1879
1880      <!-- end of kind -->
1881      </tbody>
1882      <tr><td colspan="6" class="kind">static</td></tr>
1883
1884      <thead class="entries_header">
1885        <tr>
1886          <th class="th_name">Property Name</th>
1887          <th class="th_type">Type</th>
1888          <th class="th_description">Description</th>
1889          <th class="th_units">Units</th>
1890          <th class="th_range">Range</th>
1891          <th class="th_tags">Tags</th>
1892        </tr>
1893      </thead>
1894
1895      <tbody>
1896
1897        
1898
1899        
1900
1901        
1902
1903        
1904
1905                
1906          <tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
1907            <td class="entry_name
1908             " rowspan="5">
1909              android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes
1910            </td>
1911            <td class="entry_type">
1912                <span class="entry_type_name">byte</span>
1913                <span class="entry_type_container">x</span>
1914
1915                <span class="entry_type_array">
1916                  n
1917                </span>
1918              <span class="entry_type_visibility"> [public as enumList]</span>
1919
1920
1921              <span class="entry_type_hwlevel">[legacy] </span>
1922
1923
1924                <div class="entry_type_notes">list of enums</div>
1925
1926
1927            </td> <!-- entry_type -->
1928
1929            <td class="entry_description">
1930              <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
1931supported by this camera device.<wbr/></p>
1932            </td>
1933
1934            <td class="entry_units">
1935            </td>
1936
1937            <td class="entry_range">
1938              <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
1939            </td>
1940
1941            <td class="entry_tags">
1942              <ul class="entry_tags">
1943                  <li><a href="#tag_V1">V1</a></li>
1944              </ul>
1945            </td>
1946
1947          </tr>
1948          <tr class="entries_header">
1949            <th class="th_details" colspan="5">Details</th>
1950          </tr>
1951          <tr class="entry_cont">
1952            <td class="entry_details" colspan="5">
1953              <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
1954aberration correction modes are available for a device,<wbr/> this list will solely include
1955OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
1956<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
1957OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
1958<p>LEGACY devices will always only support FAST mode.<wbr/></p>
1959            </td>
1960          </tr>
1961
1962          <tr class="entries_header">
1963            <th class="th_details" colspan="5">HAL Implementation Details</th>
1964          </tr>
1965          <tr class="entry_cont">
1966            <td class="entry_details" colspan="5">
1967              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
1968on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1969That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1970capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
1971            </td>
1972          </tr>
1973
1974          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1975           <!-- end of entry -->
1976        
1977        
1978
1979      <!-- end of kind -->
1980      </tbody>
1981
1982  <!-- end of section -->
1983  <tr><td colspan="6" id="section_control" class="section">control</td></tr>
1984
1985
1986      <tr><td colspan="6" class="kind">controls</td></tr>
1987
1988      <thead class="entries_header">
1989        <tr>
1990          <th class="th_name">Property Name</th>
1991          <th class="th_type">Type</th>
1992          <th class="th_description">Description</th>
1993          <th class="th_units">Units</th>
1994          <th class="th_range">Range</th>
1995          <th class="th_tags">Tags</th>
1996        </tr>
1997      </thead>
1998
1999      <tbody>
2000
2001        
2002
2003        
2004
2005        
2006
2007        
2008
2009                
2010          <tr class="entry" id="controls_android.control.aeAntibandingMode">
2011            <td class="entry_name
2012             " rowspan="5">
2013              android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
2014            </td>
2015            <td class="entry_type">
2016                <span class="entry_type_name entry_type_name_enum">byte</span>
2017
2018              <span class="entry_type_visibility"> [public]</span>
2019
2020
2021              <span class="entry_type_hwlevel">[legacy] </span>
2022
2023
2024
2025                <ul class="entry_type_enum">
2026                  <li>
2027                    <span class="entry_type_enum_name">OFF</span>
2028                    <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
2029avoid banding problems.<wbr/></p></span>
2030                  </li>
2031                  <li>
2032                    <span class="entry_type_enum_name">50HZ</span>
2033                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2034avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
2035                  </li>
2036                  <li>
2037                    <span class="entry_type_enum_name">60HZ</span>
2038                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2039avoid banding problems with 60Hz illumination
2040sources.<wbr/></p></span>
2041                  </li>
2042                  <li>
2043                    <span class="entry_type_enum_name">AUTO</span>
2044                    <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
2045antibanding routine to the current illumination
2046condition.<wbr/> This is the default mode if AUTO is
2047available on given camera device.<wbr/></p></span>
2048                  </li>
2049                </ul>
2050
2051            </td> <!-- entry_type -->
2052
2053            <td class="entry_description">
2054              <p>The desired setting for the camera device's auto-exposure
2055algorithm's antibanding compensation.<wbr/></p>
2056            </td>
2057
2058            <td class="entry_units">
2059            </td>
2060
2061            <td class="entry_range">
2062              <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
2063            </td>
2064
2065            <td class="entry_tags">
2066              <ul class="entry_tags">
2067                  <li><a href="#tag_BC">BC</a></li>
2068              </ul>
2069            </td>
2070
2071          </tr>
2072          <tr class="entries_header">
2073            <th class="th_details" colspan="5">Details</th>
2074          </tr>
2075          <tr class="entry_cont">
2076            <td class="entry_details" colspan="5">
2077              <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
2078lights,<wbr/> flicker at the rate of the power supply frequency
2079(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
2080typically not noticeable to a person,<wbr/> it can be visible to
2081a camera device.<wbr/> If a camera sets its exposure time to the
2082wrong value,<wbr/> the flicker may become visible in the
2083viewfinder as flicker or in a final captured image,<wbr/> as a
2084set of variable-brightness bands across the image.<wbr/></p>
2085<p>Therefore,<wbr/> the auto-exposure routines of camera devices
2086include antibanding routines that ensure that the chosen
2087exposure value will not cause such banding.<wbr/> The choice of
2088exposure time depends on the rate of flicker,<wbr/> which the
2089camera device can detect automatically,<wbr/> or the expected
2090rate can be selected by the application using this
2091control.<wbr/></p>
2092<p>A given camera device may not support all of the possible
2093options for the antibanding mode.<wbr/> The
2094<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
2095the available modes for a given camera device.<wbr/></p>
2096<p>AUTO mode is the default if it is available on given
2097camera device.<wbr/> When AUTO mode is not available,<wbr/> the
2098default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
2099and 60HZ will be available.<wbr/></p>
2100<p>If manual exposure control is enabled (by setting
2101<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/>
2102then this setting has no effect,<wbr/> and the application must
2103ensure it selects exposure times that do not cause banding
2104issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
2105the application in this.<wbr/></p>
2106            </td>
2107          </tr>
2108
2109          <tr class="entries_header">
2110            <th class="th_details" colspan="5">HAL Implementation Details</th>
2111          </tr>
2112          <tr class="entry_cont">
2113            <td class="entry_details" colspan="5">
2114              <p>For all capture request templates,<wbr/> this field must be set
2115to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
2116the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
211760HZ must 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 the exposure values provided by the application must not be
2121adjusted for antibanding.<wbr/></p>
2122            </td>
2123          </tr>
2124
2125          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2126           <!-- end of entry -->
2127        
2128                
2129          <tr class="entry" id="controls_android.control.aeExposureCompensation">
2130            <td class="entry_name
2131             " rowspan="3">
2132              android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
2133            </td>
2134            <td class="entry_type">
2135                <span class="entry_type_name">int32</span>
2136
2137              <span class="entry_type_visibility"> [public]</span>
2138
2139
2140              <span class="entry_type_hwlevel">[legacy] </span>
2141
2142
2143
2144
2145            </td> <!-- entry_type -->
2146
2147            <td class="entry_description">
2148              <p>Adjustment to auto-exposure (AE) target image
2149brightness.<wbr/></p>
2150            </td>
2151
2152            <td class="entry_units">
2153              Compensation steps
2154            </td>
2155
2156            <td class="entry_range">
2157              <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
2158            </td>
2159
2160            <td class="entry_tags">
2161              <ul class="entry_tags">
2162                  <li><a href="#tag_BC">BC</a></li>
2163              </ul>
2164            </td>
2165
2166          </tr>
2167          <tr class="entries_header">
2168            <th class="th_details" colspan="5">Details</th>
2169          </tr>
2170          <tr class="entry_cont">
2171            <td class="entry_details" colspan="5">
2172              <p>The adjustment is measured as a count of steps,<wbr/> with the
2173step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
2174allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
2175<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
2176will mean an exposure compensation of +2 EV; -3 will mean an
2177exposure compensation of -1 EV.<wbr/> One EV represents a doubling
2178of image brightness.<wbr/> Note that this control will only be
2179effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
2180will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
2181<p>In the event of exposure compensation value being changed,<wbr/> camera device
2182may take several frames to reach the newly requested exposure target.<wbr/>
2183During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
2184state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
2185change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
2186FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
2187            </td>
2188          </tr>
2189
2190
2191          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2192           <!-- end of entry -->
2193        
2194                
2195          <tr class="entry" id="controls_android.control.aeLock">
2196            <td class="entry_name
2197             " rowspan="3">
2198              android.<wbr/>control.<wbr/>ae<wbr/>Lock
2199            </td>
2200            <td class="entry_type">
2201                <span class="entry_type_name entry_type_name_enum">byte</span>
2202
2203              <span class="entry_type_visibility"> [public as boolean]</span>
2204
2205
2206              <span class="entry_type_hwlevel">[legacy] </span>
2207
2208
2209
2210                <ul class="entry_type_enum">
2211                  <li>
2212                    <span class="entry_type_enum_name">OFF</span>
2213                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
2214is free to update its parameters.<wbr/></p></span>
2215                  </li>
2216                  <li>
2217                    <span class="entry_type_enum_name">ON</span>
2218                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
2219must not update the exposure and sensitivity parameters
2220while the lock is active.<wbr/></p>
2221<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
2222will still take effect while auto-exposure is locked.<wbr/></p>
2223<p>Some rare LEGACY devices may not support
2224this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
2225                  </li>
2226                </ul>
2227
2228            </td> <!-- entry_type -->
2229
2230            <td class="entry_description">
2231              <p>Whether auto-exposure (AE) is currently locked to its latest
2232calculated values.<wbr/></p>
2233            </td>
2234
2235            <td class="entry_units">
2236            </td>
2237
2238            <td class="entry_range">
2239            </td>
2240
2241            <td class="entry_tags">
2242              <ul class="entry_tags">
2243                  <li><a href="#tag_BC">BC</a></li>
2244              </ul>
2245            </td>
2246
2247          </tr>
2248          <tr class="entries_header">
2249            <th class="th_details" colspan="5">Details</th>
2250          </tr>
2251          <tr class="entry_cont">
2252            <td class="entry_details" colspan="5">
2253              <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
2254and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
2255<p>Note that even when AE is locked,<wbr/> the flash may be fired if
2256the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
2257ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
2258<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
2259is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
2260<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
2261when AE is already locked,<wbr/> the camera device will not change the exposure time
2262(<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>)
2263parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
2264is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
2265<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/>
2266Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
2267<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
2268the AE if AE is locked by the camera device internally during precapture metering
2269sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
2270ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
2271will never succeed in a sequence of preview requests where AE lock is always set
2272to <code>false</code>.<wbr/></p>
2273<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
2274get locked do not necessarily correspond to the settings that were present in the
2275latest capture result received from the camera device,<wbr/> since additional captures
2276and AE updates may have occurred even before the result was sent out.<wbr/> If an
2277application is switching between automatic and manual control and wishes to eliminate
2278any flicker during the switch,<wbr/> the following procedure is recommended:</p>
2279<ol>
2280<li>Starting in auto-AE mode:</li>
2281<li>Lock AE</li>
2282<li>Wait for the first result to be output that has the AE locked</li>
2283<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
2284<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
2285</ol>
2286<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>
2287            </td>
2288          </tr>
2289
2290
2291          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2292           <!-- end of entry -->
2293        
2294                
2295          <tr class="entry" id="controls_android.control.aeMode">
2296            <td class="entry_name
2297             " rowspan="3">
2298              android.<wbr/>control.<wbr/>ae<wbr/>Mode
2299            </td>
2300            <td class="entry_type">
2301                <span class="entry_type_name entry_type_name_enum">byte</span>
2302
2303              <span class="entry_type_visibility"> [public]</span>
2304
2305
2306              <span class="entry_type_hwlevel">[legacy] </span>
2307
2308
2309
2310                <ul class="entry_type_enum">
2311                  <li>
2312                    <span class="entry_type_enum_name">OFF</span>
2313                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
2314<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2315<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
2316<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
2317device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
2318a flash unit for this camera device.<wbr/></p>
2319<p>Note that auto-white balance (AWB) and auto-focus (AF)
2320behavior is device dependent when AE is in OFF mode.<wbr/>
2321To have consistent behavior across different devices,<wbr/>
2322it is recommended to either set AWB and AF to OFF mode
2323or lock AWB and AF before setting AE to OFF.<wbr/>
2324See <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/>
2325<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>
2326for more details.<wbr/></p>
2327<p>LEGACY devices do not support the OFF mode and will
2328override attempts to use this value to ON.<wbr/></p></span>
2329                  </li>
2330                  <li>
2331                    <span class="entry_type_enum_name">ON</span>
2332                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
2333with no flash control.<wbr/></p>
2334<p>The application's values for
2335<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2336<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2337<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
2338application has control over the various
2339android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
2340                  </li>
2341                  <li>
2342                    <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
2343                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2344the camera's flash unit,<wbr/> firing it in low-light
2345conditions.<wbr/></p>
2346<p>The flash may be fired during a precapture sequence
2347(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2348may be fired for captures for which the
2349<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2350STILL_<wbr/>CAPTURE</p></span>
2351                  </li>
2352                  <li>
2353                    <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
2354                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2355the camera's flash unit,<wbr/> always firing it for still
2356captures.<wbr/></p>
2357<p>The flash may be fired during a precapture sequence
2358(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2359will always be fired for captures for which the
2360<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2361STILL_<wbr/>CAPTURE</p></span>
2362                  </li>
2363                  <li>
2364                    <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
2365                    <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
2366reduction.<wbr/></p>
2367<p>If deemed necessary by the camera device,<wbr/> a red eye
2368reduction flash will fire during the precapture
2369sequence.<wbr/></p></span>
2370                  </li>
2371                </ul>
2372
2373            </td> <!-- entry_type -->
2374
2375            <td class="entry_description">
2376              <p>The desired mode for the camera device's
2377auto-exposure routine.<wbr/></p>
2378            </td>
2379
2380            <td class="entry_units">
2381            </td>
2382
2383            <td class="entry_range">
2384              <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
2385            </td>
2386
2387            <td class="entry_tags">
2388              <ul class="entry_tags">
2389                  <li><a href="#tag_BC">BC</a></li>
2390              </ul>
2391            </td>
2392
2393          </tr>
2394          <tr class="entries_header">
2395            <th class="th_details" colspan="5">Details</th>
2396          </tr>
2397          <tr class="entry_cont">
2398            <td class="entry_details" colspan="5">
2399              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
2400AUTO.<wbr/></p>
2401<p>When set to any of the ON modes,<wbr/> the camera device's
2402auto-exposure routine is enabled,<wbr/> overriding the
2403application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
2404and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2405<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2406<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
2407is selected,<wbr/> the camera device's flash unit controls are
2408also overridden.<wbr/></p>
2409<p>The FLASH modes are only available if the camera device
2410has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
2411<p>If flash TORCH mode is desired,<wbr/> this field must be set to
2412ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
2413<p>When set to any of the ON modes,<wbr/> the values chosen by the
2414camera device auto-exposure routine for the overridden
2415fields for a given capture will be available in its
2416CaptureResult.<wbr/></p>
2417            </td>
2418          </tr>
2419
2420
2421          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2422           <!-- end of entry -->
2423        
2424                
2425          <tr class="entry" id="controls_android.control.aeRegions">
2426            <td class="entry_name
2427             " rowspan="5">
2428              android.<wbr/>control.<wbr/>ae<wbr/>Regions
2429            </td>
2430            <td class="entry_type">
2431                <span class="entry_type_name">int32</span>
2432                <span class="entry_type_container">x</span>
2433
2434                <span class="entry_type_array">
2435                  5 x area_count
2436                </span>
2437              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2438
2439
2440
2441
2442
2443
2444            </td> <!-- entry_type -->
2445
2446            <td class="entry_description">
2447              <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
2448            </td>
2449
2450            <td class="entry_units">
2451              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2452            </td>
2453
2454            <td class="entry_range">
2455              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2456<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2457            </td>
2458
2459            <td class="entry_tags">
2460              <ul class="entry_tags">
2461                  <li><a href="#tag_BC">BC</a></li>
2462              </ul>
2463            </td>
2464
2465          </tr>
2466          <tr class="entries_header">
2467            <th class="th_details" colspan="5">Details</th>
2468          </tr>
2469          <tr class="entry_cont">
2470            <td class="entry_details" colspan="5">
2471              <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
2472Otherwise will always be present.<wbr/></p>
2473<p>The maximum number of regions supported by the device is determined by the value
2474of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
2475<p>The coordinate system is based on the active pixel array,<wbr/>
2476with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2477(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2478<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2479bottom-right pixel in the active pixel array.<wbr/></p>
2480<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2481for every pixel in the area.<wbr/> This means that a large metering area
2482with the same weight as a smaller area will have more effect in
2483the metering result.<wbr/> Metering areas can partially overlap and the
2484camera device will add the weights in the overlap region.<wbr/></p>
2485<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
2486region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
2487weight is ignored.<wbr/></p>
2488<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2489camera device.<wbr/></p>
2490<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
2491capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2492region and output only the intersection rectangle as the metering region in the result
2493metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
2494not reported in the result metadata.<wbr/></p>
2495            </td>
2496          </tr>
2497
2498          <tr class="entries_header">
2499            <th class="th_details" colspan="5">HAL Implementation Details</th>
2500          </tr>
2501          <tr class="entry_cont">
2502            <td class="entry_details" colspan="5">
2503              <p>The HAL level representation of MeteringRectangle[] is a
2504int[5 * area_<wbr/>count].<wbr/>
2505Every five elements represent a metering region of
2506(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2507The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2508exclusive on xmax and ymax.<wbr/></p>
2509            </td>
2510          </tr>
2511
2512          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2513           <!-- end of entry -->
2514        
2515                
2516          <tr class="entry" id="controls_android.control.aeTargetFpsRange">
2517            <td class="entry_name
2518             " rowspan="3">
2519              android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
2520            </td>
2521            <td class="entry_type">
2522                <span class="entry_type_name">int32</span>
2523                <span class="entry_type_container">x</span>
2524
2525                <span class="entry_type_array">
2526                  2
2527                </span>
2528              <span class="entry_type_visibility"> [public as rangeInt]</span>
2529
2530
2531              <span class="entry_type_hwlevel">[legacy] </span>
2532
2533
2534
2535
2536            </td> <!-- entry_type -->
2537
2538            <td class="entry_description">
2539              <p>Range over which the auto-exposure routine can
2540adjust the capture frame rate to maintain good
2541exposure.<wbr/></p>
2542            </td>
2543
2544            <td class="entry_units">
2545              Frames per second (FPS)
2546            </td>
2547
2548            <td class="entry_range">
2549              <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>
2550            </td>
2551
2552            <td class="entry_tags">
2553              <ul class="entry_tags">
2554                  <li><a href="#tag_BC">BC</a></li>
2555              </ul>
2556            </td>
2557
2558          </tr>
2559          <tr class="entries_header">
2560            <th class="th_details" colspan="5">Details</th>
2561          </tr>
2562          <tr class="entry_cont">
2563            <td class="entry_details" colspan="5">
2564              <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
2565manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
2566<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
2567            </td>
2568          </tr>
2569
2570
2571          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2572           <!-- end of entry -->
2573        
2574                
2575          <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
2576            <td class="entry_name
2577             " rowspan="5">
2578              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
2579            </td>
2580            <td class="entry_type">
2581                <span class="entry_type_name entry_type_name_enum">byte</span>
2582
2583              <span class="entry_type_visibility"> [public]</span>
2584
2585
2586              <span class="entry_type_hwlevel">[limited] </span>
2587
2588
2589
2590                <ul class="entry_type_enum">
2591                  <li>
2592                    <span class="entry_type_enum_name">IDLE</span>
2593                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2594                  </li>
2595                  <li>
2596                    <span class="entry_type_enum_name">START</span>
2597                    <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
2598by the camera device.<wbr/></p>
2599<p>The exact effect of the precapture trigger depends on
2600the current AE mode and state.<wbr/></p></span>
2601                  </li>
2602                  <li>
2603                    <span class="entry_type_enum_name">CANCEL</span>
2604                    <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
2605precapture metering sequence,<wbr/> the auto-exposure routine will return to its
2606initial state.<wbr/></p></span>
2607                  </li>
2608                </ul>
2609
2610            </td> <!-- entry_type -->
2611
2612            <td class="entry_description">
2613              <p>Whether the camera device will trigger a precapture
2614metering sequence when it processes this request.<wbr/></p>
2615            </td>
2616
2617            <td class="entry_units">
2618            </td>
2619
2620            <td class="entry_range">
2621            </td>
2622
2623            <td class="entry_tags">
2624              <ul class="entry_tags">
2625                  <li><a href="#tag_BC">BC</a></li>
2626              </ul>
2627            </td>
2628
2629          </tr>
2630          <tr class="entries_header">
2631            <th class="th_details" colspan="5">Details</th>
2632          </tr>
2633          <tr class="entry_cont">
2634            <td class="entry_details" colspan="5">
2635              <p>This entry is normally set to IDLE,<wbr/> or is not
2636included at all in the request settings.<wbr/> When included and
2637set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
2638precapture metering sequence.<wbr/></p>
2639<p>When set to CANCEL,<wbr/> the camera device will cancel any active
2640precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
2641If a precapture metering sequence is already completed,<wbr/> and the camera
2642device has implicitly locked the AE for subsequent still capture,<wbr/> the
2643CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
2644<p>The precapture sequence should be triggered before starting a
2645high-quality still capture for final metering decisions to
2646be made,<wbr/> and for firing pre-capture flash pulses to estimate
2647scene brightness and required final capture flash power,<wbr/> when
2648the flash is enabled.<wbr/></p>
2649<p>Normally,<wbr/> this entry should be set to START for only a
2650single request,<wbr/> and the application should wait until the
2651sequence completes before starting a new one.<wbr/></p>
2652<p>When a precapture metering sequence is finished,<wbr/> the camera device
2653may lock the auto-exposure routine internally to be able to accurately expose the
2654subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
2655For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
2656submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
2657submit 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
2658with <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
2659still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
2660API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
2661internally locked AE if the application doesn't submit a still capture request after
2662the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
2663be used in devices that have earlier API levels.<wbr/></p>
2664<p>The exact effect of auto-exposure (AE) precapture trigger
2665depends on the current AE mode and state; see
2666<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
2667details.<wbr/></p>
2668<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
2669capturing a high-resolution JPEG image will automatically trigger a
2670precapture sequence before the high-resolution capture,<wbr/> including
2671potentially firing a pre-capture flash.<wbr/></p>
2672<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
2673simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
2674the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
2675focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
2676trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
2677changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
2678example.<wbr/></p>
2679<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
2680the camera device will complete them in the optimal order for that device.<wbr/></p>
2681            </td>
2682          </tr>
2683
2684          <tr class="entries_header">
2685            <th class="th_details" colspan="5">HAL Implementation Details</th>
2686          </tr>
2687          <tr class="entry_cont">
2688            <td class="entry_details" colspan="5">
2689              <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
2690(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
2691treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
2692AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
2693to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
2694            </td>
2695          </tr>
2696
2697          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2698           <!-- end of entry -->
2699        
2700                
2701          <tr class="entry" id="controls_android.control.afMode">
2702            <td class="entry_name
2703             " rowspan="5">
2704              android.<wbr/>control.<wbr/>af<wbr/>Mode
2705            </td>
2706            <td class="entry_type">
2707                <span class="entry_type_name entry_type_name_enum">byte</span>
2708
2709              <span class="entry_type_visibility"> [public]</span>
2710
2711
2712              <span class="entry_type_hwlevel">[legacy] </span>
2713
2714
2715
2716                <ul class="entry_type_enum">
2717                  <li>
2718                    <span class="entry_type_enum_name">OFF</span>
2719                    <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
2720<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
2721application.<wbr/></p></span>
2722                  </li>
2723                  <li>
2724                    <span class="entry_type_enum_name">AUTO</span>
2725                    <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
2726<p>In this mode,<wbr/> the lens does not move unless
2727the autofocus trigger action is called.<wbr/> When that trigger
2728is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2729the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
2730<p>Always supported if lens is not fixed focus.<wbr/></p>
2731<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
2732is fixed-focus.<wbr/></p>
2733<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
2734and sets the AF state to INACTIVE.<wbr/></p></span>
2735                  </li>
2736                  <li>
2737                    <span class="entry_type_enum_name">MACRO</span>
2738                    <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
2739<p>In this mode,<wbr/> the lens does not move unless the
2740autofocus trigger action is called.<wbr/> When that trigger is
2741activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2742the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
2743mode is optimized for focusing on objects very close to
2744the camera.<wbr/></p>
2745<p>When that trigger is activated,<wbr/> AF will transition to
2746ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
2747NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
2748position to default,<wbr/> and sets the AF state to
2749INACTIVE.<wbr/></p></span>
2750                  </li>
2751                  <li>
2752                    <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
2753                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2754position continually to attempt to provide a
2755constantly-in-focus image stream.<wbr/></p>
2756<p>The focusing behavior should be suitable for good quality
2757video recording; typically this means slower focus
2758movement and no overshoots.<wbr/> When the AF trigger is not
2759involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
2760and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
2761states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
2762the algorithm should immediately transition into
2763AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2764lens position until a cancel AF trigger is received.<wbr/></p>
2765<p>Once cancel is received,<wbr/> the algorithm should transition
2766back to INACTIVE and resume passive scan.<wbr/> Note that this
2767behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
2768ongoing PASSIVE_<wbr/>SCAN must immediately be
2769canceled.<wbr/></p></span>
2770                  </li>
2771                  <li>
2772                    <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
2773                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2774position continually to attempt to provide a
2775constantly-in-focus image stream.<wbr/></p>
2776<p>The focusing behavior should be suitable for still image
2777capture; typically this means focusing as fast as
2778possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
2779algorithm should start in INACTIVE state,<wbr/> and then
2780transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
2781appropriate as it attempts to maintain focus.<wbr/> When the AF
2782trigger is activated,<wbr/> the algorithm should finish its
2783PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
2784AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2785lens position until a cancel AF trigger is received.<wbr/></p>
2786<p>When the AF cancel trigger is activated,<wbr/> the algorithm
2787should transition back to INACTIVE and then act as if it
2788has just been started.<wbr/></p></span>
2789                  </li>
2790                  <li>
2791                    <span class="entry_type_enum_name">EDOF</span>
2792                    <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
2793<p>The camera device will produce images with an extended
2794depth of field automatically; no special focusing
2795operations need to be done before taking a picture.<wbr/></p>
2796<p>AF triggers are ignored,<wbr/> and the AF state will always be
2797INACTIVE.<wbr/></p></span>
2798                  </li>
2799                </ul>
2800
2801            </td> <!-- entry_type -->
2802
2803            <td class="entry_description">
2804              <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
2805mode it is set to.<wbr/></p>
2806            </td>
2807
2808            <td class="entry_units">
2809            </td>
2810
2811            <td class="entry_range">
2812              <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
2813            </td>
2814
2815            <td class="entry_tags">
2816              <ul class="entry_tags">
2817                  <li><a href="#tag_BC">BC</a></li>
2818              </ul>
2819            </td>
2820
2821          </tr>
2822          <tr class="entries_header">
2823            <th class="th_details" colspan="5">Details</th>
2824          </tr>
2825          <tr class="entry_cont">
2826            <td class="entry_details" colspan="5">
2827              <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
2828(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
2829when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
2830dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
2831setting <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>
2832<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
2833the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
2834in result metadata.<wbr/></p>
2835            </td>
2836          </tr>
2837
2838          <tr class="entries_header">
2839            <th class="th_details" colspan="5">HAL Implementation Details</th>
2840          </tr>
2841          <tr class="entry_cont">
2842            <td class="entry_details" colspan="5">
2843              <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
2844request (<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
2845up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
2846<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
2847locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
2848after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
2849the same focal plane remains in focus.<wbr/></p>
2850<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
2851scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
2852(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
2853same lock behavior as above.<wbr/></p>
2854<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
2855focus 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/>
2856However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
2857manual control.<wbr/></p>
2858<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
2859camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
2860remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
2861by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
2862that will arise on camera modules with open-loop VCMs.<wbr/></p>
2863            </td>
2864          </tr>
2865
2866          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2867           <!-- end of entry -->
2868        
2869                
2870          <tr class="entry" id="controls_android.control.afRegions">
2871            <td class="entry_name
2872             " rowspan="5">
2873              android.<wbr/>control.<wbr/>af<wbr/>Regions
2874            </td>
2875            <td class="entry_type">
2876                <span class="entry_type_name">int32</span>
2877                <span class="entry_type_container">x</span>
2878
2879                <span class="entry_type_array">
2880                  5 x area_count
2881                </span>
2882              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2883
2884
2885
2886
2887
2888
2889            </td> <!-- entry_type -->
2890
2891            <td class="entry_description">
2892              <p>List of metering areas to use for auto-focus.<wbr/></p>
2893            </td>
2894
2895            <td class="entry_units">
2896              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2897            </td>
2898
2899            <td class="entry_range">
2900              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2901<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2902            </td>
2903
2904            <td class="entry_tags">
2905              <ul class="entry_tags">
2906                  <li><a href="#tag_BC">BC</a></li>
2907              </ul>
2908            </td>
2909
2910          </tr>
2911          <tr class="entries_header">
2912            <th class="th_details" colspan="5">Details</th>
2913          </tr>
2914          <tr class="entry_cont">
2915            <td class="entry_details" colspan="5">
2916              <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
2917Otherwise will always be present.<wbr/></p>
2918<p>The maximum number of focus areas supported by the device is determined by the value
2919of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
2920<p>The coordinate system is based on the active pixel array,<wbr/>
2921with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2922(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2923<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2924bottom-right pixel in the active pixel array.<wbr/></p>
2925<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2926for every pixel in the area.<wbr/> This means that a large metering area
2927with the same weight as a smaller area will have more effect in
2928the metering result.<wbr/> Metering areas can partially overlap and the
2929camera device will add the weights in the overlap region.<wbr/></p>
2930<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
2931is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
2932ignored.<wbr/></p>
2933<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2934camera device.<wbr/></p>
2935<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
2936capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2937region and output only the intersection rectangle as the metering region in the result
2938metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
2939not reported in the result metadata.<wbr/></p>
2940            </td>
2941          </tr>
2942
2943          <tr class="entries_header">
2944            <th class="th_details" colspan="5">HAL Implementation Details</th>
2945          </tr>
2946          <tr class="entry_cont">
2947            <td class="entry_details" colspan="5">
2948              <p>The HAL level representation of MeteringRectangle[] is a
2949int[5 * area_<wbr/>count].<wbr/>
2950Every five elements represent a metering region of
2951(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2952The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2953exclusive on xmax and ymax.<wbr/></p>
2954            </td>
2955          </tr>
2956
2957          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2958           <!-- end of entry -->
2959        
2960                
2961          <tr class="entry" id="controls_android.control.afTrigger">
2962            <td class="entry_name
2963             " rowspan="5">
2964              android.<wbr/>control.<wbr/>af<wbr/>Trigger
2965            </td>
2966            <td class="entry_type">
2967                <span class="entry_type_name entry_type_name_enum">byte</span>
2968
2969              <span class="entry_type_visibility"> [public]</span>
2970
2971
2972              <span class="entry_type_hwlevel">[legacy] </span>
2973
2974
2975
2976                <ul class="entry_type_enum">
2977                  <li>
2978                    <span class="entry_type_enum_name">IDLE</span>
2979                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2980                  </li>
2981                  <li>
2982                    <span class="entry_type_enum_name">START</span>
2983                    <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
2984                  </li>
2985                  <li>
2986                    <span class="entry_type_enum_name">CANCEL</span>
2987                    <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
2988state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
2989                  </li>
2990                </ul>
2991
2992            </td> <!-- entry_type -->
2993
2994            <td class="entry_description">
2995              <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
2996            </td>
2997
2998            <td class="entry_units">
2999            </td>
3000
3001            <td class="entry_range">
3002            </td>
3003
3004            <td class="entry_tags">
3005              <ul class="entry_tags">
3006                  <li><a href="#tag_BC">BC</a></li>
3007              </ul>
3008            </td>
3009
3010          </tr>
3011          <tr class="entries_header">
3012            <th class="th_details" colspan="5">Details</th>
3013          </tr>
3014          <tr class="entry_cont">
3015            <td class="entry_details" colspan="5">
3016              <p>This entry is normally set to IDLE,<wbr/> or is not
3017included at all in the request settings.<wbr/></p>
3018<p>When included and set to START,<wbr/> the camera device will trigger the
3019autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
3020<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
3021and return to its initial AF state.<wbr/></p>
3022<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
3023single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
3024START for multiple captures in a row means restarting the AF operation over
3025and over again.<wbr/></p>
3026<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>
3027<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>
3028simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
3029the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
3030focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
3031trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
3032changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
3033            </td>
3034          </tr>
3035
3036          <tr class="entries_header">
3037            <th class="th_details" colspan="5">HAL Implementation Details</th>
3038          </tr>
3039          <tr class="entry_cont">
3040            <td class="entry_details" colspan="5">
3041              <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
3042(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
3043treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
3044AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
3045to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
3046            </td>
3047          </tr>
3048
3049          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3050           <!-- end of entry -->
3051        
3052                
3053          <tr class="entry" id="controls_android.control.awbLock">
3054            <td class="entry_name
3055             " rowspan="3">
3056              android.<wbr/>control.<wbr/>awb<wbr/>Lock
3057            </td>
3058            <td class="entry_type">
3059                <span class="entry_type_name entry_type_name_enum">byte</span>
3060
3061              <span class="entry_type_visibility"> [public as boolean]</span>
3062
3063
3064              <span class="entry_type_hwlevel">[legacy] </span>
3065
3066
3067
3068                <ul class="entry_type_enum">
3069                  <li>
3070                    <span class="entry_type_enum_name">OFF</span>
3071                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
3072algorithm is free to update its parameters if in AUTO
3073mode.<wbr/></p></span>
3074                  </li>
3075                  <li>
3076                    <span class="entry_type_enum_name">ON</span>
3077                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
3078algorithm will not update its parameters while the lock
3079is active.<wbr/></p></span>
3080                  </li>
3081                </ul>
3082
3083            </td> <!-- entry_type -->
3084
3085            <td class="entry_description">
3086              <p>Whether auto-white balance (AWB) is currently locked to its
3087latest calculated values.<wbr/></p>
3088            </td>
3089
3090            <td class="entry_units">
3091            </td>
3092
3093            <td class="entry_range">
3094            </td>
3095
3096            <td class="entry_tags">
3097              <ul class="entry_tags">
3098                  <li><a href="#tag_BC">BC</a></li>
3099              </ul>
3100            </td>
3101
3102          </tr>
3103          <tr class="entries_header">
3104            <th class="th_details" colspan="5">Details</th>
3105          </tr>
3106          <tr class="entry_cont">
3107            <td class="entry_details" colspan="5">
3108              <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
3109and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
3110<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
3111get locked do not necessarily correspond to the settings that were present in the
3112latest capture result received from the camera device,<wbr/> since additional captures
3113and AWB updates may have occurred even before the result was sent out.<wbr/> If an
3114application is switching between automatic and manual control and wishes to eliminate
3115any flicker during the switch,<wbr/> the following procedure is recommended:</p>
3116<ol>
3117<li>Starting in auto-AWB mode:</li>
3118<li>Lock AWB</li>
3119<li>Wait for the first result to be output that has the AWB locked</li>
3120<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
3121<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
3122</ol>
3123<p>Note that AWB lock is only meaningful when
3124<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
3125AWB is already fixed to a specific setting.<wbr/></p>
3126<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
3127            </td>
3128          </tr>
3129
3130
3131          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3132           <!-- end of entry -->
3133        
3134                
3135          <tr class="entry" id="controls_android.control.awbMode">
3136            <td class="entry_name
3137             " rowspan="3">
3138              android.<wbr/>control.<wbr/>awb<wbr/>Mode
3139            </td>
3140            <td class="entry_type">
3141                <span class="entry_type_name entry_type_name_enum">byte</span>
3142
3143              <span class="entry_type_visibility"> [public]</span>
3144
3145
3146              <span class="entry_type_hwlevel">[legacy] </span>
3147
3148
3149
3150                <ul class="entry_type_enum">
3151                  <li>
3152                    <span class="entry_type_enum_name">OFF</span>
3153                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
3154<p>The application-selected color transform matrix
3155(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
3156(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
3157device for manual white balance control.<wbr/></p></span>
3158                  </li>
3159                  <li>
3160                    <span class="entry_type_enum_name">AUTO</span>
3161                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
3162<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3163and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3164For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3165values used by the camera device for the transform and gains
3166will be available in the capture result for this request.<wbr/></p></span>
3167                  </li>
3168                  <li>
3169                    <span class="entry_type_enum_name">INCANDESCENT</span>
3170                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3171the camera device uses incandescent light as the assumed scene
3172illumination for white balance.<wbr/></p>
3173<p>While the exact white balance transforms are up to the
3174camera device,<wbr/> they will approximately match the CIE
3175standard illuminant A.<wbr/></p>
3176<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3177and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3178For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3179values used by the camera device for the transform and gains
3180will be available in the capture result for this request.<wbr/></p></span>
3181                  </li>
3182                  <li>
3183                    <span class="entry_type_enum_name">FLUORESCENT</span>
3184                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3185the camera device uses fluorescent light as the assumed scene
3186illumination for white balance.<wbr/></p>
3187<p>While the exact white balance transforms are up to the
3188camera device,<wbr/> they will approximately match the CIE
3189standard illuminant F2.<wbr/></p>
3190<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3191and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3192For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3193values used by the camera device for the transform and gains
3194will be available in the capture result for this request.<wbr/></p></span>
3195                  </li>
3196                  <li>
3197                    <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
3198                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3199the camera device uses warm fluorescent light as the assumed scene
3200illumination for white balance.<wbr/></p>
3201<p>While the exact white balance transforms are up to the
3202camera device,<wbr/> they will approximately match the CIE
3203standard illuminant F4.<wbr/></p>
3204<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3205and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3206For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3207values used by the camera device for the transform and gains
3208will be available in the capture result for this request.<wbr/></p></span>
3209                  </li>
3210                  <li>
3211                    <span class="entry_type_enum_name">DAYLIGHT</span>
3212                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3213the camera device uses daylight light as the assumed scene
3214illumination for white balance.<wbr/></p>
3215<p>While the exact white balance transforms are up to the
3216camera device,<wbr/> they will approximately match the CIE
3217standard illuminant D65.<wbr/></p>
3218<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3219and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3220For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3221values used by the camera device for the transform and gains
3222will be available in the capture result for this request.<wbr/></p></span>
3223                  </li>
3224                  <li>
3225                    <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
3226                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3227the camera device uses cloudy daylight light as the assumed scene
3228illumination for white balance.<wbr/></p>
3229<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3230and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3231For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3232values used by the camera device for the transform and gains
3233will be available in the capture result for this request.<wbr/></p></span>
3234                  </li>
3235                  <li>
3236                    <span class="entry_type_enum_name">TWILIGHT</span>
3237                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3238the camera device uses twilight light as the assumed scene
3239illumination for white balance.<wbr/></p>
3240<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3241and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3242For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3243values used by the camera device for the transform and gains
3244will be available in the capture result for this request.<wbr/></p></span>
3245                  </li>
3246                  <li>
3247                    <span class="entry_type_enum_name">SHADE</span>
3248                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3249the camera device uses shade light as the assumed scene
3250illumination for white balance.<wbr/></p>
3251<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3252and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3253For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3254values used by the camera device for the transform and gains
3255will be available in the capture result for this request.<wbr/></p></span>
3256                  </li>
3257                </ul>
3258
3259            </td> <!-- entry_type -->
3260
3261            <td class="entry_description">
3262              <p>Whether auto-white balance (AWB) is currently setting the color
3263transform fields,<wbr/> and what its illumination target
3264is.<wbr/></p>
3265            </td>
3266
3267            <td class="entry_units">
3268            </td>
3269
3270            <td class="entry_range">
3271              <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
3272            </td>
3273
3274            <td class="entry_tags">
3275              <ul class="entry_tags">
3276                  <li><a href="#tag_BC">BC</a></li>
3277              </ul>
3278            </td>
3279
3280          </tr>
3281          <tr class="entries_header">
3282            <th class="th_details" colspan="5">Details</th>
3283          </tr>
3284          <tr class="entry_cont">
3285            <td class="entry_details" colspan="5">
3286              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
3287<p>When set to the ON mode,<wbr/> the camera device's auto-white balance
3288routine is enabled,<wbr/> overriding the application's selected
3289<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
3290<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>
3291is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
3292also 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
3293setting AE mode to OFF.<wbr/></p>
3294<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
3295routine is disabled.<wbr/> The application manually controls the white
3296balance 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>
3297and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
3298<p>When set to any other modes,<wbr/> the camera device's auto-white
3299balance routine is disabled.<wbr/> The camera device uses each
3300particular illumination target for white balance
3301adjustment.<wbr/> The application's values for
3302<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
3303<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3304<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
3305            </td>
3306          </tr>
3307
3308
3309          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3310           <!-- end of entry -->
3311        
3312                
3313          <tr class="entry" id="controls_android.control.awbRegions">
3314            <td class="entry_name
3315             " rowspan="5">
3316              android.<wbr/>control.<wbr/>awb<wbr/>Regions
3317            </td>
3318            <td class="entry_type">
3319                <span class="entry_type_name">int32</span>
3320                <span class="entry_type_container">x</span>
3321
3322                <span class="entry_type_array">
3323                  5 x area_count
3324                </span>
3325              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3326
3327
3328
3329
3330
3331
3332            </td> <!-- entry_type -->
3333
3334            <td class="entry_description">
3335              <p>List of metering areas to use for auto-white-balance illuminant
3336estimation.<wbr/></p>
3337            </td>
3338
3339            <td class="entry_units">
3340              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3341            </td>
3342
3343            <td class="entry_range">
3344              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3345<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3346            </td>
3347
3348            <td class="entry_tags">
3349              <ul class="entry_tags">
3350                  <li><a href="#tag_BC">BC</a></li>
3351              </ul>
3352            </td>
3353
3354          </tr>
3355          <tr class="entries_header">
3356            <th class="th_details" colspan="5">Details</th>
3357          </tr>
3358          <tr class="entry_cont">
3359            <td class="entry_details" colspan="5">
3360              <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
3361Otherwise will always be present.<wbr/></p>
3362<p>The maximum number of regions supported by the device is determined by the value
3363of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
3364<p>The coordinate system is based on the active pixel array,<wbr/>
3365with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3366(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3367<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3368bottom-right pixel in the active pixel array.<wbr/></p>
3369<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
3370for every pixel in the area.<wbr/> This means that a large metering area
3371with the same weight as a smaller area will have more effect in
3372the metering result.<wbr/> Metering areas can partially overlap and the
3373camera device will add the weights in the overlap region.<wbr/></p>
3374<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
3375only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
33760 weight is ignored.<wbr/></p>
3377<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3378camera device.<wbr/></p>
3379<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
3380capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3381region and output only the intersection rectangle as the metering region in the result
3382metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
3383not reported in the result metadata.<wbr/></p>
3384            </td>
3385          </tr>
3386
3387          <tr class="entries_header">
3388            <th class="th_details" colspan="5">HAL Implementation Details</th>
3389          </tr>
3390          <tr class="entry_cont">
3391            <td class="entry_details" colspan="5">
3392              <p>The HAL level representation of MeteringRectangle[] is a
3393int[5 * area_<wbr/>count].<wbr/>
3394Every five elements represent a metering region of
3395(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3396The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3397exclusive on xmax and ymax.<wbr/></p>
3398            </td>
3399          </tr>
3400
3401          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3402           <!-- end of entry -->
3403        
3404                
3405          <tr class="entry" id="controls_android.control.captureIntent">
3406            <td class="entry_name
3407             " rowspan="3">
3408              android.<wbr/>control.<wbr/>capture<wbr/>Intent
3409            </td>
3410            <td class="entry_type">
3411                <span class="entry_type_name entry_type_name_enum">byte</span>
3412
3413              <span class="entry_type_visibility"> [public]</span>
3414
3415
3416              <span class="entry_type_hwlevel">[legacy] </span>
3417
3418
3419
3420                <ul class="entry_type_enum">
3421                  <li>
3422                    <span class="entry_type_enum_name">CUSTOM</span>
3423                    <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
3424categories.<wbr/> The camera device will default to preview-like
3425behavior.<wbr/></p></span>
3426                  </li>
3427                  <li>
3428                    <span class="entry_type_enum_name">PREVIEW</span>
3429                    <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
3430<p>The precapture trigger may be used to start off a metering
3431w/<wbr/>flash sequence.<wbr/></p></span>
3432                  </li>
3433                  <li>
3434                    <span class="entry_type_enum_name">STILL_CAPTURE</span>
3435                    <span class="entry_type_enum_notes"><p>This request is for a still capture-type
3436use case.<wbr/></p>
3437<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
3438                  </li>
3439                  <li>
3440                    <span class="entry_type_enum_name">VIDEO_RECORD</span>
3441                    <span class="entry_type_enum_notes"><p>This request is for a video recording
3442use case.<wbr/></p></span>
3443                  </li>
3444                  <li>
3445                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
3446                    <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
3447image while recording video) use case.<wbr/></p>
3448<p>The camera device should take the highest-quality image
3449possible (given the other settings) without disrupting the
3450frame rate of video recording.<wbr/>  </p></span>
3451                  </li>
3452                  <li>
3453                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
3454                    <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
3455application will stream full-resolution images and
3456reprocess one or several later for a final
3457capture.<wbr/></p></span>
3458                  </li>
3459                  <li>
3460                    <span class="entry_type_enum_name">MANUAL</span>
3461                    <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
3462the applications want to directly control the capture parameters.<wbr/></p>
3463<p>For example,<wbr/> the application may wish to manually control
3464<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>
3465                  </li>
3466                </ul>
3467
3468            </td> <!-- entry_type -->
3469
3470            <td class="entry_description">
3471              <p>Information to the camera device 3A (auto-exposure,<wbr/>
3472auto-focus,<wbr/> auto-white balance) routines about the purpose
3473of this capture,<wbr/> to help the camera device to decide optimal 3A
3474strategy.<wbr/></p>
3475            </td>
3476
3477            <td class="entry_units">
3478            </td>
3479
3480            <td class="entry_range">
3481            </td>
3482
3483            <td class="entry_tags">
3484              <ul class="entry_tags">
3485                  <li><a href="#tag_BC">BC</a></li>
3486              </ul>
3487            </td>
3488
3489          </tr>
3490          <tr class="entries_header">
3491            <th class="th_details" colspan="5">Details</th>
3492          </tr>
3493          <tr class="entry_cont">
3494            <td class="entry_details" colspan="5">
3495              <p>This control (except for MANUAL) is only effective if
3496<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
3497<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
3498contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
3499<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
3500always supported.<wbr/></p>
3501            </td>
3502          </tr>
3503
3504
3505          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3506           <!-- end of entry -->
3507        
3508                
3509          <tr class="entry" id="controls_android.control.effectMode">
3510            <td class="entry_name
3511             " rowspan="3">
3512              android.<wbr/>control.<wbr/>effect<wbr/>Mode
3513            </td>
3514            <td class="entry_type">
3515                <span class="entry_type_name entry_type_name_enum">byte</span>
3516
3517              <span class="entry_type_visibility"> [public]</span>
3518
3519
3520              <span class="entry_type_hwlevel">[legacy] </span>
3521
3522
3523
3524                <ul class="entry_type_enum">
3525                  <li>
3526                    <span class="entry_type_enum_name">OFF</span>
3527                    <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
3528                  </li>
3529                  <li>
3530                    <span class="entry_type_enum_name">MONO</span>
3531                    <span class="entry_type_enum_optional">[optional]</span>
3532                    <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
3533a single color.<wbr/></p>
3534<p>This will typically be grayscale.<wbr/></p></span>
3535                  </li>
3536                  <li>
3537                    <span class="entry_type_enum_name">NEGATIVE</span>
3538                    <span class="entry_type_enum_optional">[optional]</span>
3539                    <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
3540are inverted.<wbr/></p></span>
3541                  </li>
3542                  <li>
3543                    <span class="entry_type_enum_name">SOLARIZE</span>
3544                    <span class="entry_type_enum_optional">[optional]</span>
3545                    <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
3546image is wholly or partially reversed in
3547tone.<wbr/></p></span>
3548                  </li>
3549                  <li>
3550                    <span class="entry_type_enum_name">SEPIA</span>
3551                    <span class="entry_type_enum_optional">[optional]</span>
3552                    <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
3553gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
3554                  </li>
3555                  <li>
3556                    <span class="entry_type_enum_name">POSTERIZE</span>
3557                    <span class="entry_type_enum_optional">[optional]</span>
3558                    <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
3559discrete regions of tone rather than a continuous
3560gradient of tones.<wbr/></p></span>
3561                  </li>
3562                  <li>
3563                    <span class="entry_type_enum_name">WHITEBOARD</span>
3564                    <span class="entry_type_enum_optional">[optional]</span>
3565                    <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
3566as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
3567                  </li>
3568                  <li>
3569                    <span class="entry_type_enum_name">BLACKBOARD</span>
3570                    <span class="entry_type_enum_optional">[optional]</span>
3571                    <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
3572as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
3573                  </li>
3574                  <li>
3575                    <span class="entry_type_enum_name">AQUA</span>
3576                    <span class="entry_type_enum_optional">[optional]</span>
3577                    <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
3578                  </li>
3579                </ul>
3580
3581            </td> <!-- entry_type -->
3582
3583            <td class="entry_description">
3584              <p>A special color effect to apply.<wbr/></p>
3585            </td>
3586
3587            <td class="entry_units">
3588            </td>
3589
3590            <td class="entry_range">
3591              <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
3592            </td>
3593
3594            <td class="entry_tags">
3595              <ul class="entry_tags">
3596                  <li><a href="#tag_BC">BC</a></li>
3597              </ul>
3598            </td>
3599
3600          </tr>
3601          <tr class="entries_header">
3602            <th class="th_details" colspan="5">Details</th>
3603          </tr>
3604          <tr class="entry_cont">
3605            <td class="entry_details" colspan="5">
3606              <p>When this mode is set,<wbr/> a color effect will be applied
3607to images produced by the camera device.<wbr/> The interpretation
3608and implementation of these color effects is left to the
3609implementor of the camera device,<wbr/> and should not be
3610depended on to be consistent (or present) across all
3611devices.<wbr/></p>
3612            </td>
3613          </tr>
3614
3615
3616          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3617           <!-- end of entry -->
3618        
3619                
3620          <tr class="entry" id="controls_android.control.mode">
3621            <td class="entry_name
3622             " rowspan="3">
3623              android.<wbr/>control.<wbr/>mode
3624            </td>
3625            <td class="entry_type">
3626                <span class="entry_type_name entry_type_name_enum">byte</span>
3627
3628              <span class="entry_type_visibility"> [public]</span>
3629
3630
3631              <span class="entry_type_hwlevel">[legacy] </span>
3632
3633
3634
3635                <ul class="entry_type_enum">
3636                  <li>
3637                    <span class="entry_type_enum_name">OFF</span>
3638                    <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
3639<p>All control by the device's metering and focusing (3A)
3640routines is disabled,<wbr/> and no other settings in
3641android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
3642<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
3643device to select post-processing values for processing
3644blocks that do not allow for manual control,<wbr/> or are not
3645exposed by the camera API.<wbr/></p>
3646<p>However,<wbr/> the camera device's 3A routines may continue to
3647collect statistics and update their internal state so that
3648when control is switched to AUTO mode,<wbr/> good control values
3649can be immediately applied.<wbr/></p></span>
3650                  </li>
3651                  <li>
3652                    <span class="entry_type_enum_name">AUTO</span>
3653                    <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
3654<p>Manual control of capture parameters is disabled.<wbr/> All
3655controls in android.<wbr/>control.<wbr/>* besides sceneMode take
3656effect.<wbr/></p></span>
3657                  </li>
3658                  <li>
3659                    <span class="entry_type_enum_name">USE_SCENE_MODE</span>
3660                    <span class="entry_type_enum_optional">[optional]</span>
3661                    <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
3662<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
3663control.<wbr/>afMode controls; the camera device will ignore
3664those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
3665FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
3666This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
3667<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
3668contain some modes other than DISABLED).<wbr/></p></span>
3669                  </li>
3670                  <li>
3671                    <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
3672                    <span class="entry_type_enum_optional">[optional]</span>
3673                    <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
3674used by camera device background auto-exposure,<wbr/> auto-white balance and
3675auto-focus algorithms (3A) to update their statistics.<wbr/></p>
3676<p>Specifically,<wbr/> the 3A routines are locked to the last
3677values set from a request with AUTO,<wbr/> OFF,<wbr/> or
3678USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
3679collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
3680discarded by the camera device.<wbr/></p></span>
3681                  </li>
3682                </ul>
3683
3684            </td> <!-- entry_type -->
3685
3686            <td class="entry_description">
3687              <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
3688routines.<wbr/></p>
3689            </td>
3690
3691            <td class="entry_units">
3692            </td>
3693
3694            <td class="entry_range">
3695              <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
3696            </td>
3697
3698            <td class="entry_tags">
3699              <ul class="entry_tags">
3700                  <li><a href="#tag_BC">BC</a></li>
3701              </ul>
3702            </td>
3703
3704          </tr>
3705          <tr class="entries_header">
3706            <th class="th_details" colspan="5">Details</th>
3707          </tr>
3708          <tr class="entry_cont">
3709            <td class="entry_details" colspan="5">
3710              <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
3711by the camera device is disabled.<wbr/> The application must set the fields for
3712capture parameters itself.<wbr/></p>
3713<p>When set to AUTO,<wbr/> the individual algorithm controls in
3714android.<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>
3715<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
3716android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
3717one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
3718as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
3719<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
3720<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
3721is that this frame will not be used by camera device background 3A statistics
3722update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
3723where the application doesn't want a 3A manual control capture to affect
3724the subsequent auto 3A capture results.<wbr/></p>
3725            </td>
3726          </tr>
3727
3728
3729          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3730           <!-- end of entry -->
3731        
3732                
3733          <tr class="entry" id="controls_android.control.sceneMode">
3734            <td class="entry_name
3735             " rowspan="5">
3736              android.<wbr/>control.<wbr/>scene<wbr/>Mode
3737            </td>
3738            <td class="entry_type">
3739                <span class="entry_type_name entry_type_name_enum">byte</span>
3740
3741              <span class="entry_type_visibility"> [public]</span>
3742
3743
3744              <span class="entry_type_hwlevel">[legacy] </span>
3745
3746
3747
3748                <ul class="entry_type_enum">
3749                  <li>
3750                    <span class="entry_type_enum_name">DISABLED</span>
3751                    <span class="entry_type_enum_value">0</span>
3752                    <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
3753                  </li>
3754                  <li>
3755                    <span class="entry_type_enum_name">FACE_PRIORITY</span>
3756                    <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
3757detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
3758auto-exposure routines.<wbr/></p>
3759<p>If face detection statistics are disabled
3760(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/>
3761this should still operate correctly (but will not return
3762face detection statistics to the framework).<wbr/></p>
3763<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3764<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>
3765remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
3766                  </li>
3767                  <li>
3768                    <span class="entry_type_enum_name">ACTION</span>
3769                    <span class="entry_type_enum_optional">[optional]</span>
3770                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
3771<p>Similar to SPORTS.<wbr/></p></span>
3772                  </li>
3773                  <li>
3774                    <span class="entry_type_enum_name">PORTRAIT</span>
3775                    <span class="entry_type_enum_optional">[optional]</span>
3776                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
3777                  </li>
3778                  <li>
3779                    <span class="entry_type_enum_name">LANDSCAPE</span>
3780                    <span class="entry_type_enum_optional">[optional]</span>
3781                    <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
3782                  </li>
3783                  <li>
3784                    <span class="entry_type_enum_name">NIGHT</span>
3785                    <span class="entry_type_enum_optional">[optional]</span>
3786                    <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
3787                  </li>
3788                  <li>
3789                    <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
3790                    <span class="entry_type_enum_optional">[optional]</span>
3791                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
3792settings.<wbr/></p></span>
3793                  </li>
3794                  <li>
3795                    <span class="entry_type_enum_name">THEATRE</span>
3796                    <span class="entry_type_enum_optional">[optional]</span>
3797                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
3798remain off.<wbr/></p></span>
3799                  </li>
3800                  <li>
3801                    <span class="entry_type_enum_name">BEACH</span>
3802                    <span class="entry_type_enum_optional">[optional]</span>
3803                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
3804                  </li>
3805                  <li>
3806                    <span class="entry_type_enum_name">SNOW</span>
3807                    <span class="entry_type_enum_optional">[optional]</span>
3808                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
3809                  </li>
3810                  <li>
3811                    <span class="entry_type_enum_name">SUNSET</span>
3812                    <span class="entry_type_enum_optional">[optional]</span>
3813                    <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
3814                  </li>
3815                  <li>
3816                    <span class="entry_type_enum_name">STEADYPHOTO</span>
3817                    <span class="entry_type_enum_optional">[optional]</span>
3818                    <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
3819device motion (for example: due to hand shake).<wbr/></p></span>
3820                  </li>
3821                  <li>
3822                    <span class="entry_type_enum_name">FIREWORKS</span>
3823                    <span class="entry_type_enum_optional">[optional]</span>
3824                    <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
3825                  </li>
3826                  <li>
3827                    <span class="entry_type_enum_name">SPORTS</span>
3828                    <span class="entry_type_enum_optional">[optional]</span>
3829                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
3830<p>Similar to ACTION.<wbr/></p></span>
3831                  </li>
3832                  <li>
3833                    <span class="entry_type_enum_name">PARTY</span>
3834                    <span class="entry_type_enum_optional">[optional]</span>
3835                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
3836people.<wbr/></p></span>
3837                  </li>
3838                  <li>
3839                    <span class="entry_type_enum_name">CANDLELIGHT</span>
3840                    <span class="entry_type_enum_optional">[optional]</span>
3841                    <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
3842is a flame.<wbr/></p></span>
3843                  </li>
3844                  <li>
3845                    <span class="entry_type_enum_name">BARCODE</span>
3846                    <span class="entry_type_enum_optional">[optional]</span>
3847                    <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
3848for use by camera applications that wish to read the
3849barcode value.<wbr/></p></span>
3850                  </li>
3851                  <li>
3852                    <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
3853                    <span class="entry_type_enum_deprecated">[deprecated]</span>
3854                    <span class="entry_type_enum_optional">[optional]</span>
3855                    <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>
3856and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
3857for high speed video recording.<wbr/></p>
3858<p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
3859<p>The supported high speed video sizes and fps ranges are specified in
3860<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
3861output frame rates,<wbr/> the application is only allowed to select video size
3862and fps range combinations listed in this static metadata.<wbr/> The fps range
3863can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
3864<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
3865ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
3866controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
3867and post-processing parameters is possible.<wbr/> All other controls operate the
3868same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
3869android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
3870<ul>
3871<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
3872<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
3873<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
3874<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
3875<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
3876<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
3877<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
3878<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
3879<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
3880<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
3881</ul>
3882<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
3883<ul>
3884<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>
3885<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
3886<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
3887<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
3888</ul>
3889<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
3890be lower than what camera can output,<wbr/> depending on the destination Surfaces for
3891the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
3892the application need check if the video encoder is capable of supporting the
3893high frame rate for a given video size,<wbr/> or it will end up with lower recording
3894frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
3895rate will be bounded by the screen refresh rate.<wbr/></p>
3896<p>The camera device will only support up to 2 output high speed streams
3897(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
3898in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
3899<ul>
3900<li>The application created no more than maxNumHighSpeedStreams processed non-stalling
3901format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
3902min(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>
3903<li>The stream sizes are selected from the sizes reported by
3904<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
3905<li>No processed non-stalling or raw streams are configured.<wbr/></li>
3906</ul>
3907<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
3908<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/>
3909the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
3910and the returned capture result metadata will give the fps range choosen
3911by the camera device.<wbr/></p>
3912<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
3913reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
3914the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
3915                  </li>
3916                  <li>
3917                    <span class="entry_type_enum_name">HDR</span>
3918                    <span class="entry_type_enum_optional">[optional]</span>
3919                    <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
3920<p>In this scene mode,<wbr/> the camera device captures images
3921that keep a larger range of scene illumination levels
3922visible in the final image.<wbr/> For example,<wbr/> when taking a
3923picture of a object in front of a bright window,<wbr/> both
3924the object and the scene through the window may be
3925visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
3926one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
3927HDR mode generally takes much longer to capture a single
3928image,<wbr/> has no user control,<wbr/> and may have other artifacts
3929depending on the HDR method used.<wbr/></p>
3930<p>Therefore,<wbr/> HDR captures operate at a much slower rate
3931than regular captures.<wbr/></p>
3932<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
3933is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
3934STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
3935using a high dynamic range capture technique.<wbr/>  On LEGACY
3936devices,<wbr/> captures that target a JPEG-format output will
3937be captured with HDR,<wbr/> and the capture intent is not
3938relevant.<wbr/></p>
3939<p>The HDR capture may involve the device capturing a burst
3940of images internally and combining them into one,<wbr/> or it
3941may involve the device using specialized high dynamic
3942range capture hardware.<wbr/> In all cases,<wbr/> a single image is
3943produced in response to a capture request submitted
3944while in HDR mode.<wbr/></p>
3945<p>Since substantial post-processing is generally needed to
3946produce an HDR image,<wbr/> only YUV and JPEG outputs are
3947supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only
3948JPEG outputs are supported for LEGACY HDR
3949captures.<wbr/> Using a RAW output for HDR capture is not
3950supported.<wbr/></p></span>
3951                  </li>
3952                  <li>
3953                    <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span>
3954                    <span class="entry_type_enum_optional">[optional]</span>
3955                    <span class="entry_type_enum_hidden">[hidden]</span>
3956                    <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
3957device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
3958under low light conditions.<wbr/></p>
3959<p>The camera device may be tuned to expose the images in a reduced
3960sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
3961if 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/>
3962the camera device auto-exposure routine tuning process may limit the actual
3963exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
3964exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
3965low light may be under-exposed when the sensor max exposure time (bounded by the
3966<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
3967ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
3968camera device auto-exposure routine to increase the sensitivity up to the max
3969sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
3970dark and the max exposure time is reached.<wbr/> The captured images may be noisier
3971compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
3972recommended that the application only use this scene mode when it is capable of
3973reducing the noise level of the captured images.<wbr/></p>
3974<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3975<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>
3976remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
3977                  </li>
3978                </ul>
3979
3980            </td> <!-- entry_type -->
3981
3982            <td class="entry_description">
3983              <p>Control for which scene mode is currently active.<wbr/></p>
3984            </td>
3985
3986            <td class="entry_units">
3987            </td>
3988
3989            <td class="entry_range">
3990              <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
3991            </td>
3992
3993            <td class="entry_tags">
3994              <ul class="entry_tags">
3995                  <li><a href="#tag_BC">BC</a></li>
3996              </ul>
3997            </td>
3998
3999          </tr>
4000          <tr class="entries_header">
4001            <th class="th_details" colspan="5">Details</th>
4002          </tr>
4003          <tr class="entry_cont">
4004            <td class="entry_details" colspan="5">
4005              <p>Scene modes are custom camera modes optimized for a certain set of conditions and
4006capture settings.<wbr/></p>
4007<p>This is the mode that that is active when
4008<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
4009disable <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>
4010while in use.<wbr/></p>
4011<p>The interpretation and implementation of these scene modes is left
4012to the implementor of the camera device.<wbr/> Their behavior will not be
4013consistent across all devices,<wbr/> and any given device may only implement
4014a subset of these modes.<wbr/></p>
4015            </td>
4016          </tr>
4017
4018          <tr class="entries_header">
4019            <th class="th_details" colspan="5">HAL Implementation Details</th>
4020          </tr>
4021          <tr class="entry_cont">
4022            <td class="entry_details" colspan="5">
4023              <p>HAL implementations that include scene modes are expected to provide
4024the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4025<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
4026<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
4027<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/>
4028the HAL must list supported video size and fps range in
4029<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/>
40301280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming
4031mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture
4032requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/>
4033This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
4034<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
4035capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
4036            </td>
4037          </tr>
4038
4039          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4040           <!-- end of entry -->
4041        
4042                
4043          <tr class="entry" id="controls_android.control.videoStabilizationMode">
4044            <td class="entry_name
4045             " rowspan="3">
4046              android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
4047            </td>
4048            <td class="entry_type">
4049                <span class="entry_type_name entry_type_name_enum">byte</span>
4050
4051              <span class="entry_type_visibility"> [public]</span>
4052
4053
4054              <span class="entry_type_hwlevel">[legacy] </span>
4055
4056
4057
4058                <ul class="entry_type_enum">
4059                  <li>
4060                    <span class="entry_type_enum_name">OFF</span>
4061                    <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
4062                  </li>
4063                  <li>
4064                    <span class="entry_type_enum_name">ON</span>
4065                    <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
4066                  </li>
4067                </ul>
4068
4069            </td> <!-- entry_type -->
4070
4071            <td class="entry_description">
4072              <p>Whether video stabilization is
4073active.<wbr/></p>
4074            </td>
4075
4076            <td class="entry_units">
4077            </td>
4078
4079            <td class="entry_range">
4080            </td>
4081
4082            <td class="entry_tags">
4083              <ul class="entry_tags">
4084                  <li><a href="#tag_BC">BC</a></li>
4085              </ul>
4086            </td>
4087
4088          </tr>
4089          <tr class="entries_header">
4090            <th class="th_details" colspan="5">Details</th>
4091          </tr>
4092          <tr class="entry_cont">
4093            <td class="entry_details" colspan="5">
4094              <p>Video stabilization automatically warps images from
4095the camera in order to stabilize motion between consecutive frames.<wbr/></p>
4096<p>If enabled,<wbr/> video stabilization can modify the
4097<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
4098<p>Switching between different video stabilization modes may take several
4099frames to initialize,<wbr/> the camera device will report the current mode
4100in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
4101the video stabilization modes in the first several capture results may
4102still be "OFF",<wbr/> and it will become "ON" when the initialization is
4103done.<wbr/></p>
4104<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
4105stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
4106that an output targeting a MediaRecorder or MediaCodec will be stabilized if
4107the recording resolution is less than or equal to 1920 x 1080 (width less than
4108or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
4109frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
4110<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
4111OFF if the recording output is not stabilized,<wbr/> or if there are no output
4112Surface types that can be stabilized.<wbr/></p>
4113<p>If a camera device supports both this mode and OIS
4114(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
4115produce undesirable interaction,<wbr/> so it is recommended not to enable
4116both at the same time.<wbr/></p>
4117            </td>
4118          </tr>
4119
4120
4121          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4122           <!-- end of entry -->
4123        
4124        
4125
4126      <!-- end of kind -->
4127      </tbody>
4128      <tr><td colspan="6" class="kind">static</td></tr>
4129
4130      <thead class="entries_header">
4131        <tr>
4132          <th class="th_name">Property Name</th>
4133          <th class="th_type">Type</th>
4134          <th class="th_description">Description</th>
4135          <th class="th_units">Units</th>
4136          <th class="th_range">Range</th>
4137          <th class="th_tags">Tags</th>
4138        </tr>
4139      </thead>
4140
4141      <tbody>
4142
4143        
4144
4145        
4146
4147        
4148
4149        
4150
4151                
4152          <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
4153            <td class="entry_name
4154             " rowspan="3">
4155              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
4156            </td>
4157            <td class="entry_type">
4158                <span class="entry_type_name">byte</span>
4159                <span class="entry_type_container">x</span>
4160
4161                <span class="entry_type_array">
4162                  n
4163                </span>
4164              <span class="entry_type_visibility"> [public as enumList]</span>
4165
4166
4167              <span class="entry_type_hwlevel">[legacy] </span>
4168
4169
4170                <div class="entry_type_notes">list of enums</div>
4171
4172
4173            </td> <!-- entry_type -->
4174
4175            <td class="entry_description">
4176              <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
4177supported by this camera device.<wbr/></p>
4178            </td>
4179
4180            <td class="entry_units">
4181            </td>
4182
4183            <td class="entry_range">
4184              <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
4185            </td>
4186
4187            <td class="entry_tags">
4188              <ul class="entry_tags">
4189                  <li><a href="#tag_BC">BC</a></li>
4190              </ul>
4191            </td>
4192
4193          </tr>
4194          <tr class="entries_header">
4195            <th class="th_details" colspan="5">Details</th>
4196          </tr>
4197          <tr class="entry_cont">
4198            <td class="entry_details" colspan="5">
4199              <p>Not all of the auto-exposure anti-banding modes may be
4200supported by a given camera device.<wbr/> This field lists the
4201valid anti-banding modes that the application may request
4202for this camera device with the
4203<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
4204            </td>
4205          </tr>
4206
4207
4208          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4209           <!-- end of entry -->
4210        
4211                
4212          <tr class="entry" id="static_android.control.aeAvailableModes">
4213            <td class="entry_name
4214             " rowspan="3">
4215              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
4216            </td>
4217            <td class="entry_type">
4218                <span class="entry_type_name">byte</span>
4219                <span class="entry_type_container">x</span>
4220
4221                <span class="entry_type_array">
4222                  n
4223                </span>
4224              <span class="entry_type_visibility"> [public as enumList]</span>
4225
4226
4227              <span class="entry_type_hwlevel">[legacy] </span>
4228
4229
4230                <div class="entry_type_notes">list of enums</div>
4231
4232
4233            </td> <!-- entry_type -->
4234
4235            <td class="entry_description">
4236              <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
4237device.<wbr/></p>
4238            </td>
4239
4240            <td class="entry_units">
4241            </td>
4242
4243            <td class="entry_range">
4244              <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
4245            </td>
4246
4247            <td class="entry_tags">
4248              <ul class="entry_tags">
4249                  <li><a href="#tag_BC">BC</a></li>
4250              </ul>
4251            </td>
4252
4253          </tr>
4254          <tr class="entries_header">
4255            <th class="th_details" colspan="5">Details</th>
4256          </tr>
4257          <tr class="entry_cont">
4258            <td class="entry_details" colspan="5">
4259              <p>Not all the auto-exposure modes may be supported by a
4260given camera device,<wbr/> especially if no flash unit is
4261available.<wbr/> This entry lists the valid modes for
4262<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
4263<p>All camera devices support ON,<wbr/> and all camera devices with flash
4264units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
4265<p>FULL mode camera devices always support OFF mode,<wbr/>
4266which enables application control of camera exposure time,<wbr/>
4267sensitivity,<wbr/> and frame duration.<wbr/></p>
4268<p>LEGACY mode camera devices never support OFF mode.<wbr/>
4269LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR
4270capability.<wbr/></p>
4271            </td>
4272          </tr>
4273
4274
4275          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4276           <!-- end of entry -->
4277        
4278                
4279          <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
4280            <td class="entry_name
4281             " rowspan="3">
4282              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
4283            </td>
4284            <td class="entry_type">
4285                <span class="entry_type_name">int32</span>
4286                <span class="entry_type_container">x</span>
4287
4288                <span class="entry_type_array">
4289                  2 x n
4290                </span>
4291              <span class="entry_type_visibility"> [public as rangeInt]</span>
4292
4293
4294              <span class="entry_type_hwlevel">[legacy] </span>
4295
4296
4297                <div class="entry_type_notes">list of pairs of frame rates</div>
4298
4299
4300            </td> <!-- entry_type -->
4301
4302            <td class="entry_description">
4303              <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
4304this camera device.<wbr/></p>
4305            </td>
4306
4307            <td class="entry_units">
4308              Frames per second (FPS)
4309            </td>
4310
4311            <td class="entry_range">
4312            </td>
4313
4314            <td class="entry_tags">
4315              <ul class="entry_tags">
4316                  <li><a href="#tag_BC">BC</a></li>
4317              </ul>
4318            </td>
4319
4320          </tr>
4321          <tr class="entries_header">
4322            <th class="th_details" colspan="5">Details</th>
4323          </tr>
4324          <tr class="entry_cont">
4325            <td class="entry_details" colspan="5">
4326              <p>For devices at the LEGACY level or above:</p>
4327<ul>
4328<li>
4329<p>For constant-framerate recording,<wbr/> for each normal
4330<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a
4331<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4332<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in
4333the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/>
4334<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is
4335supported by the device and has
4336<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will
4337always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p>
4338</li>
4339<li>
4340<p>Also,<wbr/> a camera device must either not support any
4341<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/>
4342or support at least one
4343normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4344<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> &gt;= 24.<wbr/></p>
4345</li>
4346</ul>
4347<p>For devices at the LIMITED level or above:</p>
4348<ul>
4349<li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>)
4350and (<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> &lt;= 15 and <code>max</code> = the maximum output frame rate of the
4351maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li>
4352</ul>
4353            </td>
4354          </tr>
4355
4356
4357          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4358           <!-- end of entry -->
4359        
4360                
4361          <tr class="entry" id="static_android.control.aeCompensationRange">
4362            <td class="entry_name
4363             " rowspan="1">
4364              android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
4365            </td>
4366            <td class="entry_type">
4367                <span class="entry_type_name">int32</span>
4368                <span class="entry_type_container">x</span>
4369
4370                <span class="entry_type_array">
4371                  2
4372                </span>
4373              <span class="entry_type_visibility"> [public as rangeInt]</span>
4374
4375
4376              <span class="entry_type_hwlevel">[legacy] </span>
4377
4378
4379
4380
4381            </td> <!-- entry_type -->
4382
4383            <td class="entry_description">
4384              <p>Maximum and minimum exposure compensation values for
4385<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/>
4386that are supported by this camera device.<wbr/></p>
4387            </td>
4388
4389            <td class="entry_units">
4390            </td>
4391
4392            <td class="entry_range">
4393              <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
4394<p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
4395compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
4396<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>
4397<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>
4398<p>LEGACY devices may support a smaller range than this.<wbr/></p>
4399            </td>
4400
4401            <td class="entry_tags">
4402              <ul class="entry_tags">
4403                  <li><a href="#tag_BC">BC</a></li>
4404              </ul>
4405            </td>
4406
4407          </tr>
4408
4409
4410          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4411           <!-- end of entry -->
4412        
4413                
4414          <tr class="entry" id="static_android.control.aeCompensationStep">
4415            <td class="entry_name
4416             " rowspan="5">
4417              android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
4418            </td>
4419            <td class="entry_type">
4420                <span class="entry_type_name">rational</span>
4421
4422              <span class="entry_type_visibility"> [public]</span>
4423
4424
4425              <span class="entry_type_hwlevel">[legacy] </span>
4426
4427
4428
4429
4430            </td> <!-- entry_type -->
4431
4432            <td class="entry_description">
4433              <p>Smallest step by which the exposure compensation
4434can be changed.<wbr/></p>
4435            </td>
4436
4437            <td class="entry_units">
4438              Exposure Value (EV)
4439            </td>
4440
4441            <td class="entry_range">
4442            </td>
4443
4444            <td class="entry_tags">
4445              <ul class="entry_tags">
4446                  <li><a href="#tag_BC">BC</a></li>
4447              </ul>
4448            </td>
4449
4450          </tr>
4451          <tr class="entries_header">
4452            <th class="th_details" colspan="5">Details</th>
4453          </tr>
4454          <tr class="entry_cont">
4455            <td class="entry_details" colspan="5">
4456              <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
4457a 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
4458that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
4459<p>One unit of EV compensation changes the brightness of the captured image by a factor
4460of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p>
4461            </td>
4462          </tr>
4463
4464          <tr class="entries_header">
4465            <th class="th_details" colspan="5">HAL Implementation Details</th>
4466          </tr>
4467          <tr class="entry_cont">
4468            <td class="entry_details" colspan="5">
4469              <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
4470            </td>
4471          </tr>
4472
4473          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4474           <!-- end of entry -->
4475        
4476                
4477          <tr class="entry" id="static_android.control.afAvailableModes">
4478            <td class="entry_name
4479             " rowspan="3">
4480              android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
4481            </td>
4482            <td class="entry_type">
4483                <span class="entry_type_name">byte</span>
4484                <span class="entry_type_container">x</span>
4485
4486                <span class="entry_type_array">
4487                  n
4488                </span>
4489              <span class="entry_type_visibility"> [public as enumList]</span>
4490
4491
4492              <span class="entry_type_hwlevel">[legacy] </span>
4493
4494
4495                <div class="entry_type_notes">List of enums</div>
4496
4497
4498            </td> <!-- entry_type -->
4499
4500            <td class="entry_description">
4501              <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are
4502supported by this camera device.<wbr/></p>
4503            </td>
4504
4505            <td class="entry_units">
4506            </td>
4507
4508            <td class="entry_range">
4509              <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
4510            </td>
4511
4512            <td class="entry_tags">
4513              <ul class="entry_tags">
4514                  <li><a href="#tag_BC">BC</a></li>
4515              </ul>
4516            </td>
4517
4518          </tr>
4519          <tr class="entries_header">
4520            <th class="th_details" colspan="5">Details</th>
4521          </tr>
4522          <tr class="entry_cont">
4523            <td class="entry_details" colspan="5">
4524              <p>Not all the auto-focus modes may be supported by a
4525given camera device.<wbr/> This entry lists the valid modes for
4526<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
4527<p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all
4528camera devices with adjustable focuser units
4529(<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>
4530<p>LEGACY devices will support OFF mode only if they support
4531focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to
4532<code>0.<wbr/>0f</code>).<wbr/></p>
4533            </td>
4534          </tr>
4535
4536
4537          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4538           <!-- end of entry -->
4539        
4540                
4541          <tr class="entry" id="static_android.control.availableEffects">
4542            <td class="entry_name
4543             " rowspan="3">
4544              android.<wbr/>control.<wbr/>available<wbr/>Effects
4545            </td>
4546            <td class="entry_type">
4547                <span class="entry_type_name">byte</span>
4548                <span class="entry_type_container">x</span>
4549
4550                <span class="entry_type_array">
4551                  n
4552                </span>
4553              <span class="entry_type_visibility"> [public as enumList]</span>
4554
4555
4556              <span class="entry_type_hwlevel">[legacy] </span>
4557
4558
4559                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
4560
4561
4562            </td> <!-- entry_type -->
4563
4564            <td class="entry_description">
4565              <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
4566device.<wbr/></p>
4567            </td>
4568
4569            <td class="entry_units">
4570            </td>
4571
4572            <td class="entry_range">
4573              <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
4574            </td>
4575
4576            <td class="entry_tags">
4577              <ul class="entry_tags">
4578                  <li><a href="#tag_BC">BC</a></li>
4579              </ul>
4580            </td>
4581
4582          </tr>
4583          <tr class="entries_header">
4584            <th class="th_details" colspan="5">Details</th>
4585          </tr>
4586          <tr class="entry_cont">
4587            <td class="entry_details" colspan="5">
4588              <p>This list contains the color effect modes that can be applied to
4589images produced by the camera device.<wbr/>
4590Implementations are not expected to be consistent across all devices.<wbr/>
4591If no color effect modes are available for a device,<wbr/> this will only list
4592OFF.<wbr/></p>
4593<p>A color effect will only be applied if
4594<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/>  OFF is always included in this list.<wbr/></p>
4595<p>This control has no effect on the operation of other control routines such
4596as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p>
4597            </td>
4598          </tr>
4599
4600
4601          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4602           <!-- end of entry -->
4603        
4604                
4605          <tr class="entry" id="static_android.control.availableSceneModes">
4606            <td class="entry_name
4607             " rowspan="3">
4608              android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
4609            </td>
4610            <td class="entry_type">
4611                <span class="entry_type_name">byte</span>
4612                <span class="entry_type_container">x</span>
4613
4614                <span class="entry_type_array">
4615                  n
4616                </span>
4617              <span class="entry_type_visibility"> [public as enumList]</span>
4618
4619
4620              <span class="entry_type_hwlevel">[legacy] </span>
4621
4622
4623                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
4624
4625
4626            </td> <!-- entry_type -->
4627
4628            <td class="entry_description">
4629              <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
4630device.<wbr/></p>
4631            </td>
4632
4633            <td class="entry_units">
4634            </td>
4635
4636            <td class="entry_range">
4637              <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
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 list contains scene modes that can be set for the camera device.<wbr/>
4653Only scene modes that have been fully implemented for the
4654camera device may be included here.<wbr/> Implementations are not expected
4655to be consistent across all devices.<wbr/></p>
4656<p>If no scene modes are supported by the camera device,<wbr/> this
4657will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p>
4658<p>FACE_<wbr/>PRIORITY is always listed if face detection is
4659supported (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;
46600</code>).<wbr/></p>
4661            </td>
4662          </tr>
4663
4664
4665          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4666           <!-- end of entry -->
4667        
4668                
4669          <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
4670            <td class="entry_name
4671             " rowspan="3">
4672              android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
4673            </td>
4674            <td class="entry_type">
4675                <span class="entry_type_name">byte</span>
4676                <span class="entry_type_container">x</span>
4677
4678                <span class="entry_type_array">
4679                  n
4680                </span>
4681              <span class="entry_type_visibility"> [public as enumList]</span>
4682
4683
4684              <span class="entry_type_hwlevel">[legacy] </span>
4685
4686
4687                <div class="entry_type_notes">List of enums.<wbr/></div>
4688
4689
4690            </td> <!-- entry_type -->
4691
4692            <td class="entry_description">
4693              <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>
4694that are supported by this camera device.<wbr/></p>
4695            </td>
4696
4697            <td class="entry_units">
4698            </td>
4699
4700            <td class="entry_range">
4701              <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
4702            </td>
4703
4704            <td class="entry_tags">
4705              <ul class="entry_tags">
4706                  <li><a href="#tag_BC">BC</a></li>
4707              </ul>
4708            </td>
4709
4710          </tr>
4711          <tr class="entries_header">
4712            <th class="th_details" colspan="5">Details</th>
4713          </tr>
4714          <tr class="entry_cont">
4715            <td class="entry_details" colspan="5">
4716              <p>OFF will always be listed.<wbr/></p>
4717            </td>
4718          </tr>
4719
4720
4721          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4722           <!-- end of entry -->
4723        
4724                
4725          <tr class="entry" id="static_android.control.awbAvailableModes">
4726            <td class="entry_name
4727             " rowspan="3">
4728              android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
4729            </td>
4730            <td class="entry_type">
4731                <span class="entry_type_name">byte</span>
4732                <span class="entry_type_container">x</span>
4733
4734                <span class="entry_type_array">
4735                  n
4736                </span>
4737              <span class="entry_type_visibility"> [public as enumList]</span>
4738
4739
4740              <span class="entry_type_hwlevel">[legacy] </span>
4741
4742
4743                <div class="entry_type_notes">List of enums</div>
4744
4745
4746            </td> <!-- entry_type -->
4747
4748            <td class="entry_description">
4749              <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
4750camera device.<wbr/></p>
4751            </td>
4752
4753            <td class="entry_units">
4754            </td>
4755
4756            <td class="entry_range">
4757              <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
4758            </td>
4759
4760            <td class="entry_tags">
4761              <ul class="entry_tags">
4762                  <li><a href="#tag_BC">BC</a></li>
4763              </ul>
4764            </td>
4765
4766          </tr>
4767          <tr class="entries_header">
4768            <th class="th_details" colspan="5">Details</th>
4769          </tr>
4770          <tr class="entry_cont">
4771            <td class="entry_details" colspan="5">
4772              <p>Not all the auto-white-balance modes may be supported by a
4773given camera device.<wbr/> This entry lists the valid modes for
4774<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
4775<p>All camera devices will support ON mode.<wbr/></p>
4776<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF
4777mode,<wbr/> which enables application control of white balance,<wbr/> by using
4778<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
4779mode camera devices.<wbr/></p>
4780            </td>
4781          </tr>
4782
4783
4784          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4785           <!-- end of entry -->
4786        
4787                
4788          <tr class="entry" id="static_android.control.maxRegions">
4789            <td class="entry_name
4790             " rowspan="1">
4791              android.<wbr/>control.<wbr/>max<wbr/>Regions
4792            </td>
4793            <td class="entry_type">
4794                <span class="entry_type_name">int32</span>
4795                <span class="entry_type_container">x</span>
4796
4797                <span class="entry_type_array">
4798                  3
4799                </span>
4800              <span class="entry_type_visibility"> [hidden]</span>
4801
4802
4803              <span class="entry_type_hwlevel">[legacy] </span>
4804
4805
4806
4807
4808            </td> <!-- entry_type -->
4809
4810            <td class="entry_description">
4811              <p>List of the maximum number of regions that can be used for metering in
4812auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
4813this corresponds to the the maximum number of elements in
4814<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/>
4815and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
4816            </td>
4817
4818            <td class="entry_units">
4819            </td>
4820
4821            <td class="entry_range">
4822              <p>Value must be &gt;= 0 for each element.<wbr/> For full-capability devices
4823this value must be &gt;= 1 for AE and AF.<wbr/> The order of the elements is:
4824<code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
4825            </td>
4826
4827            <td class="entry_tags">
4828              <ul class="entry_tags">
4829                  <li><a href="#tag_BC">BC</a></li>
4830              </ul>
4831            </td>
4832
4833          </tr>
4834
4835
4836          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4837           <!-- end of entry -->
4838        
4839                
4840          <tr class="entry" id="static_android.control.maxRegionsAe">
4841            <td class="entry_name
4842             " rowspan="5">
4843              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
4844            </td>
4845            <td class="entry_type">
4846                <span class="entry_type_name">int32</span>
4847
4848              <span class="entry_type_visibility"> [public]</span>
4849
4850              <span class="entry_type_synthetic">[synthetic] </span>
4851
4852              <span class="entry_type_hwlevel">[legacy] </span>
4853
4854
4855
4856
4857            </td> <!-- entry_type -->
4858
4859            <td class="entry_description">
4860              <p>The maximum number of metering regions that can be used by the auto-exposure (AE)
4861routine.<wbr/></p>
4862            </td>
4863
4864            <td class="entry_units">
4865            </td>
4866
4867            <td class="entry_range">
4868              <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
4869value will be &gt;= 1.<wbr/></p>
4870            </td>
4871
4872            <td class="entry_tags">
4873            </td>
4874
4875          </tr>
4876          <tr class="entries_header">
4877            <th class="th_details" colspan="5">Details</th>
4878          </tr>
4879          <tr class="entry_cont">
4880            <td class="entry_details" colspan="5">
4881              <p>This corresponds to the the maximum allowed number of elements in
4882<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
4883            </td>
4884          </tr>
4885
4886          <tr class="entries_header">
4887            <th class="th_details" colspan="5">HAL Implementation Details</th>
4888          </tr>
4889          <tr class="entry_cont">
4890            <td class="entry_details" colspan="5">
4891              <p>This entry is private to the framework.<wbr/> Fill in
4892maxRegions to have this entry be automatically populated.<wbr/></p>
4893            </td>
4894          </tr>
4895
4896          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4897           <!-- end of entry -->
4898        
4899                
4900          <tr class="entry" id="static_android.control.maxRegionsAwb">
4901            <td class="entry_name
4902             " rowspan="5">
4903              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
4904            </td>
4905            <td class="entry_type">
4906                <span class="entry_type_name">int32</span>
4907
4908              <span class="entry_type_visibility"> [public]</span>
4909
4910              <span class="entry_type_synthetic">[synthetic] </span>
4911
4912              <span class="entry_type_hwlevel">[legacy] </span>
4913
4914
4915
4916
4917            </td> <!-- entry_type -->
4918
4919            <td class="entry_description">
4920              <p>The maximum number of metering regions that can be used by the auto-white balance (AWB)
4921routine.<wbr/></p>
4922            </td>
4923
4924            <td class="entry_units">
4925            </td>
4926
4927            <td class="entry_range">
4928              <p>Value will be &gt;= 0.<wbr/></p>
4929            </td>
4930
4931            <td class="entry_tags">
4932            </td>
4933
4934          </tr>
4935          <tr class="entries_header">
4936            <th class="th_details" colspan="5">Details</th>
4937          </tr>
4938          <tr class="entry_cont">
4939            <td class="entry_details" colspan="5">
4940              <p>This corresponds to the the maximum allowed number of elements in
4941<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
4942            </td>
4943          </tr>
4944
4945          <tr class="entries_header">
4946            <th class="th_details" colspan="5">HAL Implementation Details</th>
4947          </tr>
4948          <tr class="entry_cont">
4949            <td class="entry_details" colspan="5">
4950              <p>This entry is private to the framework.<wbr/> Fill in
4951maxRegions to have this entry be automatically populated.<wbr/></p>
4952            </td>
4953          </tr>
4954
4955          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4956           <!-- end of entry -->
4957        
4958                
4959          <tr class="entry" id="static_android.control.maxRegionsAf">
4960            <td class="entry_name
4961             " rowspan="5">
4962              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
4963            </td>
4964            <td class="entry_type">
4965                <span class="entry_type_name">int32</span>
4966
4967              <span class="entry_type_visibility"> [public]</span>
4968
4969              <span class="entry_type_synthetic">[synthetic] </span>
4970
4971              <span class="entry_type_hwlevel">[legacy] </span>
4972
4973
4974
4975
4976            </td> <!-- entry_type -->
4977
4978            <td class="entry_description">
4979              <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p>
4980            </td>
4981
4982            <td class="entry_units">
4983            </td>
4984
4985            <td class="entry_range">
4986              <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
4987value will be &gt;= 1.<wbr/></p>
4988            </td>
4989
4990            <td class="entry_tags">
4991            </td>
4992
4993          </tr>
4994          <tr class="entries_header">
4995            <th class="th_details" colspan="5">Details</th>
4996          </tr>
4997          <tr class="entry_cont">
4998            <td class="entry_details" colspan="5">
4999              <p>This corresponds to the the maximum allowed number of elements in
5000<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5001            </td>
5002          </tr>
5003
5004          <tr class="entries_header">
5005            <th class="th_details" colspan="5">HAL Implementation Details</th>
5006          </tr>
5007          <tr class="entry_cont">
5008            <td class="entry_details" colspan="5">
5009              <p>This entry is private to the framework.<wbr/> Fill in
5010maxRegions to have this entry be automatically populated.<wbr/></p>
5011            </td>
5012          </tr>
5013
5014          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5015           <!-- end of entry -->
5016        
5017                
5018          <tr class="entry" id="static_android.control.sceneModeOverrides">
5019            <td class="entry_name
5020             " rowspan="5">
5021              android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
5022            </td>
5023            <td class="entry_type">
5024                <span class="entry_type_name">byte</span>
5025                <span class="entry_type_container">x</span>
5026
5027                <span class="entry_type_array">
5028                  3 x length(availableSceneModes)
5029                </span>
5030              <span class="entry_type_visibility"> [system]</span>
5031
5032
5033              <span class="entry_type_hwlevel">[limited] </span>
5034
5035
5036
5037
5038            </td> <!-- entry_type -->
5039
5040            <td class="entry_description">
5041              <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
5042settings to use with each available scene mode.<wbr/></p>
5043            </td>
5044
5045            <td class="entry_units">
5046            </td>
5047
5048            <td class="entry_range">
5049              <p>For each available scene mode,<wbr/> the list must contain three
5050entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5051<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
5052by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
5053where aeMode has the lowest index position.<wbr/></p>
5054            </td>
5055
5056            <td class="entry_tags">
5057              <ul class="entry_tags">
5058                  <li><a href="#tag_BC">BC</a></li>
5059              </ul>
5060            </td>
5061
5062          </tr>
5063          <tr class="entries_header">
5064            <th class="th_details" colspan="5">Details</th>
5065          </tr>
5066          <tr class="entry_cont">
5067            <td class="entry_details" colspan="5">
5068              <p>When a scene mode is enabled,<wbr/> the camera device is expected
5069to 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/>
5070and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
5071that scene mode.<wbr/></p>
5072<p>The order of this list matches that of availableSceneModes,<wbr/>
5073with 3 entries for each mode.<wbr/>  The overrides listed
5074for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/>
5075since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5076<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
5077used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
5078is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and
5079FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p>
5080<p>For example,<wbr/> if availableSceneModes contains
5081<code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/>  then the camera framework
5082expects sceneModeOverrides to have 9 entries formatted like:
5083<code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
5084ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
5085            </td>
5086          </tr>
5087
5088          <tr class="entries_header">
5089            <th class="th_details" colspan="5">HAL Implementation Details</th>
5090          </tr>
5091          <tr class="entry_cont">
5092            <td class="entry_details" colspan="5">
5093              <p>To maintain backward compatibility,<wbr/> this list will be made available
5094in the static metadata of the camera service.<wbr/>  The camera service will
5095use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5096<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
5097mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p>
5098            </td>
5099          </tr>
5100
5101          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5102           <!-- end of entry -->
5103        
5104                
5105          <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations">
5106            <td class="entry_name
5107             " rowspan="5">
5108              android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations
5109            </td>
5110            <td class="entry_type">
5111                <span class="entry_type_name">int32</span>
5112                <span class="entry_type_container">x</span>
5113
5114                <span class="entry_type_array">
5115                  5 x n
5116                </span>
5117              <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
5118
5119
5120              <span class="entry_type_hwlevel">[limited] </span>
5121
5122
5123
5124
5125            </td> <!-- entry_type -->
5126
5127            <td class="entry_description">
5128              <p>List of available high speed video size,<wbr/> fps range and max batch size configurations
5129supported 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>
5130            </td>
5131
5132            <td class="entry_units">
5133            </td>
5134
5135            <td class="entry_range">
5136              <p>For each configuration,<wbr/> the fps_<wbr/>max &gt;= 120fps.<wbr/></p>
5137            </td>
5138
5139            <td class="entry_tags">
5140              <ul class="entry_tags">
5141                  <li><a href="#tag_V1">V1</a></li>
5142              </ul>
5143            </td>
5144
5145          </tr>
5146          <tr class="entries_header">
5147            <th class="th_details" colspan="5">Details</th>
5148          </tr>
5149          <tr class="entry_cont">
5150            <td class="entry_details" colspan="5">
5151              <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/>
5152this metadata will list the supported high speed video size,<wbr/> fps range and max batch size
5153configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes
5154reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a>
5155for processed non-stalling formats.<wbr/></p>
5156<p>For the high speed video use case,<wbr/> the application must
5157select the video size and fps range from this metadata to configure the recording and
5158preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends
5159to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to
5160configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata
5161by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the
5162recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application
5163must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams
5164must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p>
5165<p>The min and max fps will be multiple times of 30fps.<wbr/></p>
5166<p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/>
5167to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate
5168multiple frames together and send to camera device for processing where the request
5169controls are same for all the frames in this batch.<wbr/> Max batch size indicates
5170the max possible number of frames the camera device will group together for this high
5171speed stream configuration.<wbr/> This max batch size will be used to generate a high speed
5172recording request list by
5173<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/>
5174The max batch size for each configuration will satisfy below conditions:</p>
5175<ul>
5176<li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/>
5177if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li>
5178<li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but
5179the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch
5180size is 8,<wbr/> the actual batch size used by camera device will only be 1,<wbr/> 2,<wbr/> 4,<wbr/> or 8.<wbr/></li>
5181<li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li>
5182</ul>
5183<p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/>
5184in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p>
5185<p>This fps ranges in this configuration list can only be used to create requests
5186that are submitted to a high speed camera capture session created by
5187<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
5188The fps ranges reported in this metadata must not be used to setup capture requests for
5189normal capture session,<wbr/> or it will cause request error.<wbr/></p>
5190            </td>
5191          </tr>
5192
5193          <tr class="entries_header">
5194            <th class="th_details" colspan="5">HAL Implementation Details</th>
5195          </tr>
5196          <tr class="entry_cont">
5197            <td class="entry_details" colspan="5">
5198              <p>All the sizes listed in this configuration will be a subset of the sizes reported by
5199<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
5200Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
5201of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p>
5202<p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps
5203sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application
5204usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused
5205stutter when starting recording as much as possible,<wbr/> the application may want to ensure
5206the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise
5207the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/>
5208For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise
5209[30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to
5210do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start
5211recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps
5212values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps
5213values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must
5214switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p>
5215            </td>
5216          </tr>
5217
5218          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5219           <!-- end of entry -->
5220        
5221                
5222          <tr class="entry" id="static_android.control.aeLockAvailable">
5223            <td class="entry_name
5224             " rowspan="3">
5225              android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available
5226            </td>
5227            <td class="entry_type">
5228                <span class="entry_type_name entry_type_name_enum">byte</span>
5229
5230              <span class="entry_type_visibility"> [public as boolean]</span>
5231
5232
5233              <span class="entry_type_hwlevel">[legacy] </span>
5234
5235
5236
5237                <ul class="entry_type_enum">
5238                  <li>
5239                    <span class="entry_type_enum_name">FALSE</span>
5240                  </li>
5241                  <li>
5242                    <span class="entry_type_enum_name">TRUE</span>
5243                  </li>
5244                </ul>
5245
5246            </td> <!-- entry_type -->
5247
5248            <td class="entry_description">
5249              <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p>
5250            </td>
5251
5252            <td class="entry_units">
5253            </td>
5254
5255            <td class="entry_range">
5256            </td>
5257
5258            <td class="entry_tags">
5259              <ul class="entry_tags">
5260                  <li><a href="#tag_BC">BC</a></li>
5261              </ul>
5262            </td>
5263
5264          </tr>
5265          <tr class="entries_header">
5266            <th class="th_details" colspan="5">Details</th>
5267          </tr>
5268          <tr class="entry_cont">
5269            <td class="entry_details" colspan="5">
5270              <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always
5271list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5272            </td>
5273          </tr>
5274
5275
5276          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5277           <!-- end of entry -->
5278        
5279                
5280          <tr class="entry" id="static_android.control.awbLockAvailable">
5281            <td class="entry_name
5282             " rowspan="3">
5283              android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available
5284            </td>
5285            <td class="entry_type">
5286                <span class="entry_type_name entry_type_name_enum">byte</span>
5287
5288              <span class="entry_type_visibility"> [public as boolean]</span>
5289
5290
5291              <span class="entry_type_hwlevel">[legacy] </span>
5292
5293
5294
5295                <ul class="entry_type_enum">
5296                  <li>
5297                    <span class="entry_type_enum_name">FALSE</span>
5298                  </li>
5299                  <li>
5300                    <span class="entry_type_enum_name">TRUE</span>
5301                  </li>
5302                </ul>
5303
5304            </td> <!-- entry_type -->
5305
5306            <td class="entry_description">
5307              <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p>
5308            </td>
5309
5310            <td class="entry_units">
5311            </td>
5312
5313            <td class="entry_range">
5314            </td>
5315
5316            <td class="entry_tags">
5317              <ul class="entry_tags">
5318                  <li><a href="#tag_BC">BC</a></li>
5319              </ul>
5320            </td>
5321
5322          </tr>
5323          <tr class="entries_header">
5324            <th class="th_details" colspan="5">Details</th>
5325          </tr>
5326          <tr class="entry_cont">
5327            <td class="entry_details" colspan="5">
5328              <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will
5329always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5330            </td>
5331          </tr>
5332
5333
5334          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5335           <!-- end of entry -->
5336        
5337                
5338          <tr class="entry" id="static_android.control.availableModes">
5339            <td class="entry_name
5340             " rowspan="3">
5341              android.<wbr/>control.<wbr/>available<wbr/>Modes
5342            </td>
5343            <td class="entry_type">
5344                <span class="entry_type_name">byte</span>
5345                <span class="entry_type_container">x</span>
5346
5347                <span class="entry_type_array">
5348                  n
5349                </span>
5350              <span class="entry_type_visibility"> [public as enumList]</span>
5351
5352
5353              <span class="entry_type_hwlevel">[legacy] </span>
5354
5355
5356                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div>
5357
5358
5359            </td> <!-- entry_type -->
5360
5361            <td class="entry_description">
5362              <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera
5363device.<wbr/></p>
5364            </td>
5365
5366            <td class="entry_units">
5367            </td>
5368
5369            <td class="entry_range">
5370              <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p>
5371            </td>
5372
5373            <td class="entry_tags">
5374            </td>
5375
5376          </tr>
5377          <tr class="entries_header">
5378            <th class="th_details" colspan="5">Details</th>
5379          </tr>
5380          <tr class="entry_cont">
5381            <td class="entry_details" colspan="5">
5382              <p>This list contains control modes that can be set for the camera device.<wbr/>
5383LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL
5384devices will always support OFF,<wbr/> AUTO modes.<wbr/></p>
5385            </td>
5386          </tr>
5387
5388
5389          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5390           <!-- end of entry -->
5391        
5392        
5393
5394      <!-- end of kind -->
5395      </tbody>
5396      <tr><td colspan="6" class="kind">dynamic</td></tr>
5397
5398      <thead class="entries_header">
5399        <tr>
5400          <th class="th_name">Property Name</th>
5401          <th class="th_type">Type</th>
5402          <th class="th_description">Description</th>
5403          <th class="th_units">Units</th>
5404          <th class="th_range">Range</th>
5405          <th class="th_tags">Tags</th>
5406        </tr>
5407      </thead>
5408
5409      <tbody>
5410
5411        
5412
5413        
5414
5415        
5416
5417        
5418
5419                
5420          <tr class="entry" id="dynamic_android.control.aePrecaptureId">
5421            <td class="entry_name
5422                entry_name_deprecated
5423             " rowspan="3">
5424              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
5425            </td>
5426            <td class="entry_type">
5427                <span class="entry_type_name">int32</span>
5428
5429              <span class="entry_type_visibility"> [system]</span>
5430
5431
5432
5433              <span class="entry_type_deprecated">[deprecated] </span>
5434
5435
5436
5437            </td> <!-- entry_type -->
5438
5439            <td class="entry_description">
5440              <p>The ID sent with the latest
5441CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
5442            </td>
5443
5444            <td class="entry_units">
5445            </td>
5446
5447            <td class="entry_range">
5448              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
5449            </td>
5450
5451            <td class="entry_tags">
5452            </td>
5453
5454          </tr>
5455          <tr class="entries_header">
5456            <th class="th_details" colspan="5">Details</th>
5457          </tr>
5458          <tr class="entry_cont">
5459            <td class="entry_details" colspan="5">
5460              <p>Must be 0 if no
5461CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
5462by HAL.<wbr/> Always updated even if AE algorithm ignores the
5463trigger</p>
5464            </td>
5465          </tr>
5466
5467
5468          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5469           <!-- end of entry -->
5470        
5471                
5472          <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
5473            <td class="entry_name
5474             " rowspan="5">
5475              android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
5476            </td>
5477            <td class="entry_type">
5478                <span class="entry_type_name entry_type_name_enum">byte</span>
5479
5480              <span class="entry_type_visibility"> [public]</span>
5481
5482
5483              <span class="entry_type_hwlevel">[legacy] </span>
5484
5485
5486
5487                <ul class="entry_type_enum">
5488                  <li>
5489                    <span class="entry_type_enum_name">OFF</span>
5490                    <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
5491avoid banding problems.<wbr/></p></span>
5492                  </li>
5493                  <li>
5494                    <span class="entry_type_enum_name">50HZ</span>
5495                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5496avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
5497                  </li>
5498                  <li>
5499                    <span class="entry_type_enum_name">60HZ</span>
5500                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5501avoid banding problems with 60Hz illumination
5502sources.<wbr/></p></span>
5503                  </li>
5504                  <li>
5505                    <span class="entry_type_enum_name">AUTO</span>
5506                    <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
5507antibanding routine to the current illumination
5508condition.<wbr/> This is the default mode if AUTO is
5509available on given camera device.<wbr/></p></span>
5510                  </li>
5511                </ul>
5512
5513            </td> <!-- entry_type -->
5514
5515            <td class="entry_description">
5516              <p>The desired setting for the camera device's auto-exposure
5517algorithm's antibanding compensation.<wbr/></p>
5518            </td>
5519
5520            <td class="entry_units">
5521            </td>
5522
5523            <td class="entry_range">
5524              <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
5525            </td>
5526
5527            <td class="entry_tags">
5528              <ul class="entry_tags">
5529                  <li><a href="#tag_BC">BC</a></li>
5530              </ul>
5531            </td>
5532
5533          </tr>
5534          <tr class="entries_header">
5535            <th class="th_details" colspan="5">Details</th>
5536          </tr>
5537          <tr class="entry_cont">
5538            <td class="entry_details" colspan="5">
5539              <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
5540lights,<wbr/> flicker at the rate of the power supply frequency
5541(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
5542typically not noticeable to a person,<wbr/> it can be visible to
5543a camera device.<wbr/> If a camera sets its exposure time to the
5544wrong value,<wbr/> the flicker may become visible in the
5545viewfinder as flicker or in a final captured image,<wbr/> as a
5546set of variable-brightness bands across the image.<wbr/></p>
5547<p>Therefore,<wbr/> the auto-exposure routines of camera devices
5548include antibanding routines that ensure that the chosen
5549exposure value will not cause such banding.<wbr/> The choice of
5550exposure time depends on the rate of flicker,<wbr/> which the
5551camera device can detect automatically,<wbr/> or the expected
5552rate can be selected by the application using this
5553control.<wbr/></p>
5554<p>A given camera device may not support all of the possible
5555options for the antibanding mode.<wbr/> The
5556<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
5557the available modes for a given camera device.<wbr/></p>
5558<p>AUTO mode is the default if it is available on given
5559camera device.<wbr/> When AUTO mode is not available,<wbr/> the
5560default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
5561and 60HZ will be available.<wbr/></p>
5562<p>If manual exposure control is enabled (by setting
5563<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/>
5564then this setting has no effect,<wbr/> and the application must
5565ensure it selects exposure times that do not cause banding
5566issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
5567the application in this.<wbr/></p>
5568            </td>
5569          </tr>
5570
5571          <tr class="entries_header">
5572            <th class="th_details" colspan="5">HAL Implementation Details</th>
5573          </tr>
5574          <tr class="entry_cont">
5575            <td class="entry_details" colspan="5">
5576              <p>For all capture request templates,<wbr/> this field must be set
5577to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
5578the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
557960HZ must be available.<wbr/></p>
5580<p>If manual exposure control is enabled (by setting
5581<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/>
5582then the exposure values provided by the application must not be
5583adjusted for antibanding.<wbr/></p>
5584            </td>
5585          </tr>
5586
5587          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5588           <!-- end of entry -->
5589        
5590                
5591          <tr class="entry" id="dynamic_android.control.aeExposureCompensation">
5592            <td class="entry_name
5593             " rowspan="3">
5594              android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
5595            </td>
5596            <td class="entry_type">
5597                <span class="entry_type_name">int32</span>
5598
5599              <span class="entry_type_visibility"> [public]</span>
5600
5601
5602              <span class="entry_type_hwlevel">[legacy] </span>
5603
5604
5605
5606
5607            </td> <!-- entry_type -->
5608
5609            <td class="entry_description">
5610              <p>Adjustment to auto-exposure (AE) target image
5611brightness.<wbr/></p>
5612            </td>
5613
5614            <td class="entry_units">
5615              Compensation steps
5616            </td>
5617
5618            <td class="entry_range">
5619              <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
5620            </td>
5621
5622            <td class="entry_tags">
5623              <ul class="entry_tags">
5624                  <li><a href="#tag_BC">BC</a></li>
5625              </ul>
5626            </td>
5627
5628          </tr>
5629          <tr class="entries_header">
5630            <th class="th_details" colspan="5">Details</th>
5631          </tr>
5632          <tr class="entry_cont">
5633            <td class="entry_details" colspan="5">
5634              <p>The adjustment is measured as a count of steps,<wbr/> with the
5635step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
5636allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
5637<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
5638will mean an exposure compensation of +2 EV; -3 will mean an
5639exposure compensation of -1 EV.<wbr/> One EV represents a doubling
5640of image brightness.<wbr/> Note that this control will only be
5641effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
5642will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
5643<p>In the event of exposure compensation value being changed,<wbr/> camera device
5644may take several frames to reach the newly requested exposure target.<wbr/>
5645During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
5646state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
5647change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
5648FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
5649            </td>
5650          </tr>
5651
5652
5653          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5654           <!-- end of entry -->
5655        
5656                
5657          <tr class="entry" id="dynamic_android.control.aeLock">
5658            <td class="entry_name
5659             " rowspan="3">
5660              android.<wbr/>control.<wbr/>ae<wbr/>Lock
5661            </td>
5662            <td class="entry_type">
5663                <span class="entry_type_name entry_type_name_enum">byte</span>
5664
5665              <span class="entry_type_visibility"> [public as boolean]</span>
5666
5667
5668              <span class="entry_type_hwlevel">[legacy] </span>
5669
5670
5671
5672                <ul class="entry_type_enum">
5673                  <li>
5674                    <span class="entry_type_enum_name">OFF</span>
5675                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
5676is free to update its parameters.<wbr/></p></span>
5677                  </li>
5678                  <li>
5679                    <span class="entry_type_enum_name">ON</span>
5680                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
5681must not update the exposure and sensitivity parameters
5682while the lock is active.<wbr/></p>
5683<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
5684will still take effect while auto-exposure is locked.<wbr/></p>
5685<p>Some rare LEGACY devices may not support
5686this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
5687                  </li>
5688                </ul>
5689
5690            </td> <!-- entry_type -->
5691
5692            <td class="entry_description">
5693              <p>Whether auto-exposure (AE) is currently locked to its latest
5694calculated values.<wbr/></p>
5695            </td>
5696
5697            <td class="entry_units">
5698            </td>
5699
5700            <td class="entry_range">
5701            </td>
5702
5703            <td class="entry_tags">
5704              <ul class="entry_tags">
5705                  <li><a href="#tag_BC">BC</a></li>
5706              </ul>
5707            </td>
5708
5709          </tr>
5710          <tr class="entries_header">
5711            <th class="th_details" colspan="5">Details</th>
5712          </tr>
5713          <tr class="entry_cont">
5714            <td class="entry_details" colspan="5">
5715              <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
5716and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
5717<p>Note that even when AE is locked,<wbr/> the flash may be fired if
5718the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
5719ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
5720<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
5721is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
5722<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
5723when AE is already locked,<wbr/> the camera device will not change the exposure time
5724(<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>)
5725parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
5726is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
5727<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/>
5728Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
5729<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
5730the AE if AE is locked by the camera device internally during precapture metering
5731sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
5732ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
5733will never succeed in a sequence of preview requests where AE lock is always set
5734to <code>false</code>.<wbr/></p>
5735<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
5736get locked do not necessarily correspond to the settings that were present in the
5737latest capture result received from the camera device,<wbr/> since additional captures
5738and AE updates may have occurred even before the result was sent out.<wbr/> If an
5739application is switching between automatic and manual control and wishes to eliminate
5740any flicker during the switch,<wbr/> the following procedure is recommended:</p>
5741<ol>
5742<li>Starting in auto-AE mode:</li>
5743<li>Lock AE</li>
5744<li>Wait for the first result to be output that has the AE locked</li>
5745<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
5746<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
5747</ol>
5748<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>
5749            </td>
5750          </tr>
5751
5752
5753          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5754           <!-- end of entry -->
5755        
5756                
5757          <tr class="entry" id="dynamic_android.control.aeMode">
5758            <td class="entry_name
5759             " rowspan="3">
5760              android.<wbr/>control.<wbr/>ae<wbr/>Mode
5761            </td>
5762            <td class="entry_type">
5763                <span class="entry_type_name entry_type_name_enum">byte</span>
5764
5765              <span class="entry_type_visibility"> [public]</span>
5766
5767
5768              <span class="entry_type_hwlevel">[legacy] </span>
5769
5770
5771
5772                <ul class="entry_type_enum">
5773                  <li>
5774                    <span class="entry_type_enum_name">OFF</span>
5775                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
5776<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
5777<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
5778<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
5779device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
5780a flash unit for this camera device.<wbr/></p>
5781<p>Note that auto-white balance (AWB) and auto-focus (AF)
5782behavior is device dependent when AE is in OFF mode.<wbr/>
5783To have consistent behavior across different devices,<wbr/>
5784it is recommended to either set AWB and AF to OFF mode
5785or lock AWB and AF before setting AE to OFF.<wbr/>
5786See <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/>
5787<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>
5788for more details.<wbr/></p>
5789<p>LEGACY devices do not support the OFF mode and will
5790override attempts to use this value to ON.<wbr/></p></span>
5791                  </li>
5792                  <li>
5793                    <span class="entry_type_enum_name">ON</span>
5794                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
5795with no flash control.<wbr/></p>
5796<p>The application's values for
5797<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
5798<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
5799<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
5800application has control over the various
5801android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
5802                  </li>
5803                  <li>
5804                    <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
5805                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
5806the camera's flash unit,<wbr/> firing it in low-light
5807conditions.<wbr/></p>
5808<p>The flash may be fired during a precapture sequence
5809(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
5810may be fired for captures for which the
5811<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
5812STILL_<wbr/>CAPTURE</p></span>
5813                  </li>
5814                  <li>
5815                    <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
5816                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
5817the camera's flash unit,<wbr/> always firing it for still
5818captures.<wbr/></p>
5819<p>The flash may be fired during a precapture sequence
5820(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
5821will always be fired for captures for which the
5822<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
5823STILL_<wbr/>CAPTURE</p></span>
5824                  </li>
5825                  <li>
5826                    <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
5827                    <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
5828reduction.<wbr/></p>
5829<p>If deemed necessary by the camera device,<wbr/> a red eye
5830reduction flash will fire during the precapture
5831sequence.<wbr/></p></span>
5832                  </li>
5833                </ul>
5834
5835            </td> <!-- entry_type -->
5836
5837            <td class="entry_description">
5838              <p>The desired mode for the camera device's
5839auto-exposure routine.<wbr/></p>
5840            </td>
5841
5842            <td class="entry_units">
5843            </td>
5844
5845            <td class="entry_range">
5846              <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
5847            </td>
5848
5849            <td class="entry_tags">
5850              <ul class="entry_tags">
5851                  <li><a href="#tag_BC">BC</a></li>
5852              </ul>
5853            </td>
5854
5855          </tr>
5856          <tr class="entries_header">
5857            <th class="th_details" colspan="5">Details</th>
5858          </tr>
5859          <tr class="entry_cont">
5860            <td class="entry_details" colspan="5">
5861              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
5862AUTO.<wbr/></p>
5863<p>When set to any of the ON modes,<wbr/> the camera device's
5864auto-exposure routine is enabled,<wbr/> overriding the
5865application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
5866and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
5867<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
5868<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
5869is selected,<wbr/> the camera device's flash unit controls are
5870also overridden.<wbr/></p>
5871<p>The FLASH modes are only available if the camera device
5872has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
5873<p>If flash TORCH mode is desired,<wbr/> this field must be set to
5874ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
5875<p>When set to any of the ON modes,<wbr/> the values chosen by the
5876camera device auto-exposure routine for the overridden
5877fields for a given capture will be available in its
5878CaptureResult.<wbr/></p>
5879            </td>
5880          </tr>
5881
5882
5883          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5884           <!-- end of entry -->
5885        
5886                
5887          <tr class="entry" id="dynamic_android.control.aeRegions">
5888            <td class="entry_name
5889             " rowspan="5">
5890              android.<wbr/>control.<wbr/>ae<wbr/>Regions
5891            </td>
5892            <td class="entry_type">
5893                <span class="entry_type_name">int32</span>
5894                <span class="entry_type_container">x</span>
5895
5896                <span class="entry_type_array">
5897                  5 x area_count
5898                </span>
5899              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
5900
5901
5902
5903
5904
5905
5906            </td> <!-- entry_type -->
5907
5908            <td class="entry_description">
5909              <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
5910            </td>
5911
5912            <td class="entry_units">
5913              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
5914            </td>
5915
5916            <td class="entry_range">
5917              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
5918<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
5919            </td>
5920
5921            <td class="entry_tags">
5922              <ul class="entry_tags">
5923                  <li><a href="#tag_BC">BC</a></li>
5924              </ul>
5925            </td>
5926
5927          </tr>
5928          <tr class="entries_header">
5929            <th class="th_details" colspan="5">Details</th>
5930          </tr>
5931          <tr class="entry_cont">
5932            <td class="entry_details" colspan="5">
5933              <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
5934Otherwise will always be present.<wbr/></p>
5935<p>The maximum number of regions supported by the device is determined by the value
5936of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
5937<p>The coordinate system is based on the active pixel array,<wbr/>
5938with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
5939(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
5940<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
5941bottom-right pixel in the active pixel array.<wbr/></p>
5942<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
5943for every pixel in the area.<wbr/> This means that a large metering area
5944with the same weight as a smaller area will have more effect in
5945the metering result.<wbr/> Metering areas can partially overlap and the
5946camera device will add the weights in the overlap region.<wbr/></p>
5947<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
5948region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
5949weight is ignored.<wbr/></p>
5950<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
5951camera device.<wbr/></p>
5952<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
5953capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
5954region and output only the intersection rectangle as the metering region in the result
5955metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
5956not reported in the result metadata.<wbr/></p>
5957            </td>
5958          </tr>
5959
5960          <tr class="entries_header">
5961            <th class="th_details" colspan="5">HAL Implementation Details</th>
5962          </tr>
5963          <tr class="entry_cont">
5964            <td class="entry_details" colspan="5">
5965              <p>The HAL level representation of MeteringRectangle[] is a
5966int[5 * area_<wbr/>count].<wbr/>
5967Every five elements represent a metering region of
5968(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
5969The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
5970exclusive on xmax and ymax.<wbr/></p>
5971            </td>
5972          </tr>
5973
5974          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5975           <!-- end of entry -->
5976        
5977                
5978          <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
5979            <td class="entry_name
5980             " rowspan="3">
5981              android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
5982            </td>
5983            <td class="entry_type">
5984                <span class="entry_type_name">int32</span>
5985                <span class="entry_type_container">x</span>
5986
5987                <span class="entry_type_array">
5988                  2
5989                </span>
5990              <span class="entry_type_visibility"> [public as rangeInt]</span>
5991
5992
5993              <span class="entry_type_hwlevel">[legacy] </span>
5994
5995
5996
5997
5998            </td> <!-- entry_type -->
5999
6000            <td class="entry_description">
6001              <p>Range over which the auto-exposure routine can
6002adjust the capture frame rate to maintain good
6003exposure.<wbr/></p>
6004            </td>
6005
6006            <td class="entry_units">
6007              Frames per second (FPS)
6008            </td>
6009
6010            <td class="entry_range">
6011              <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>
6012            </td>
6013
6014            <td class="entry_tags">
6015              <ul class="entry_tags">
6016                  <li><a href="#tag_BC">BC</a></li>
6017              </ul>
6018            </td>
6019
6020          </tr>
6021          <tr class="entries_header">
6022            <th class="th_details" colspan="5">Details</th>
6023          </tr>
6024          <tr class="entry_cont">
6025            <td class="entry_details" colspan="5">
6026              <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
6027manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
6028<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
6029            </td>
6030          </tr>
6031
6032
6033          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6034           <!-- end of entry -->
6035        
6036                
6037          <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
6038            <td class="entry_name
6039             " rowspan="5">
6040              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
6041            </td>
6042            <td class="entry_type">
6043                <span class="entry_type_name entry_type_name_enum">byte</span>
6044
6045              <span class="entry_type_visibility"> [public]</span>
6046
6047
6048              <span class="entry_type_hwlevel">[limited] </span>
6049
6050
6051
6052                <ul class="entry_type_enum">
6053                  <li>
6054                    <span class="entry_type_enum_name">IDLE</span>
6055                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6056                  </li>
6057                  <li>
6058                    <span class="entry_type_enum_name">START</span>
6059                    <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
6060by the camera device.<wbr/></p>
6061<p>The exact effect of the precapture trigger depends on
6062the current AE mode and state.<wbr/></p></span>
6063                  </li>
6064                  <li>
6065                    <span class="entry_type_enum_name">CANCEL</span>
6066                    <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
6067precapture metering sequence,<wbr/> the auto-exposure routine will return to its
6068initial state.<wbr/></p></span>
6069                  </li>
6070                </ul>
6071
6072            </td> <!-- entry_type -->
6073
6074            <td class="entry_description">
6075              <p>Whether the camera device will trigger a precapture
6076metering sequence when it processes this request.<wbr/></p>
6077            </td>
6078
6079            <td class="entry_units">
6080            </td>
6081
6082            <td class="entry_range">
6083            </td>
6084
6085            <td class="entry_tags">
6086              <ul class="entry_tags">
6087                  <li><a href="#tag_BC">BC</a></li>
6088              </ul>
6089            </td>
6090
6091          </tr>
6092          <tr class="entries_header">
6093            <th class="th_details" colspan="5">Details</th>
6094          </tr>
6095          <tr class="entry_cont">
6096            <td class="entry_details" colspan="5">
6097              <p>This entry is normally set to IDLE,<wbr/> or is not
6098included at all in the request settings.<wbr/> When included and
6099set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
6100precapture metering sequence.<wbr/></p>
6101<p>When set to CANCEL,<wbr/> the camera device will cancel any active
6102precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
6103If a precapture metering sequence is already completed,<wbr/> and the camera
6104device has implicitly locked the AE for subsequent still capture,<wbr/> the
6105CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
6106<p>The precapture sequence should be triggered before starting a
6107high-quality still capture for final metering decisions to
6108be made,<wbr/> and for firing pre-capture flash pulses to estimate
6109scene brightness and required final capture flash power,<wbr/> when
6110the flash is enabled.<wbr/></p>
6111<p>Normally,<wbr/> this entry should be set to START for only a
6112single request,<wbr/> and the application should wait until the
6113sequence completes before starting a new one.<wbr/></p>
6114<p>When a precapture metering sequence is finished,<wbr/> the camera device
6115may lock the auto-exposure routine internally to be able to accurately expose the
6116subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
6117For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
6118submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
6119submit 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
6120with <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
6121still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
6122API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
6123internally locked AE if the application doesn't submit a still capture request after
6124the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
6125be used in devices that have earlier API levels.<wbr/></p>
6126<p>The exact effect of auto-exposure (AE) precapture trigger
6127depends on the current AE mode and state; see
6128<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
6129details.<wbr/></p>
6130<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
6131capturing a high-resolution JPEG image will automatically trigger a
6132precapture sequence before the high-resolution capture,<wbr/> including
6133potentially firing a pre-capture flash.<wbr/></p>
6134<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
6135simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
6136the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
6137focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
6138trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
6139changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
6140example.<wbr/></p>
6141<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
6142the camera device will complete them in the optimal order for that device.<wbr/></p>
6143            </td>
6144          </tr>
6145
6146          <tr class="entries_header">
6147            <th class="th_details" colspan="5">HAL Implementation Details</th>
6148          </tr>
6149          <tr class="entry_cont">
6150            <td class="entry_details" colspan="5">
6151              <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
6152(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
6153treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
6154AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
6155to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
6156            </td>
6157          </tr>
6158
6159          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6160           <!-- end of entry -->
6161        
6162                
6163          <tr class="entry" id="dynamic_android.control.aeState">
6164            <td class="entry_name
6165             " rowspan="3">
6166              android.<wbr/>control.<wbr/>ae<wbr/>State
6167            </td>
6168            <td class="entry_type">
6169                <span class="entry_type_name entry_type_name_enum">byte</span>
6170
6171              <span class="entry_type_visibility"> [public]</span>
6172
6173
6174              <span class="entry_type_hwlevel">[limited] </span>
6175
6176
6177
6178                <ul class="entry_type_enum">
6179                  <li>
6180                    <span class="entry_type_enum_name">INACTIVE</span>
6181                    <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
6182<p>When a camera device is opened,<wbr/> it starts in
6183this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
6184this state in capture result.<wbr/></p></span>
6185                  </li>
6186                  <li>
6187                    <span class="entry_type_enum_name">SEARCHING</span>
6188                    <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
6189for the current scene.<wbr/></p>
6190<p>This is a transient state,<wbr/> the camera device may skip
6191reporting this state in capture result.<wbr/></p></span>
6192                  </li>
6193                  <li>
6194                    <span class="entry_type_enum_name">CONVERGED</span>
6195                    <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
6196current scene.<wbr/></p></span>
6197                  </li>
6198                  <li>
6199                    <span class="entry_type_enum_name">LOCKED</span>
6200                    <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
6201                  </li>
6202                  <li>
6203                    <span class="entry_type_enum_name">FLASH_REQUIRED</span>
6204                    <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
6205needs to be fired for good quality still
6206capture.<wbr/></p></span>
6207                  </li>
6208                  <li>
6209                    <span class="entry_type_enum_name">PRECAPTURE</span>
6210                    <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
6211and is currently executing it.<wbr/></p>
6212<p>Precapture can be triggered through setting
6213<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently
6214active and completed (if it causes camera device internal AE lock) precapture
6215metering sequence can be canceled through setting
6216<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p>
6217<p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED
6218or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient
6219state,<wbr/> the camera device may skip reporting this state in
6220capture result.<wbr/></p></span>
6221                  </li>
6222                </ul>
6223
6224            </td> <!-- entry_type -->
6225
6226            <td class="entry_description">
6227              <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p>
6228            </td>
6229
6230            <td class="entry_units">
6231            </td>
6232
6233            <td class="entry_range">
6234            </td>
6235
6236            <td class="entry_tags">
6237            </td>
6238
6239          </tr>
6240          <tr class="entries_header">
6241            <th class="th_details" colspan="5">Details</th>
6242          </tr>
6243          <tr class="entry_cont">
6244            <td class="entry_details" colspan="5">
6245              <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
6246resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6247or <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
6248the algorithm states to INACTIVE.<wbr/></p>
6249<p>The camera device can do several state transitions between two results,<wbr/> if it is
6250allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6251seen in a result.<wbr/></p>
6252<p>The state in the result is the state for this image (in sync with this image): if
6253AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
6254be good to use.<wbr/></p>
6255<p>Below are state transition tables for different AE modes.<wbr/></p>
6256<table>
6257<thead>
6258<tr>
6259<th align="center">State</th>
6260<th align="center">Transition Cause</th>
6261<th align="center">New State</th>
6262<th align="center">Notes</th>
6263</tr>
6264</thead>
6265<tbody>
6266<tr>
6267<td align="center">INACTIVE</td>
6268<td align="center"></td>
6269<td align="center">INACTIVE</td>
6270<td align="center">Camera device auto exposure algorithm is disabled</td>
6271</tr>
6272</tbody>
6273</table>
6274<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p>
6275<table>
6276<thead>
6277<tr>
6278<th align="center">State</th>
6279<th align="center">Transition Cause</th>
6280<th align="center">New State</th>
6281<th align="center">Notes</th>
6282</tr>
6283</thead>
6284<tbody>
6285<tr>
6286<td align="center">INACTIVE</td>
6287<td align="center">Camera device initiates AE scan</td>
6288<td align="center">SEARCHING</td>
6289<td align="center">Values changing</td>
6290</tr>
6291<tr>
6292<td align="center">INACTIVE</td>
6293<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6294<td align="center">LOCKED</td>
6295<td align="center">Values locked</td>
6296</tr>
6297<tr>
6298<td align="center">SEARCHING</td>
6299<td align="center">Camera device finishes AE scan</td>
6300<td align="center">CONVERGED</td>
6301<td align="center">Good values,<wbr/> not changing</td>
6302</tr>
6303<tr>
6304<td align="center">SEARCHING</td>
6305<td align="center">Camera device finishes AE scan</td>
6306<td align="center">FLASH_<wbr/>REQUIRED</td>
6307<td align="center">Converged but too dark w/<wbr/>o flash</td>
6308</tr>
6309<tr>
6310<td align="center">SEARCHING</td>
6311<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6312<td align="center">LOCKED</td>
6313<td align="center">Values locked</td>
6314</tr>
6315<tr>
6316<td align="center">CONVERGED</td>
6317<td align="center">Camera device initiates AE scan</td>
6318<td align="center">SEARCHING</td>
6319<td align="center">Values changing</td>
6320</tr>
6321<tr>
6322<td align="center">CONVERGED</td>
6323<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6324<td align="center">LOCKED</td>
6325<td align="center">Values locked</td>
6326</tr>
6327<tr>
6328<td align="center">FLASH_<wbr/>REQUIRED</td>
6329<td align="center">Camera device initiates AE scan</td>
6330<td align="center">SEARCHING</td>
6331<td align="center">Values changing</td>
6332</tr>
6333<tr>
6334<td align="center">FLASH_<wbr/>REQUIRED</td>
6335<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6336<td align="center">LOCKED</td>
6337<td align="center">Values locked</td>
6338</tr>
6339<tr>
6340<td align="center">LOCKED</td>
6341<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6342<td align="center">SEARCHING</td>
6343<td align="center">Values not good after unlock</td>
6344</tr>
6345<tr>
6346<td align="center">LOCKED</td>
6347<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6348<td align="center">CONVERGED</td>
6349<td align="center">Values good after unlock</td>
6350</tr>
6351<tr>
6352<td align="center">LOCKED</td>
6353<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6354<td align="center">FLASH_<wbr/>REQUIRED</td>
6355<td align="center">Exposure good,<wbr/> but too dark</td>
6356</tr>
6357<tr>
6358<td align="center">PRECAPTURE</td>
6359<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6360<td align="center">CONVERGED</td>
6361<td align="center">Ready for high-quality capture</td>
6362</tr>
6363<tr>
6364<td align="center">PRECAPTURE</td>
6365<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6366<td align="center">LOCKED</td>
6367<td align="center">Ready for high-quality capture</td>
6368</tr>
6369<tr>
6370<td align="center">LOCKED</td>
6371<td align="center">aeLock is ON and aePrecaptureTrigger is START</td>
6372<td align="center">LOCKED</td>
6373<td align="center">Precapture trigger is ignored when AE is already locked</td>
6374</tr>
6375<tr>
6376<td align="center">LOCKED</td>
6377<td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td>
6378<td align="center">LOCKED</td>
6379<td align="center">Precapture trigger is ignored when AE is already locked</td>
6380</tr>
6381<tr>
6382<td align="center">Any state (excluding LOCKED)</td>
6383<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
6384<td align="center">PRECAPTURE</td>
6385<td align="center">Start AE precapture metering sequence</td>
6386</tr>
6387<tr>
6388<td align="center">Any state (excluding LOCKED)</td>
6389<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td>
6390<td align="center">INACTIVE</td>
6391<td align="center">Currently active precapture metering sequence is canceled</td>
6392</tr>
6393</tbody>
6394</table>
6395<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
6396without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
6397can be skipped in that manner is called a transient state.<wbr/></p>
6398<p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions
6399listed in above table,<wbr/> it is also legal for the camera device to skip one or more
6400transient states between two results.<wbr/> See below table for examples:</p>
6401<table>
6402<thead>
6403<tr>
6404<th align="center">State</th>
6405<th align="center">Transition Cause</th>
6406<th align="center">New State</th>
6407<th align="center">Notes</th>
6408</tr>
6409</thead>
6410<tbody>
6411<tr>
6412<td align="center">INACTIVE</td>
6413<td align="center">Camera device finished AE scan</td>
6414<td align="center">CONVERGED</td>
6415<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
6416</tr>
6417<tr>
6418<td align="center">Any state (excluding LOCKED)</td>
6419<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>
6420<td align="center">FLASH_<wbr/>REQUIRED</td>
6421<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>
6422</tr>
6423<tr>
6424<td align="center">Any state (excluding LOCKED)</td>
6425<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>
6426<td align="center">CONVERGED</td>
6427<td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
6428</tr>
6429<tr>
6430<td align="center">Any state (excluding LOCKED)</td>
6431<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6432<td align="center">FLASH_<wbr/>REQUIRED</td>
6433<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>
6434</tr>
6435<tr>
6436<td align="center">Any state (excluding LOCKED)</td>
6437<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6438<td align="center">CONVERGED</td>
6439<td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
6440</tr>
6441<tr>
6442<td align="center">CONVERGED</td>
6443<td align="center">Camera device finished AE scan</td>
6444<td align="center">FLASH_<wbr/>REQUIRED</td>
6445<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>
6446</tr>
6447<tr>
6448<td align="center">FLASH_<wbr/>REQUIRED</td>
6449<td align="center">Camera device finished AE scan</td>
6450<td align="center">CONVERGED</td>
6451<td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
6452</tr>
6453</tbody>
6454</table>
6455            </td>
6456          </tr>
6457
6458
6459          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6460           <!-- end of entry -->
6461        
6462                
6463          <tr class="entry" id="dynamic_android.control.afMode">
6464            <td class="entry_name
6465             " rowspan="5">
6466              android.<wbr/>control.<wbr/>af<wbr/>Mode
6467            </td>
6468            <td class="entry_type">
6469                <span class="entry_type_name entry_type_name_enum">byte</span>
6470
6471              <span class="entry_type_visibility"> [public]</span>
6472
6473
6474              <span class="entry_type_hwlevel">[legacy] </span>
6475
6476
6477
6478                <ul class="entry_type_enum">
6479                  <li>
6480                    <span class="entry_type_enum_name">OFF</span>
6481                    <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
6482<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
6483application.<wbr/></p></span>
6484                  </li>
6485                  <li>
6486                    <span class="entry_type_enum_name">AUTO</span>
6487                    <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
6488<p>In this mode,<wbr/> the lens does not move unless
6489the autofocus trigger action is called.<wbr/> When that trigger
6490is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
6491the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
6492<p>Always supported if lens is not fixed focus.<wbr/></p>
6493<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
6494is fixed-focus.<wbr/></p>
6495<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
6496and sets the AF state to INACTIVE.<wbr/></p></span>
6497                  </li>
6498                  <li>
6499                    <span class="entry_type_enum_name">MACRO</span>
6500                    <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
6501<p>In this mode,<wbr/> the lens does not move unless the
6502autofocus trigger action is called.<wbr/> When that trigger is
6503activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
6504the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
6505mode is optimized for focusing on objects very close to
6506the camera.<wbr/></p>
6507<p>When that trigger is activated,<wbr/> AF will transition to
6508ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
6509NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
6510position to default,<wbr/> and sets the AF state to
6511INACTIVE.<wbr/></p></span>
6512                  </li>
6513                  <li>
6514                    <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
6515                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
6516position continually to attempt to provide a
6517constantly-in-focus image stream.<wbr/></p>
6518<p>The focusing behavior should be suitable for good quality
6519video recording; typically this means slower focus
6520movement and no overshoots.<wbr/> When the AF trigger is not
6521involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
6522and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
6523states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
6524the algorithm should immediately transition into
6525AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
6526lens position until a cancel AF trigger is received.<wbr/></p>
6527<p>Once cancel is received,<wbr/> the algorithm should transition
6528back to INACTIVE and resume passive scan.<wbr/> Note that this
6529behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
6530ongoing PASSIVE_<wbr/>SCAN must immediately be
6531canceled.<wbr/></p></span>
6532                  </li>
6533                  <li>
6534                    <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
6535                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
6536position continually to attempt to provide a
6537constantly-in-focus image stream.<wbr/></p>
6538<p>The focusing behavior should be suitable for still image
6539capture; typically this means focusing as fast as
6540possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
6541algorithm should start in INACTIVE state,<wbr/> and then
6542transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
6543appropriate as it attempts to maintain focus.<wbr/> When the AF
6544trigger is activated,<wbr/> the algorithm should finish its
6545PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
6546AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
6547lens position until a cancel AF trigger is received.<wbr/></p>
6548<p>When the AF cancel trigger is activated,<wbr/> the algorithm
6549should transition back to INACTIVE and then act as if it
6550has just been started.<wbr/></p></span>
6551                  </li>
6552                  <li>
6553                    <span class="entry_type_enum_name">EDOF</span>
6554                    <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
6555<p>The camera device will produce images with an extended
6556depth of field automatically; no special focusing
6557operations need to be done before taking a picture.<wbr/></p>
6558<p>AF triggers are ignored,<wbr/> and the AF state will always be
6559INACTIVE.<wbr/></p></span>
6560                  </li>
6561                </ul>
6562
6563            </td> <!-- entry_type -->
6564
6565            <td class="entry_description">
6566              <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
6567mode it is set to.<wbr/></p>
6568            </td>
6569
6570            <td class="entry_units">
6571            </td>
6572
6573            <td class="entry_range">
6574              <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
6575            </td>
6576
6577            <td class="entry_tags">
6578              <ul class="entry_tags">
6579                  <li><a href="#tag_BC">BC</a></li>
6580              </ul>
6581            </td>
6582
6583          </tr>
6584          <tr class="entries_header">
6585            <th class="th_details" colspan="5">Details</th>
6586          </tr>
6587          <tr class="entry_cont">
6588            <td class="entry_details" colspan="5">
6589              <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
6590(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
6591when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
6592dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
6593setting <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>
6594<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
6595the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
6596in result metadata.<wbr/></p>
6597            </td>
6598          </tr>
6599
6600          <tr class="entries_header">
6601            <th class="th_details" colspan="5">HAL Implementation Details</th>
6602          </tr>
6603          <tr class="entry_cont">
6604            <td class="entry_details" colspan="5">
6605              <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
6606request (<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
6607up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
6608<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
6609locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
6610after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
6611the same focal plane remains in focus.<wbr/></p>
6612<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
6613scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
6614(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
6615same lock behavior as above.<wbr/></p>
6616<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
6617focus 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/>
6618However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
6619manual control.<wbr/></p>
6620<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
6621camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
6622remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
6623by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
6624that will arise on camera modules with open-loop VCMs.<wbr/></p>
6625            </td>
6626          </tr>
6627
6628          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6629           <!-- end of entry -->
6630        
6631                
6632          <tr class="entry" id="dynamic_android.control.afRegions">
6633            <td class="entry_name
6634             " rowspan="5">
6635              android.<wbr/>control.<wbr/>af<wbr/>Regions
6636            </td>
6637            <td class="entry_type">
6638                <span class="entry_type_name">int32</span>
6639                <span class="entry_type_container">x</span>
6640
6641                <span class="entry_type_array">
6642                  5 x area_count
6643                </span>
6644              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6645
6646
6647
6648
6649
6650
6651            </td> <!-- entry_type -->
6652
6653            <td class="entry_description">
6654              <p>List of metering areas to use for auto-focus.<wbr/></p>
6655            </td>
6656
6657            <td class="entry_units">
6658              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
6659            </td>
6660
6661            <td class="entry_range">
6662              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
6663<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
6664            </td>
6665
6666            <td class="entry_tags">
6667              <ul class="entry_tags">
6668                  <li><a href="#tag_BC">BC</a></li>
6669              </ul>
6670            </td>
6671
6672          </tr>
6673          <tr class="entries_header">
6674            <th class="th_details" colspan="5">Details</th>
6675          </tr>
6676          <tr class="entry_cont">
6677            <td class="entry_details" colspan="5">
6678              <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
6679Otherwise will always be present.<wbr/></p>
6680<p>The maximum number of focus areas supported by the device is determined by the value
6681of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
6682<p>The coordinate system is based on the active pixel array,<wbr/>
6683with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
6684(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6685<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
6686bottom-right pixel in the active pixel array.<wbr/></p>
6687<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
6688for every pixel in the area.<wbr/> This means that a large metering area
6689with the same weight as a smaller area will have more effect in
6690the metering result.<wbr/> Metering areas can partially overlap and the
6691camera device will add the weights in the overlap region.<wbr/></p>
6692<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
6693is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
6694ignored.<wbr/></p>
6695<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
6696camera device.<wbr/></p>
6697<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
6698capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
6699region and output only the intersection rectangle as the metering region in the result
6700metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
6701not reported in the result metadata.<wbr/></p>
6702            </td>
6703          </tr>
6704
6705          <tr class="entries_header">
6706            <th class="th_details" colspan="5">HAL Implementation Details</th>
6707          </tr>
6708          <tr class="entry_cont">
6709            <td class="entry_details" colspan="5">
6710              <p>The HAL level representation of MeteringRectangle[] is a
6711int[5 * area_<wbr/>count].<wbr/>
6712Every five elements represent a metering region of
6713(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6714The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6715exclusive on xmax and ymax.<wbr/></p>
6716            </td>
6717          </tr>
6718
6719          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6720           <!-- end of entry -->
6721        
6722                
6723          <tr class="entry" id="dynamic_android.control.afTrigger">
6724            <td class="entry_name
6725             " rowspan="5">
6726              android.<wbr/>control.<wbr/>af<wbr/>Trigger
6727            </td>
6728            <td class="entry_type">
6729                <span class="entry_type_name entry_type_name_enum">byte</span>
6730
6731              <span class="entry_type_visibility"> [public]</span>
6732
6733
6734              <span class="entry_type_hwlevel">[legacy] </span>
6735
6736
6737
6738                <ul class="entry_type_enum">
6739                  <li>
6740                    <span class="entry_type_enum_name">IDLE</span>
6741                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6742                  </li>
6743                  <li>
6744                    <span class="entry_type_enum_name">START</span>
6745                    <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
6746                  </li>
6747                  <li>
6748                    <span class="entry_type_enum_name">CANCEL</span>
6749                    <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
6750state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
6751                  </li>
6752                </ul>
6753
6754            </td> <!-- entry_type -->
6755
6756            <td class="entry_description">
6757              <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
6758            </td>
6759
6760            <td class="entry_units">
6761            </td>
6762
6763            <td class="entry_range">
6764            </td>
6765
6766            <td class="entry_tags">
6767              <ul class="entry_tags">
6768                  <li><a href="#tag_BC">BC</a></li>
6769              </ul>
6770            </td>
6771
6772          </tr>
6773          <tr class="entries_header">
6774            <th class="th_details" colspan="5">Details</th>
6775          </tr>
6776          <tr class="entry_cont">
6777            <td class="entry_details" colspan="5">
6778              <p>This entry is normally set to IDLE,<wbr/> or is not
6779included at all in the request settings.<wbr/></p>
6780<p>When included and set to START,<wbr/> the camera device will trigger the
6781autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
6782<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
6783and return to its initial AF state.<wbr/></p>
6784<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
6785single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
6786START for multiple captures in a row means restarting the AF operation over
6787and over again.<wbr/></p>
6788<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>
6789<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>
6790simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
6791the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
6792focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
6793trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
6794changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
6795            </td>
6796          </tr>
6797
6798          <tr class="entries_header">
6799            <th class="th_details" colspan="5">HAL Implementation Details</th>
6800          </tr>
6801          <tr class="entry_cont">
6802            <td class="entry_details" colspan="5">
6803              <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
6804(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
6805treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
6806AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
6807to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
6808            </td>
6809          </tr>
6810
6811          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6812           <!-- end of entry -->
6813        
6814                
6815          <tr class="entry" id="dynamic_android.control.afState">
6816            <td class="entry_name
6817             " rowspan="3">
6818              android.<wbr/>control.<wbr/>af<wbr/>State
6819            </td>
6820            <td class="entry_type">
6821                <span class="entry_type_name entry_type_name_enum">byte</span>
6822
6823              <span class="entry_type_visibility"> [public]</span>
6824
6825
6826              <span class="entry_type_hwlevel">[legacy] </span>
6827
6828
6829
6830                <ul class="entry_type_enum">
6831                  <li>
6832                    <span class="entry_type_enum_name">INACTIVE</span>
6833                    <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
6834to scan.<wbr/></p>
6835<p>When a camera device is opened,<wbr/> it starts in this
6836state.<wbr/> This is a transient state,<wbr/> the camera device may
6837skip reporting this state in capture
6838result.<wbr/></p></span>
6839                  </li>
6840                  <li>
6841                    <span class="entry_type_enum_name">PASSIVE_SCAN</span>
6842                    <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
6843camera device in a continuous autofocus mode.<wbr/></p>
6844<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
6845state,<wbr/> the camera device may skip reporting this state in
6846capture result.<wbr/></p></span>
6847                  </li>
6848                  <li>
6849                    <span class="entry_type_enum_name">PASSIVE_FOCUSED</span>
6850                    <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
6851restart scanning at any time.<wbr/></p>
6852<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
6853state,<wbr/> the camera device may skip reporting this state in
6854capture result.<wbr/></p></span>
6855                  </li>
6856                  <li>
6857                    <span class="entry_type_enum_name">ACTIVE_SCAN</span>
6858                    <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
6859triggered by AF trigger.<wbr/></p>
6860<p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
6861state,<wbr/> the camera device may skip reporting this state in
6862capture result.<wbr/></p></span>
6863                  </li>
6864                  <li>
6865                    <span class="entry_type_enum_name">FOCUSED_LOCKED</span>
6866                    <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
6867focus.<wbr/></p>
6868<p>This state is reached only after an explicit START AF trigger has been
6869sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p>
6870<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
6871a 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>
6872                  </li>
6873                  <li>
6874                    <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span>
6875                    <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
6876focus.<wbr/></p>
6877<p>This state is reached only after an explicit START AF trigger has been
6878sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p>
6879<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
6880a 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>
6881                  </li>
6882                  <li>
6883                    <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span>
6884                    <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
6885and may restart scanning at any time.<wbr/></p>
6886<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
6887device may skip reporting this state in capture result.<wbr/></p>
6888<p>LEGACY camera devices do not support this state.<wbr/> When a passive
6889scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span>
6890                  </li>
6891                </ul>
6892
6893            </td> <!-- entry_type -->
6894
6895            <td class="entry_description">
6896              <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
6897            </td>
6898
6899            <td class="entry_units">
6900            </td>
6901
6902            <td class="entry_range">
6903            </td>
6904
6905            <td class="entry_tags">
6906            </td>
6907
6908          </tr>
6909          <tr class="entries_header">
6910            <th class="th_details" colspan="5">Details</th>
6911          </tr>
6912          <tr class="entry_cont">
6913            <td class="entry_details" colspan="5">
6914              <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
6915resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6916or <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
6917the algorithm states to INACTIVE.<wbr/></p>
6918<p>The camera device can do several state transitions between two results,<wbr/> if it is
6919allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6920seen in a result.<wbr/></p>
6921<p>The state in the result is the state for this image (in sync with this image): if
6922AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
6923be sharp.<wbr/></p>
6924<p>Below are state transition tables for different AF modes.<wbr/></p>
6925<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>
6926<table>
6927<thead>
6928<tr>
6929<th align="center">State</th>
6930<th align="center">Transition Cause</th>
6931<th align="center">New State</th>
6932<th align="center">Notes</th>
6933</tr>
6934</thead>
6935<tbody>
6936<tr>
6937<td align="center">INACTIVE</td>
6938<td align="center"></td>
6939<td align="center">INACTIVE</td>
6940<td align="center">Never changes</td>
6941</tr>
6942</tbody>
6943</table>
6944<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>
6945<table>
6946<thead>
6947<tr>
6948<th align="center">State</th>
6949<th align="center">Transition Cause</th>
6950<th align="center">New State</th>
6951<th align="center">Notes</th>
6952</tr>
6953</thead>
6954<tbody>
6955<tr>
6956<td align="center">INACTIVE</td>
6957<td align="center">AF_<wbr/>TRIGGER</td>
6958<td align="center">ACTIVE_<wbr/>SCAN</td>
6959<td align="center">Start AF sweep,<wbr/> Lens now moving</td>
6960</tr>
6961<tr>
6962<td align="center">ACTIVE_<wbr/>SCAN</td>
6963<td align="center">AF sweep done</td>
6964<td align="center">FOCUSED_<wbr/>LOCKED</td>
6965<td align="center">Focused,<wbr/> Lens now locked</td>
6966</tr>
6967<tr>
6968<td align="center">ACTIVE_<wbr/>SCAN</td>
6969<td align="center">AF sweep done</td>
6970<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6971<td align="center">Not focused,<wbr/> Lens now locked</td>
6972</tr>
6973<tr>
6974<td align="center">ACTIVE_<wbr/>SCAN</td>
6975<td align="center">AF_<wbr/>CANCEL</td>
6976<td align="center">INACTIVE</td>
6977<td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
6978</tr>
6979<tr>
6980<td align="center">FOCUSED_<wbr/>LOCKED</td>
6981<td align="center">AF_<wbr/>CANCEL</td>
6982<td align="center">INACTIVE</td>
6983<td align="center">Cancel/<wbr/>reset AF</td>
6984</tr>
6985<tr>
6986<td align="center">FOCUSED_<wbr/>LOCKED</td>
6987<td align="center">AF_<wbr/>TRIGGER</td>
6988<td align="center">ACTIVE_<wbr/>SCAN</td>
6989<td align="center">Start new sweep,<wbr/> Lens now moving</td>
6990</tr>
6991<tr>
6992<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6993<td align="center">AF_<wbr/>CANCEL</td>
6994<td align="center">INACTIVE</td>
6995<td align="center">Cancel/<wbr/>reset AF</td>
6996</tr>
6997<tr>
6998<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6999<td align="center">AF_<wbr/>TRIGGER</td>
7000<td align="center">ACTIVE_<wbr/>SCAN</td>
7001<td align="center">Start new sweep,<wbr/> Lens now moving</td>
7002</tr>
7003<tr>
7004<td align="center">Any state</td>
7005<td align="center">Mode change</td>
7006<td align="center">INACTIVE</td>
7007<td align="center"></td>
7008</tr>
7009</tbody>
7010</table>
7011<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7012without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7013can be skipped in that manner is called a transient state.<wbr/></p>
7014<p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
7015state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
7016one or more transient states between two results.<wbr/> See below table for examples:</p>
7017<table>
7018<thead>
7019<tr>
7020<th align="center">State</th>
7021<th align="center">Transition Cause</th>
7022<th align="center">New State</th>
7023<th align="center">Notes</th>
7024</tr>
7025</thead>
7026<tbody>
7027<tr>
7028<td align="center">INACTIVE</td>
7029<td align="center">AF_<wbr/>TRIGGER</td>
7030<td align="center">FOCUSED_<wbr/>LOCKED</td>
7031<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7032</tr>
7033<tr>
7034<td align="center">INACTIVE</td>
7035<td align="center">AF_<wbr/>TRIGGER</td>
7036<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7037<td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
7038</tr>
7039<tr>
7040<td align="center">FOCUSED_<wbr/>LOCKED</td>
7041<td align="center">AF_<wbr/>TRIGGER</td>
7042<td align="center">FOCUSED_<wbr/>LOCKED</td>
7043<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7044</tr>
7045<tr>
7046<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7047<td align="center">AF_<wbr/>TRIGGER</td>
7048<td align="center">FOCUSED_<wbr/>LOCKED</td>
7049<td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
7050</tr>
7051</tbody>
7052</table>
7053<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>
7054<table>
7055<thead>
7056<tr>
7057<th align="center">State</th>
7058<th align="center">Transition Cause</th>
7059<th align="center">New State</th>
7060<th align="center">Notes</th>
7061</tr>
7062</thead>
7063<tbody>
7064<tr>
7065<td align="center">INACTIVE</td>
7066<td align="center">Camera device initiates new scan</td>
7067<td align="center">PASSIVE_<wbr/>SCAN</td>
7068<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7069</tr>
7070<tr>
7071<td align="center">INACTIVE</td>
7072<td align="center">AF_<wbr/>TRIGGER</td>
7073<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7074<td align="center">AF state query,<wbr/> Lens now locked</td>
7075</tr>
7076<tr>
7077<td align="center">PASSIVE_<wbr/>SCAN</td>
7078<td align="center">Camera device completes current scan</td>
7079<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7080<td align="center">End AF scan,<wbr/> Lens now locked</td>
7081</tr>
7082<tr>
7083<td align="center">PASSIVE_<wbr/>SCAN</td>
7084<td align="center">Camera device fails current scan</td>
7085<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7086<td align="center">End AF scan,<wbr/> Lens now locked</td>
7087</tr>
7088<tr>
7089<td align="center">PASSIVE_<wbr/>SCAN</td>
7090<td align="center">AF_<wbr/>TRIGGER</td>
7091<td align="center">FOCUSED_<wbr/>LOCKED</td>
7092<td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td>
7093</tr>
7094<tr>
7095<td align="center">PASSIVE_<wbr/>SCAN</td>
7096<td align="center">AF_<wbr/>TRIGGER</td>
7097<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7098<td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td>
7099</tr>
7100<tr>
7101<td align="center">PASSIVE_<wbr/>SCAN</td>
7102<td align="center">AF_<wbr/>CANCEL</td>
7103<td align="center">INACTIVE</td>
7104<td align="center">Reset lens position,<wbr/> Lens now locked</td>
7105</tr>
7106<tr>
7107<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7108<td align="center">Camera device initiates new scan</td>
7109<td align="center">PASSIVE_<wbr/>SCAN</td>
7110<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7111</tr>
7112<tr>
7113<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7114<td align="center">Camera device initiates new scan</td>
7115<td align="center">PASSIVE_<wbr/>SCAN</td>
7116<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7117</tr>
7118<tr>
7119<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7120<td align="center">AF_<wbr/>TRIGGER</td>
7121<td align="center">FOCUSED_<wbr/>LOCKED</td>
7122<td align="center">Immediate transition,<wbr/> lens now locked</td>
7123</tr>
7124<tr>
7125<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7126<td align="center">AF_<wbr/>TRIGGER</td>
7127<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7128<td align="center">Immediate transition,<wbr/> lens now locked</td>
7129</tr>
7130<tr>
7131<td align="center">FOCUSED_<wbr/>LOCKED</td>
7132<td align="center">AF_<wbr/>TRIGGER</td>
7133<td align="center">FOCUSED_<wbr/>LOCKED</td>
7134<td align="center">No effect</td>
7135</tr>
7136<tr>
7137<td align="center">FOCUSED_<wbr/>LOCKED</td>
7138<td align="center">AF_<wbr/>CANCEL</td>
7139<td align="center">INACTIVE</td>
7140<td align="center">Restart AF scan</td>
7141</tr>
7142<tr>
7143<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7144<td align="center">AF_<wbr/>TRIGGER</td>
7145<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7146<td align="center">No effect</td>
7147</tr>
7148<tr>
7149<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7150<td align="center">AF_<wbr/>CANCEL</td>
7151<td align="center">INACTIVE</td>
7152<td align="center">Restart AF scan</td>
7153</tr>
7154</tbody>
7155</table>
7156<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>
7157<table>
7158<thead>
7159<tr>
7160<th align="center">State</th>
7161<th align="center">Transition Cause</th>
7162<th align="center">New State</th>
7163<th align="center">Notes</th>
7164</tr>
7165</thead>
7166<tbody>
7167<tr>
7168<td align="center">INACTIVE</td>
7169<td align="center">Camera device initiates new scan</td>
7170<td align="center">PASSIVE_<wbr/>SCAN</td>
7171<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7172</tr>
7173<tr>
7174<td align="center">INACTIVE</td>
7175<td align="center">AF_<wbr/>TRIGGER</td>
7176<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7177<td align="center">AF state query,<wbr/> Lens now locked</td>
7178</tr>
7179<tr>
7180<td align="center">PASSIVE_<wbr/>SCAN</td>
7181<td align="center">Camera device completes current scan</td>
7182<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7183<td align="center">End AF scan,<wbr/> Lens now locked</td>
7184</tr>
7185<tr>
7186<td align="center">PASSIVE_<wbr/>SCAN</td>
7187<td align="center">Camera device fails current scan</td>
7188<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7189<td align="center">End AF scan,<wbr/> Lens now locked</td>
7190</tr>
7191<tr>
7192<td align="center">PASSIVE_<wbr/>SCAN</td>
7193<td align="center">AF_<wbr/>TRIGGER</td>
7194<td align="center">FOCUSED_<wbr/>LOCKED</td>
7195<td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td>
7196</tr>
7197<tr>
7198<td align="center">PASSIVE_<wbr/>SCAN</td>
7199<td align="center">AF_<wbr/>TRIGGER</td>
7200<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7201<td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td>
7202</tr>
7203<tr>
7204<td align="center">PASSIVE_<wbr/>SCAN</td>
7205<td align="center">AF_<wbr/>CANCEL</td>
7206<td align="center">INACTIVE</td>
7207<td align="center">Reset lens position,<wbr/> Lens now locked</td>
7208</tr>
7209<tr>
7210<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7211<td align="center">Camera device initiates new scan</td>
7212<td align="center">PASSIVE_<wbr/>SCAN</td>
7213<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7214</tr>
7215<tr>
7216<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7217<td align="center">Camera device initiates new scan</td>
7218<td align="center">PASSIVE_<wbr/>SCAN</td>
7219<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7220</tr>
7221<tr>
7222<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7223<td align="center">AF_<wbr/>TRIGGER</td>
7224<td align="center">FOCUSED_<wbr/>LOCKED</td>
7225<td align="center">Immediate trans.<wbr/> Lens now locked</td>
7226</tr>
7227<tr>
7228<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7229<td align="center">AF_<wbr/>TRIGGER</td>
7230<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7231<td align="center">Immediate trans.<wbr/> Lens now locked</td>
7232</tr>
7233<tr>
7234<td align="center">FOCUSED_<wbr/>LOCKED</td>
7235<td align="center">AF_<wbr/>TRIGGER</td>
7236<td align="center">FOCUSED_<wbr/>LOCKED</td>
7237<td align="center">No effect</td>
7238</tr>
7239<tr>
7240<td align="center">FOCUSED_<wbr/>LOCKED</td>
7241<td align="center">AF_<wbr/>CANCEL</td>
7242<td align="center">INACTIVE</td>
7243<td align="center">Restart AF scan</td>
7244</tr>
7245<tr>
7246<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7247<td align="center">AF_<wbr/>TRIGGER</td>
7248<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7249<td align="center">No effect</td>
7250</tr>
7251<tr>
7252<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7253<td align="center">AF_<wbr/>CANCEL</td>
7254<td align="center">INACTIVE</td>
7255<td align="center">Restart AF scan</td>
7256</tr>
7257</tbody>
7258</table>
7259<p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
7260(AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
7261camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
7262will be evaluated in the context of the new mode in the request.<wbr/>
7263See below table for examples:</p>
7264<table>
7265<thead>
7266<tr>
7267<th align="center">State</th>
7268<th align="center">Transition Cause</th>
7269<th align="center">New State</th>
7270<th align="center">Notes</th>
7271</tr>
7272</thead>
7273<tbody>
7274<tr>
7275<td align="center">any state</td>
7276<td align="center">CAF--&gt;AUTO mode switch</td>
7277<td align="center">INACTIVE</td>
7278<td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
7279</tr>
7280<tr>
7281<td align="center">any state</td>
7282<td align="center">CAF--&gt;AUTO mode switch with AF_<wbr/>TRIGGER</td>
7283<td align="center">trigger-reachable states from INACTIVE</td>
7284<td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
7285</tr>
7286<tr>
7287<td align="center">any state</td>
7288<td align="center">AUTO--&gt;CAF mode switch</td>
7289<td align="center">passively reachable states from INACTIVE</td>
7290<td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
7291</tr>
7292</tbody>
7293</table>
7294            </td>
7295          </tr>
7296
7297
7298          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7299           <!-- end of entry -->
7300        
7301                
7302          <tr class="entry" id="dynamic_android.control.afTriggerId">
7303            <td class="entry_name
7304                entry_name_deprecated
7305             " rowspan="3">
7306              android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
7307            </td>
7308            <td class="entry_type">
7309                <span class="entry_type_name">int32</span>
7310
7311              <span class="entry_type_visibility"> [system]</span>
7312
7313
7314
7315              <span class="entry_type_deprecated">[deprecated] </span>
7316
7317
7318
7319            </td> <!-- entry_type -->
7320
7321            <td class="entry_description">
7322              <p>The ID sent with the latest
7323CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
7324            </td>
7325
7326            <td class="entry_units">
7327            </td>
7328
7329            <td class="entry_range">
7330              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
7331            </td>
7332
7333            <td class="entry_tags">
7334            </td>
7335
7336          </tr>
7337          <tr class="entries_header">
7338            <th class="th_details" colspan="5">Details</th>
7339          </tr>
7340          <tr class="entry_cont">
7341            <td class="entry_details" colspan="5">
7342              <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
7343received yet by HAL.<wbr/> Always updated even if AF algorithm
7344ignores the trigger</p>
7345            </td>
7346          </tr>
7347
7348
7349          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7350           <!-- end of entry -->
7351        
7352                
7353          <tr class="entry" id="dynamic_android.control.awbLock">
7354            <td class="entry_name
7355             " rowspan="3">
7356              android.<wbr/>control.<wbr/>awb<wbr/>Lock
7357            </td>
7358            <td class="entry_type">
7359                <span class="entry_type_name entry_type_name_enum">byte</span>
7360
7361              <span class="entry_type_visibility"> [public as boolean]</span>
7362
7363
7364              <span class="entry_type_hwlevel">[legacy] </span>
7365
7366
7367
7368                <ul class="entry_type_enum">
7369                  <li>
7370                    <span class="entry_type_enum_name">OFF</span>
7371                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
7372algorithm is free to update its parameters if in AUTO
7373mode.<wbr/></p></span>
7374                  </li>
7375                  <li>
7376                    <span class="entry_type_enum_name">ON</span>
7377                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
7378algorithm will not update its parameters while the lock
7379is active.<wbr/></p></span>
7380                  </li>
7381                </ul>
7382
7383            </td> <!-- entry_type -->
7384
7385            <td class="entry_description">
7386              <p>Whether auto-white balance (AWB) is currently locked to its
7387latest calculated values.<wbr/></p>
7388            </td>
7389
7390            <td class="entry_units">
7391            </td>
7392
7393            <td class="entry_range">
7394            </td>
7395
7396            <td class="entry_tags">
7397              <ul class="entry_tags">
7398                  <li><a href="#tag_BC">BC</a></li>
7399              </ul>
7400            </td>
7401
7402          </tr>
7403          <tr class="entries_header">
7404            <th class="th_details" colspan="5">Details</th>
7405          </tr>
7406          <tr class="entry_cont">
7407            <td class="entry_details" colspan="5">
7408              <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
7409and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
7410<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
7411get locked do not necessarily correspond to the settings that were present in the
7412latest capture result received from the camera device,<wbr/> since additional captures
7413and AWB updates may have occurred even before the result was sent out.<wbr/> If an
7414application is switching between automatic and manual control and wishes to eliminate
7415any flicker during the switch,<wbr/> the following procedure is recommended:</p>
7416<ol>
7417<li>Starting in auto-AWB mode:</li>
7418<li>Lock AWB</li>
7419<li>Wait for the first result to be output that has the AWB locked</li>
7420<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
7421<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
7422</ol>
7423<p>Note that AWB lock is only meaningful when
7424<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
7425AWB is already fixed to a specific setting.<wbr/></p>
7426<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
7427            </td>
7428          </tr>
7429
7430
7431          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7432           <!-- end of entry -->
7433        
7434                
7435          <tr class="entry" id="dynamic_android.control.awbMode">
7436            <td class="entry_name
7437             " rowspan="3">
7438              android.<wbr/>control.<wbr/>awb<wbr/>Mode
7439            </td>
7440            <td class="entry_type">
7441                <span class="entry_type_name entry_type_name_enum">byte</span>
7442
7443              <span class="entry_type_visibility"> [public]</span>
7444
7445
7446              <span class="entry_type_hwlevel">[legacy] </span>
7447
7448
7449
7450                <ul class="entry_type_enum">
7451                  <li>
7452                    <span class="entry_type_enum_name">OFF</span>
7453                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
7454<p>The application-selected color transform matrix
7455(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
7456(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
7457device for manual white balance control.<wbr/></p></span>
7458                  </li>
7459                  <li>
7460                    <span class="entry_type_enum_name">AUTO</span>
7461                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
7462<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7463and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7464For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7465values used by the camera device for the transform and gains
7466will be available in the capture result for this request.<wbr/></p></span>
7467                  </li>
7468                  <li>
7469                    <span class="entry_type_enum_name">INCANDESCENT</span>
7470                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7471the camera device uses incandescent light as the assumed scene
7472illumination for white balance.<wbr/></p>
7473<p>While the exact white balance transforms are up to the
7474camera device,<wbr/> they will approximately match the CIE
7475standard illuminant A.<wbr/></p>
7476<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7477and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7478For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7479values used by the camera device for the transform and gains
7480will be available in the capture result for this request.<wbr/></p></span>
7481                  </li>
7482                  <li>
7483                    <span class="entry_type_enum_name">FLUORESCENT</span>
7484                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7485the camera device uses fluorescent light as the assumed scene
7486illumination for white balance.<wbr/></p>
7487<p>While the exact white balance transforms are up to the
7488camera device,<wbr/> they will approximately match the CIE
7489standard illuminant F2.<wbr/></p>
7490<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7491and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7492For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7493values used by the camera device for the transform and gains
7494will be available in the capture result for this request.<wbr/></p></span>
7495                  </li>
7496                  <li>
7497                    <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
7498                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7499the camera device uses warm fluorescent light as the assumed scene
7500illumination for white balance.<wbr/></p>
7501<p>While the exact white balance transforms are up to the
7502camera device,<wbr/> they will approximately match the CIE
7503standard illuminant F4.<wbr/></p>
7504<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7505and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7506For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7507values used by the camera device for the transform and gains
7508will be available in the capture result for this request.<wbr/></p></span>
7509                  </li>
7510                  <li>
7511                    <span class="entry_type_enum_name">DAYLIGHT</span>
7512                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7513the camera device uses daylight light as the assumed scene
7514illumination for white balance.<wbr/></p>
7515<p>While the exact white balance transforms are up to the
7516camera device,<wbr/> they will approximately match the CIE
7517standard illuminant D65.<wbr/></p>
7518<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7519and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7520For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7521values used by the camera device for the transform and gains
7522will be available in the capture result for this request.<wbr/></p></span>
7523                  </li>
7524                  <li>
7525                    <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
7526                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7527the camera device uses cloudy daylight light as the assumed scene
7528illumination for white balance.<wbr/></p>
7529<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7530and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7531For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7532values used by the camera device for the transform and gains
7533will be available in the capture result for this request.<wbr/></p></span>
7534                  </li>
7535                  <li>
7536                    <span class="entry_type_enum_name">TWILIGHT</span>
7537                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7538the camera device uses twilight light as the assumed scene
7539illumination for white balance.<wbr/></p>
7540<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7541and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7542For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7543values used by the camera device for the transform and gains
7544will be available in the capture result for this request.<wbr/></p></span>
7545                  </li>
7546                  <li>
7547                    <span class="entry_type_enum_name">SHADE</span>
7548                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7549the camera device uses shade light as the assumed scene
7550illumination for white balance.<wbr/></p>
7551<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7552and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7553For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7554values used by the camera device for the transform and gains
7555will be available in the capture result for this request.<wbr/></p></span>
7556                  </li>
7557                </ul>
7558
7559            </td> <!-- entry_type -->
7560
7561            <td class="entry_description">
7562              <p>Whether auto-white balance (AWB) is currently setting the color
7563transform fields,<wbr/> and what its illumination target
7564is.<wbr/></p>
7565            </td>
7566
7567            <td class="entry_units">
7568            </td>
7569
7570            <td class="entry_range">
7571              <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
7572            </td>
7573
7574            <td class="entry_tags">
7575              <ul class="entry_tags">
7576                  <li><a href="#tag_BC">BC</a></li>
7577              </ul>
7578            </td>
7579
7580          </tr>
7581          <tr class="entries_header">
7582            <th class="th_details" colspan="5">Details</th>
7583          </tr>
7584          <tr class="entry_cont">
7585            <td class="entry_details" colspan="5">
7586              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
7587<p>When set to the ON mode,<wbr/> the camera device's auto-white balance
7588routine is enabled,<wbr/> overriding the application's selected
7589<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
7590<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>
7591is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
7592also 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
7593setting AE mode to OFF.<wbr/></p>
7594<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
7595routine is disabled.<wbr/> The application manually controls the white
7596balance 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>
7597and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
7598<p>When set to any other modes,<wbr/> the camera device's auto-white
7599balance routine is disabled.<wbr/> The camera device uses each
7600particular illumination target for white balance
7601adjustment.<wbr/> The application's values for
7602<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
7603<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
7604<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
7605            </td>
7606          </tr>
7607
7608
7609          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7610           <!-- end of entry -->
7611        
7612                
7613          <tr class="entry" id="dynamic_android.control.awbRegions">
7614            <td class="entry_name
7615             " rowspan="5">
7616              android.<wbr/>control.<wbr/>awb<wbr/>Regions
7617            </td>
7618            <td class="entry_type">
7619                <span class="entry_type_name">int32</span>
7620                <span class="entry_type_container">x</span>
7621
7622                <span class="entry_type_array">
7623                  5 x area_count
7624                </span>
7625              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
7626
7627
7628
7629
7630
7631
7632            </td> <!-- entry_type -->
7633
7634            <td class="entry_description">
7635              <p>List of metering areas to use for auto-white-balance illuminant
7636estimation.<wbr/></p>
7637            </td>
7638
7639            <td class="entry_units">
7640              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
7641            </td>
7642
7643            <td class="entry_range">
7644              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
7645<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
7646            </td>
7647
7648            <td class="entry_tags">
7649              <ul class="entry_tags">
7650                  <li><a href="#tag_BC">BC</a></li>
7651              </ul>
7652            </td>
7653
7654          </tr>
7655          <tr class="entries_header">
7656            <th class="th_details" colspan="5">Details</th>
7657          </tr>
7658          <tr class="entry_cont">
7659            <td class="entry_details" colspan="5">
7660              <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
7661Otherwise will always be present.<wbr/></p>
7662<p>The maximum number of regions supported by the device is determined by the value
7663of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
7664<p>The coordinate system is based on the active pixel array,<wbr/>
7665with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
7666(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7667<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
7668bottom-right pixel in the active pixel array.<wbr/></p>
7669<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
7670for every pixel in the area.<wbr/> This means that a large metering area
7671with the same weight as a smaller area will have more effect in
7672the metering result.<wbr/> Metering areas can partially overlap and the
7673camera device will add the weights in the overlap region.<wbr/></p>
7674<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
7675only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
76760 weight is ignored.<wbr/></p>
7677<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
7678camera device.<wbr/></p>
7679<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
7680capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
7681region and output only the intersection rectangle as the metering region in the result
7682metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
7683not reported in the result metadata.<wbr/></p>
7684            </td>
7685          </tr>
7686
7687          <tr class="entries_header">
7688            <th class="th_details" colspan="5">HAL Implementation Details</th>
7689          </tr>
7690          <tr class="entry_cont">
7691            <td class="entry_details" colspan="5">
7692              <p>The HAL level representation of MeteringRectangle[] is a
7693int[5 * area_<wbr/>count].<wbr/>
7694Every five elements represent a metering region of
7695(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
7696The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
7697exclusive on xmax and ymax.<wbr/></p>
7698            </td>
7699          </tr>
7700
7701          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7702           <!-- end of entry -->
7703        
7704                
7705          <tr class="entry" id="dynamic_android.control.captureIntent">
7706            <td class="entry_name
7707             " rowspan="3">
7708              android.<wbr/>control.<wbr/>capture<wbr/>Intent
7709            </td>
7710            <td class="entry_type">
7711                <span class="entry_type_name entry_type_name_enum">byte</span>
7712
7713              <span class="entry_type_visibility"> [public]</span>
7714
7715
7716              <span class="entry_type_hwlevel">[legacy] </span>
7717
7718
7719
7720                <ul class="entry_type_enum">
7721                  <li>
7722                    <span class="entry_type_enum_name">CUSTOM</span>
7723                    <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
7724categories.<wbr/> The camera device will default to preview-like
7725behavior.<wbr/></p></span>
7726                  </li>
7727                  <li>
7728                    <span class="entry_type_enum_name">PREVIEW</span>
7729                    <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
7730<p>The precapture trigger may be used to start off a metering
7731w/<wbr/>flash sequence.<wbr/></p></span>
7732                  </li>
7733                  <li>
7734                    <span class="entry_type_enum_name">STILL_CAPTURE</span>
7735                    <span class="entry_type_enum_notes"><p>This request is for a still capture-type
7736use case.<wbr/></p>
7737<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
7738                  </li>
7739                  <li>
7740                    <span class="entry_type_enum_name">VIDEO_RECORD</span>
7741                    <span class="entry_type_enum_notes"><p>This request is for a video recording
7742use case.<wbr/></p></span>
7743                  </li>
7744                  <li>
7745                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
7746                    <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
7747image while recording video) use case.<wbr/></p>
7748<p>The camera device should take the highest-quality image
7749possible (given the other settings) without disrupting the
7750frame rate of video recording.<wbr/>  </p></span>
7751                  </li>
7752                  <li>
7753                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
7754                    <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
7755application will stream full-resolution images and
7756reprocess one or several later for a final
7757capture.<wbr/></p></span>
7758                  </li>
7759                  <li>
7760                    <span class="entry_type_enum_name">MANUAL</span>
7761                    <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
7762the applications want to directly control the capture parameters.<wbr/></p>
7763<p>For example,<wbr/> the application may wish to manually control
7764<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>
7765                  </li>
7766                </ul>
7767
7768            </td> <!-- entry_type -->
7769
7770            <td class="entry_description">
7771              <p>Information to the camera device 3A (auto-exposure,<wbr/>
7772auto-focus,<wbr/> auto-white balance) routines about the purpose
7773of this capture,<wbr/> to help the camera device to decide optimal 3A
7774strategy.<wbr/></p>
7775            </td>
7776
7777            <td class="entry_units">
7778            </td>
7779
7780            <td class="entry_range">
7781            </td>
7782
7783            <td class="entry_tags">
7784              <ul class="entry_tags">
7785                  <li><a href="#tag_BC">BC</a></li>
7786              </ul>
7787            </td>
7788
7789          </tr>
7790          <tr class="entries_header">
7791            <th class="th_details" colspan="5">Details</th>
7792          </tr>
7793          <tr class="entry_cont">
7794            <td class="entry_details" colspan="5">
7795              <p>This control (except for MANUAL) is only effective if
7796<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
7797<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
7798contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
7799<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
7800always supported.<wbr/></p>
7801            </td>
7802          </tr>
7803
7804
7805          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7806           <!-- end of entry -->
7807        
7808                
7809          <tr class="entry" id="dynamic_android.control.awbState">
7810            <td class="entry_name
7811             " rowspan="3">
7812              android.<wbr/>control.<wbr/>awb<wbr/>State
7813            </td>
7814            <td class="entry_type">
7815                <span class="entry_type_name entry_type_name_enum">byte</span>
7816
7817              <span class="entry_type_visibility"> [public]</span>
7818
7819
7820              <span class="entry_type_hwlevel">[limited] </span>
7821
7822
7823
7824                <ul class="entry_type_enum">
7825                  <li>
7826                    <span class="entry_type_enum_name">INACTIVE</span>
7827                    <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
7828<p>When a camera device is opened,<wbr/> it starts in this
7829state.<wbr/> This is a transient state,<wbr/> the camera device may
7830skip reporting this state in capture
7831result.<wbr/></p></span>
7832                  </li>
7833                  <li>
7834                    <span class="entry_type_enum_name">SEARCHING</span>
7835                    <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
7836values for the current scene.<wbr/></p>
7837<p>This is a transient state,<wbr/> the camera device
7838may skip reporting this state in capture result.<wbr/></p></span>
7839                  </li>
7840                  <li>
7841                    <span class="entry_type_enum_name">CONVERGED</span>
7842                    <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
7843current scene.<wbr/></p></span>
7844                  </li>
7845                  <li>
7846                    <span class="entry_type_enum_name">LOCKED</span>
7847                    <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
7848                  </li>
7849                </ul>
7850
7851            </td> <!-- entry_type -->
7852
7853            <td class="entry_description">
7854              <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
7855            </td>
7856
7857            <td class="entry_units">
7858            </td>
7859
7860            <td class="entry_range">
7861            </td>
7862
7863            <td class="entry_tags">
7864            </td>
7865
7866          </tr>
7867          <tr class="entries_header">
7868            <th class="th_details" colspan="5">Details</th>
7869          </tr>
7870          <tr class="entry_cont">
7871            <td class="entry_details" colspan="5">
7872              <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
7873resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
7874or <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
7875the algorithm states to INACTIVE.<wbr/></p>
7876<p>The camera device can do several state transitions between two results,<wbr/> if it is
7877allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
7878a result.<wbr/></p>
7879<p>The state in the result is the state for this image (in sync with this image): if
7880AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
7881be good to use.<wbr/></p>
7882<p>Below are state transition tables for different AWB modes.<wbr/></p>
7883<p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p>
7884<table>
7885<thead>
7886<tr>
7887<th align="center">State</th>
7888<th align="center">Transition Cause</th>
7889<th align="center">New State</th>
7890<th align="center">Notes</th>
7891</tr>
7892</thead>
7893<tbody>
7894<tr>
7895<td align="center">INACTIVE</td>
7896<td align="center"></td>
7897<td align="center">INACTIVE</td>
7898<td align="center">Camera device auto white balance algorithm is disabled</td>
7899</tr>
7900</tbody>
7901</table>
7902<p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
7903<table>
7904<thead>
7905<tr>
7906<th align="center">State</th>
7907<th align="center">Transition Cause</th>
7908<th align="center">New State</th>
7909<th align="center">Notes</th>
7910</tr>
7911</thead>
7912<tbody>
7913<tr>
7914<td align="center">INACTIVE</td>
7915<td align="center">Camera device initiates AWB scan</td>
7916<td align="center">SEARCHING</td>
7917<td align="center">Values changing</td>
7918</tr>
7919<tr>
7920<td align="center">INACTIVE</td>
7921<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
7922<td align="center">LOCKED</td>
7923<td align="center">Values locked</td>
7924</tr>
7925<tr>
7926<td align="center">SEARCHING</td>
7927<td align="center">Camera device finishes AWB scan</td>
7928<td align="center">CONVERGED</td>
7929<td align="center">Good values,<wbr/> not changing</td>
7930</tr>
7931<tr>
7932<td align="center">SEARCHING</td>
7933<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
7934<td align="center">LOCKED</td>
7935<td align="center">Values locked</td>
7936</tr>
7937<tr>
7938<td align="center">CONVERGED</td>
7939<td align="center">Camera device initiates AWB scan</td>
7940<td align="center">SEARCHING</td>
7941<td align="center">Values changing</td>
7942</tr>
7943<tr>
7944<td align="center">CONVERGED</td>
7945<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
7946<td align="center">LOCKED</td>
7947<td align="center">Values locked</td>
7948</tr>
7949<tr>
7950<td align="center">LOCKED</td>
7951<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
7952<td align="center">SEARCHING</td>
7953<td align="center">Values not good after unlock</td>
7954</tr>
7955</tbody>
7956</table>
7957<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7958without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7959can be skipped in that manner is called a transient state.<wbr/></p>
7960<p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
7961listed in above table,<wbr/> it is also legal for the camera device to skip one or more
7962transient states between two results.<wbr/> See below table for examples:</p>
7963<table>
7964<thead>
7965<tr>
7966<th align="center">State</th>
7967<th align="center">Transition Cause</th>
7968<th align="center">New State</th>
7969<th align="center">Notes</th>
7970</tr>
7971</thead>
7972<tbody>
7973<tr>
7974<td align="center">INACTIVE</td>
7975<td align="center">Camera device finished AWB scan</td>
7976<td align="center">CONVERGED</td>
7977<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
7978</tr>
7979<tr>
7980<td align="center">LOCKED</td>
7981<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
7982<td align="center">CONVERGED</td>
7983<td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
7984</tr>
7985</tbody>
7986</table>
7987            </td>
7988          </tr>
7989
7990
7991          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7992           <!-- end of entry -->
7993        
7994                
7995          <tr class="entry" id="dynamic_android.control.effectMode">
7996            <td class="entry_name
7997             " rowspan="3">
7998              android.<wbr/>control.<wbr/>effect<wbr/>Mode
7999            </td>
8000            <td class="entry_type">
8001                <span class="entry_type_name entry_type_name_enum">byte</span>
8002
8003              <span class="entry_type_visibility"> [public]</span>
8004
8005
8006              <span class="entry_type_hwlevel">[legacy] </span>
8007
8008
8009
8010                <ul class="entry_type_enum">
8011                  <li>
8012                    <span class="entry_type_enum_name">OFF</span>
8013                    <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
8014                  </li>
8015                  <li>
8016                    <span class="entry_type_enum_name">MONO</span>
8017                    <span class="entry_type_enum_optional">[optional]</span>
8018                    <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
8019a single color.<wbr/></p>
8020<p>This will typically be grayscale.<wbr/></p></span>
8021                  </li>
8022                  <li>
8023                    <span class="entry_type_enum_name">NEGATIVE</span>
8024                    <span class="entry_type_enum_optional">[optional]</span>
8025                    <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
8026are inverted.<wbr/></p></span>
8027                  </li>
8028                  <li>
8029                    <span class="entry_type_enum_name">SOLARIZE</span>
8030                    <span class="entry_type_enum_optional">[optional]</span>
8031                    <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
8032image is wholly or partially reversed in
8033tone.<wbr/></p></span>
8034                  </li>
8035                  <li>
8036                    <span class="entry_type_enum_name">SEPIA</span>
8037                    <span class="entry_type_enum_optional">[optional]</span>
8038                    <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
8039gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
8040                  </li>
8041                  <li>
8042                    <span class="entry_type_enum_name">POSTERIZE</span>
8043                    <span class="entry_type_enum_optional">[optional]</span>
8044                    <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
8045discrete regions of tone rather than a continuous
8046gradient of tones.<wbr/></p></span>
8047                  </li>
8048                  <li>
8049                    <span class="entry_type_enum_name">WHITEBOARD</span>
8050                    <span class="entry_type_enum_optional">[optional]</span>
8051                    <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
8052as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
8053                  </li>
8054                  <li>
8055                    <span class="entry_type_enum_name">BLACKBOARD</span>
8056                    <span class="entry_type_enum_optional">[optional]</span>
8057                    <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
8058as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
8059                  </li>
8060                  <li>
8061                    <span class="entry_type_enum_name">AQUA</span>
8062                    <span class="entry_type_enum_optional">[optional]</span>
8063                    <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
8064                  </li>
8065                </ul>
8066
8067            </td> <!-- entry_type -->
8068
8069            <td class="entry_description">
8070              <p>A special color effect to apply.<wbr/></p>
8071            </td>
8072
8073            <td class="entry_units">
8074            </td>
8075
8076            <td class="entry_range">
8077              <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
8078            </td>
8079
8080            <td class="entry_tags">
8081              <ul class="entry_tags">
8082                  <li><a href="#tag_BC">BC</a></li>
8083              </ul>
8084            </td>
8085
8086          </tr>
8087          <tr class="entries_header">
8088            <th class="th_details" colspan="5">Details</th>
8089          </tr>
8090          <tr class="entry_cont">
8091            <td class="entry_details" colspan="5">
8092              <p>When this mode is set,<wbr/> a color effect will be applied
8093to images produced by the camera device.<wbr/> The interpretation
8094and implementation of these color effects is left to the
8095implementor of the camera device,<wbr/> and should not be
8096depended on to be consistent (or present) across all
8097devices.<wbr/></p>
8098            </td>
8099          </tr>
8100
8101
8102          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8103           <!-- end of entry -->
8104        
8105                
8106          <tr class="entry" id="dynamic_android.control.mode">
8107            <td class="entry_name
8108             " rowspan="3">
8109              android.<wbr/>control.<wbr/>mode
8110            </td>
8111            <td class="entry_type">
8112                <span class="entry_type_name entry_type_name_enum">byte</span>
8113
8114              <span class="entry_type_visibility"> [public]</span>
8115
8116
8117              <span class="entry_type_hwlevel">[legacy] </span>
8118
8119
8120
8121                <ul class="entry_type_enum">
8122                  <li>
8123                    <span class="entry_type_enum_name">OFF</span>
8124                    <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
8125<p>All control by the device's metering and focusing (3A)
8126routines is disabled,<wbr/> and no other settings in
8127android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
8128<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
8129device to select post-processing values for processing
8130blocks that do not allow for manual control,<wbr/> or are not
8131exposed by the camera API.<wbr/></p>
8132<p>However,<wbr/> the camera device's 3A routines may continue to
8133collect statistics and update their internal state so that
8134when control is switched to AUTO mode,<wbr/> good control values
8135can be immediately applied.<wbr/></p></span>
8136                  </li>
8137                  <li>
8138                    <span class="entry_type_enum_name">AUTO</span>
8139                    <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
8140<p>Manual control of capture parameters is disabled.<wbr/> All
8141controls in android.<wbr/>control.<wbr/>* besides sceneMode take
8142effect.<wbr/></p></span>
8143                  </li>
8144                  <li>
8145                    <span class="entry_type_enum_name">USE_SCENE_MODE</span>
8146                    <span class="entry_type_enum_optional">[optional]</span>
8147                    <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
8148<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
8149control.<wbr/>afMode controls; the camera device will ignore
8150those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
8151FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
8152This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
8153<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
8154contain some modes other than DISABLED).<wbr/></p></span>
8155                  </li>
8156                  <li>
8157                    <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
8158                    <span class="entry_type_enum_optional">[optional]</span>
8159                    <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
8160used by camera device background auto-exposure,<wbr/> auto-white balance and
8161auto-focus algorithms (3A) to update their statistics.<wbr/></p>
8162<p>Specifically,<wbr/> the 3A routines are locked to the last
8163values set from a request with AUTO,<wbr/> OFF,<wbr/> or
8164USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
8165collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
8166discarded by the camera device.<wbr/></p></span>
8167                  </li>
8168                </ul>
8169
8170            </td> <!-- entry_type -->
8171
8172            <td class="entry_description">
8173              <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
8174routines.<wbr/></p>
8175            </td>
8176
8177            <td class="entry_units">
8178            </td>
8179
8180            <td class="entry_range">
8181              <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
8182            </td>
8183
8184            <td class="entry_tags">
8185              <ul class="entry_tags">
8186                  <li><a href="#tag_BC">BC</a></li>
8187              </ul>
8188            </td>
8189
8190          </tr>
8191          <tr class="entries_header">
8192            <th class="th_details" colspan="5">Details</th>
8193          </tr>
8194          <tr class="entry_cont">
8195            <td class="entry_details" colspan="5">
8196              <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
8197by the camera device is disabled.<wbr/> The application must set the fields for
8198capture parameters itself.<wbr/></p>
8199<p>When set to AUTO,<wbr/> the individual algorithm controls in
8200android.<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>
8201<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
8202android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
8203one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
8204as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
8205<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
8206<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
8207is that this frame will not be used by camera device background 3A statistics
8208update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
8209where the application doesn't want a 3A manual control capture to affect
8210the subsequent auto 3A capture results.<wbr/></p>
8211            </td>
8212          </tr>
8213
8214
8215          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8216           <!-- end of entry -->
8217        
8218                
8219          <tr class="entry" id="dynamic_android.control.sceneMode">
8220            <td class="entry_name
8221             " rowspan="5">
8222              android.<wbr/>control.<wbr/>scene<wbr/>Mode
8223            </td>
8224            <td class="entry_type">
8225                <span class="entry_type_name entry_type_name_enum">byte</span>
8226
8227              <span class="entry_type_visibility"> [public]</span>
8228
8229
8230              <span class="entry_type_hwlevel">[legacy] </span>
8231
8232
8233
8234                <ul class="entry_type_enum">
8235                  <li>
8236                    <span class="entry_type_enum_name">DISABLED</span>
8237                    <span class="entry_type_enum_value">0</span>
8238                    <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
8239                  </li>
8240                  <li>
8241                    <span class="entry_type_enum_name">FACE_PRIORITY</span>
8242                    <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
8243detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
8244auto-exposure routines.<wbr/></p>
8245<p>If face detection statistics are disabled
8246(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/>
8247this should still operate correctly (but will not return
8248face detection statistics to the framework).<wbr/></p>
8249<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8250<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>
8251remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
8252                  </li>
8253                  <li>
8254                    <span class="entry_type_enum_name">ACTION</span>
8255                    <span class="entry_type_enum_optional">[optional]</span>
8256                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
8257<p>Similar to SPORTS.<wbr/></p></span>
8258                  </li>
8259                  <li>
8260                    <span class="entry_type_enum_name">PORTRAIT</span>
8261                    <span class="entry_type_enum_optional">[optional]</span>
8262                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
8263                  </li>
8264                  <li>
8265                    <span class="entry_type_enum_name">LANDSCAPE</span>
8266                    <span class="entry_type_enum_optional">[optional]</span>
8267                    <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
8268                  </li>
8269                  <li>
8270                    <span class="entry_type_enum_name">NIGHT</span>
8271                    <span class="entry_type_enum_optional">[optional]</span>
8272                    <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
8273                  </li>
8274                  <li>
8275                    <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
8276                    <span class="entry_type_enum_optional">[optional]</span>
8277                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
8278settings.<wbr/></p></span>
8279                  </li>
8280                  <li>
8281                    <span class="entry_type_enum_name">THEATRE</span>
8282                    <span class="entry_type_enum_optional">[optional]</span>
8283                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
8284remain off.<wbr/></p></span>
8285                  </li>
8286                  <li>
8287                    <span class="entry_type_enum_name">BEACH</span>
8288                    <span class="entry_type_enum_optional">[optional]</span>
8289                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
8290                  </li>
8291                  <li>
8292                    <span class="entry_type_enum_name">SNOW</span>
8293                    <span class="entry_type_enum_optional">[optional]</span>
8294                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
8295                  </li>
8296                  <li>
8297                    <span class="entry_type_enum_name">SUNSET</span>
8298                    <span class="entry_type_enum_optional">[optional]</span>
8299                    <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
8300                  </li>
8301                  <li>
8302                    <span class="entry_type_enum_name">STEADYPHOTO</span>
8303                    <span class="entry_type_enum_optional">[optional]</span>
8304                    <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
8305device motion (for example: due to hand shake).<wbr/></p></span>
8306                  </li>
8307                  <li>
8308                    <span class="entry_type_enum_name">FIREWORKS</span>
8309                    <span class="entry_type_enum_optional">[optional]</span>
8310                    <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
8311                  </li>
8312                  <li>
8313                    <span class="entry_type_enum_name">SPORTS</span>
8314                    <span class="entry_type_enum_optional">[optional]</span>
8315                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
8316<p>Similar to ACTION.<wbr/></p></span>
8317                  </li>
8318                  <li>
8319                    <span class="entry_type_enum_name">PARTY</span>
8320                    <span class="entry_type_enum_optional">[optional]</span>
8321                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
8322people.<wbr/></p></span>
8323                  </li>
8324                  <li>
8325                    <span class="entry_type_enum_name">CANDLELIGHT</span>
8326                    <span class="entry_type_enum_optional">[optional]</span>
8327                    <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
8328is a flame.<wbr/></p></span>
8329                  </li>
8330                  <li>
8331                    <span class="entry_type_enum_name">BARCODE</span>
8332                    <span class="entry_type_enum_optional">[optional]</span>
8333                    <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
8334for use by camera applications that wish to read the
8335barcode value.<wbr/></p></span>
8336                  </li>
8337                  <li>
8338                    <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
8339                    <span class="entry_type_enum_deprecated">[deprecated]</span>
8340                    <span class="entry_type_enum_optional">[optional]</span>
8341                    <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>
8342and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
8343for high speed video recording.<wbr/></p>
8344<p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
8345<p>The supported high speed video sizes and fps ranges are specified in
8346<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
8347output frame rates,<wbr/> the application is only allowed to select video size
8348and fps range combinations listed in this static metadata.<wbr/> The fps range
8349can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
8350<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
8351ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
8352controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
8353and post-processing parameters is possible.<wbr/> All other controls operate the
8354same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
8355android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
8356<ul>
8357<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
8358<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
8359<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
8360<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
8361<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
8362<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
8363<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
8364<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
8365<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
8366<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
8367</ul>
8368<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
8369<ul>
8370<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>
8371<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
8372<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
8373<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
8374</ul>
8375<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
8376be lower than what camera can output,<wbr/> depending on the destination Surfaces for
8377the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
8378the application need check if the video encoder is capable of supporting the
8379high frame rate for a given video size,<wbr/> or it will end up with lower recording
8380frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
8381rate will be bounded by the screen refresh rate.<wbr/></p>
8382<p>The camera device will only support up to 2 output high speed streams
8383(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
8384in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
8385<ul>
8386<li>The application created no more than maxNumHighSpeedStreams processed non-stalling
8387format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
8388min(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>
8389<li>The stream sizes are selected from the sizes reported by
8390<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
8391<li>No processed non-stalling or raw streams are configured.<wbr/></li>
8392</ul>
8393<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
8394<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/>
8395the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
8396and the returned capture result metadata will give the fps range choosen
8397by the camera device.<wbr/></p>
8398<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
8399reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
8400the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
8401                  </li>
8402                  <li>
8403                    <span class="entry_type_enum_name">HDR</span>
8404                    <span class="entry_type_enum_optional">[optional]</span>
8405                    <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
8406<p>In this scene mode,<wbr/> the camera device captures images
8407that keep a larger range of scene illumination levels
8408visible in the final image.<wbr/> For example,<wbr/> when taking a
8409picture of a object in front of a bright window,<wbr/> both
8410the object and the scene through the window may be
8411visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
8412one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
8413HDR mode generally takes much longer to capture a single
8414image,<wbr/> has no user control,<wbr/> and may have other artifacts
8415depending on the HDR method used.<wbr/></p>
8416<p>Therefore,<wbr/> HDR captures operate at a much slower rate
8417than regular captures.<wbr/></p>
8418<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
8419is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
8420STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
8421using a high dynamic range capture technique.<wbr/>  On LEGACY
8422devices,<wbr/> captures that target a JPEG-format output will
8423be captured with HDR,<wbr/> and the capture intent is not
8424relevant.<wbr/></p>
8425<p>The HDR capture may involve the device capturing a burst
8426of images internally and combining them into one,<wbr/> or it
8427may involve the device using specialized high dynamic
8428range capture hardware.<wbr/> In all cases,<wbr/> a single image is
8429produced in response to a capture request submitted
8430while in HDR mode.<wbr/></p>
8431<p>Since substantial post-processing is generally needed to
8432produce an HDR image,<wbr/> only YUV and JPEG outputs are
8433supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only
8434JPEG outputs are supported for LEGACY HDR
8435captures.<wbr/> Using a RAW output for HDR capture is not
8436supported.<wbr/></p></span>
8437                  </li>
8438                  <li>
8439                    <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span>
8440                    <span class="entry_type_enum_optional">[optional]</span>
8441                    <span class="entry_type_enum_hidden">[hidden]</span>
8442                    <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
8443device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
8444under low light conditions.<wbr/></p>
8445<p>The camera device may be tuned to expose the images in a reduced
8446sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
8447if 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/>
8448the camera device auto-exposure routine tuning process may limit the actual
8449exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
8450exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
8451low light may be under-exposed when the sensor max exposure time (bounded by the
8452<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
8453ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
8454camera device auto-exposure routine to increase the sensitivity up to the max
8455sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
8456dark and the max exposure time is reached.<wbr/> The captured images may be noisier
8457compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
8458recommended that the application only use this scene mode when it is capable of
8459reducing the noise level of the captured images.<wbr/></p>
8460<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8461<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>
8462remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
8463                  </li>
8464                </ul>
8465
8466            </td> <!-- entry_type -->
8467
8468            <td class="entry_description">
8469              <p>Control for which scene mode is currently active.<wbr/></p>
8470            </td>
8471
8472            <td class="entry_units">
8473            </td>
8474
8475            <td class="entry_range">
8476              <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
8477            </td>
8478
8479            <td class="entry_tags">
8480              <ul class="entry_tags">
8481                  <li><a href="#tag_BC">BC</a></li>
8482              </ul>
8483            </td>
8484
8485          </tr>
8486          <tr class="entries_header">
8487            <th class="th_details" colspan="5">Details</th>
8488          </tr>
8489          <tr class="entry_cont">
8490            <td class="entry_details" colspan="5">
8491              <p>Scene modes are custom camera modes optimized for a certain set of conditions and
8492capture settings.<wbr/></p>
8493<p>This is the mode that that is active when
8494<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
8495disable <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>
8496while in use.<wbr/></p>
8497<p>The interpretation and implementation of these scene modes is left
8498to the implementor of the camera device.<wbr/> Their behavior will not be
8499consistent across all devices,<wbr/> and any given device may only implement
8500a subset of these modes.<wbr/></p>
8501            </td>
8502          </tr>
8503
8504          <tr class="entries_header">
8505            <th class="th_details" colspan="5">HAL Implementation Details</th>
8506          </tr>
8507          <tr class="entry_cont">
8508            <td class="entry_details" colspan="5">
8509              <p>HAL implementations that include scene modes are expected to provide
8510the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8511<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
8512<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
8513<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/>
8514the HAL must list supported video size and fps range in
8515<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/>
85161280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming
8517mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture
8518requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/>
8519This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
8520<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
8521capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
8522            </td>
8523          </tr>
8524
8525          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8526           <!-- end of entry -->
8527        
8528                
8529          <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
8530            <td class="entry_name
8531             " rowspan="3">
8532              android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
8533            </td>
8534            <td class="entry_type">
8535                <span class="entry_type_name entry_type_name_enum">byte</span>
8536
8537              <span class="entry_type_visibility"> [public]</span>
8538
8539
8540              <span class="entry_type_hwlevel">[legacy] </span>
8541
8542
8543
8544                <ul class="entry_type_enum">
8545                  <li>
8546                    <span class="entry_type_enum_name">OFF</span>
8547                    <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
8548                  </li>
8549                  <li>
8550                    <span class="entry_type_enum_name">ON</span>
8551                    <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
8552                  </li>
8553                </ul>
8554
8555            </td> <!-- entry_type -->
8556
8557            <td class="entry_description">
8558              <p>Whether video stabilization is
8559active.<wbr/></p>
8560            </td>
8561
8562            <td class="entry_units">
8563            </td>
8564
8565            <td class="entry_range">
8566            </td>
8567
8568            <td class="entry_tags">
8569              <ul class="entry_tags">
8570                  <li><a href="#tag_BC">BC</a></li>
8571              </ul>
8572            </td>
8573
8574          </tr>
8575          <tr class="entries_header">
8576            <th class="th_details" colspan="5">Details</th>
8577          </tr>
8578          <tr class="entry_cont">
8579            <td class="entry_details" colspan="5">
8580              <p>Video stabilization automatically warps images from
8581the camera in order to stabilize motion between consecutive frames.<wbr/></p>
8582<p>If enabled,<wbr/> video stabilization can modify the
8583<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
8584<p>Switching between different video stabilization modes may take several
8585frames to initialize,<wbr/> the camera device will report the current mode
8586in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
8587the video stabilization modes in the first several capture results may
8588still be "OFF",<wbr/> and it will become "ON" when the initialization is
8589done.<wbr/></p>
8590<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
8591stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
8592that an output targeting a MediaRecorder or MediaCodec will be stabilized if
8593the recording resolution is less than or equal to 1920 x 1080 (width less than
8594or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
8595frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
8596<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
8597OFF if the recording output is not stabilized,<wbr/> or if there are no output
8598Surface types that can be stabilized.<wbr/></p>
8599<p>If a camera device supports both this mode and OIS
8600(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
8601produce undesirable interaction,<wbr/> so it is recommended not to enable
8602both at the same time.<wbr/></p>
8603            </td>
8604          </tr>
8605
8606
8607          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8608           <!-- end of entry -->
8609        
8610        
8611
8612      <!-- end of kind -->
8613      </tbody>
8614
8615  <!-- end of section -->
8616  <tr><td colspan="6" id="section_demosaic" class="section">demosaic</td></tr>
8617
8618
8619      <tr><td colspan="6" class="kind">controls</td></tr>
8620
8621      <thead class="entries_header">
8622        <tr>
8623          <th class="th_name">Property Name</th>
8624          <th class="th_type">Type</th>
8625          <th class="th_description">Description</th>
8626          <th class="th_units">Units</th>
8627          <th class="th_range">Range</th>
8628          <th class="th_tags">Tags</th>
8629        </tr>
8630      </thead>
8631
8632      <tbody>
8633
8634        
8635
8636        
8637
8638        
8639
8640        
8641
8642                
8643          <tr class="entry" id="controls_android.demosaic.mode">
8644            <td class="entry_name
8645             " rowspan="1">
8646              android.<wbr/>demosaic.<wbr/>mode
8647            </td>
8648            <td class="entry_type">
8649                <span class="entry_type_name entry_type_name_enum">byte</span>
8650
8651              <span class="entry_type_visibility"> [system]</span>
8652
8653
8654
8655
8656
8657                <ul class="entry_type_enum">
8658                  <li>
8659                    <span class="entry_type_enum_name">FAST</span>
8660                    <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
8661Bayer RAW output.<wbr/></p></span>
8662                  </li>
8663                  <li>
8664                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
8665                    <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down
8666relative to raw output.<wbr/></p></span>
8667                  </li>
8668                </ul>
8669
8670            </td> <!-- entry_type -->
8671
8672            <td class="entry_description">
8673              <p>Controls the quality of the demosaicing
8674processing.<wbr/></p>
8675            </td>
8676
8677            <td class="entry_units">
8678            </td>
8679
8680            <td class="entry_range">
8681            </td>
8682
8683            <td class="entry_tags">
8684              <ul class="entry_tags">
8685                  <li><a href="#tag_FUTURE">FUTURE</a></li>
8686              </ul>
8687            </td>
8688
8689          </tr>
8690
8691
8692          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8693           <!-- end of entry -->
8694        
8695        
8696
8697      <!-- end of kind -->
8698      </tbody>
8699
8700  <!-- end of section -->
8701  <tr><td colspan="6" id="section_edge" class="section">edge</td></tr>
8702
8703
8704      <tr><td colspan="6" class="kind">controls</td></tr>
8705
8706      <thead class="entries_header">
8707        <tr>
8708          <th class="th_name">Property Name</th>
8709          <th class="th_type">Type</th>
8710          <th class="th_description">Description</th>
8711          <th class="th_units">Units</th>
8712          <th class="th_range">Range</th>
8713          <th class="th_tags">Tags</th>
8714        </tr>
8715      </thead>
8716
8717      <tbody>
8718
8719        
8720
8721        
8722
8723        
8724
8725        
8726
8727                
8728          <tr class="entry" id="controls_android.edge.mode">
8729            <td class="entry_name
8730             " rowspan="5">
8731              android.<wbr/>edge.<wbr/>mode
8732            </td>
8733            <td class="entry_type">
8734                <span class="entry_type_name entry_type_name_enum">byte</span>
8735
8736              <span class="entry_type_visibility"> [public]</span>
8737
8738
8739              <span class="entry_type_hwlevel">[full] </span>
8740
8741
8742
8743                <ul class="entry_type_enum">
8744                  <li>
8745                    <span class="entry_type_enum_name">OFF</span>
8746                    <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
8747                  </li>
8748                  <li>
8749                    <span class="entry_type_enum_name">FAST</span>
8750                    <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
8751relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
8752slow down frame rate relative to sensor.<wbr/></p></span>
8753                  </li>
8754                  <li>
8755                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
8756                    <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>
8757                  </li>
8758                  <li>
8759                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
8760                    <span class="entry_type_enum_optional">[optional]</span>
8761                    <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/>
8762based 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
8763edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement
8764applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that
8765frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it
8766is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
8767<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
8768with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
8769high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
8770produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
8771high-resolution buffers must not have edge enhancement applied to maximize efficiency of
8772preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
8773buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
8774reasonable preview quality.<wbr/></p>
8775<p>This mode is guaranteed to be supported by devices that support either the
8776YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
8777(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
8778be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
8779                  </li>
8780                </ul>
8781
8782            </td> <!-- entry_type -->
8783
8784            <td class="entry_description">
8785              <p>Operation mode for edge
8786enhancement.<wbr/></p>
8787            </td>
8788
8789            <td class="entry_units">
8790            </td>
8791
8792            <td class="entry_range">
8793              <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
8794            </td>
8795
8796            <td class="entry_tags">
8797              <ul class="entry_tags">
8798                  <li><a href="#tag_V1">V1</a></li>
8799                  <li><a href="#tag_REPROC">REPROC</a></li>
8800              </ul>
8801            </td>
8802
8803          </tr>
8804          <tr class="entries_header">
8805            <th class="th_details" colspan="5">Details</th>
8806          </tr>
8807          <tr class="entry_cont">
8808            <td class="entry_details" colspan="5">
8809              <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
8810no enhancement will be applied by the camera device.<wbr/></p>
8811<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
8812will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
8813camera device will use the highest-quality enhancement algorithms,<wbr/>
8814even if it slows down capture rate.<wbr/> FAST means the camera device will
8815not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
8816edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
8817amount of enhancement applied.<wbr/></p>
8818<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
8819buffer of high-resolution images during preview and reprocess image(s) from that buffer
8820into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
8821edge enhancement to low-resolution streams (below maximum recording resolution) to
8822maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
8823since those will be reprocessed later if necessary.<wbr/></p>
8824<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
8825device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
8826The camera device may adjust its internal edge enhancement parameters for best
8827image 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>
8828            </td>
8829          </tr>
8830
8831          <tr class="entries_header">
8832            <th class="th_details" colspan="5">HAL Implementation Details</th>
8833          </tr>
8834          <tr class="entry_cont">
8835            <td class="entry_details" colspan="5">
8836              <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
8837adjust the internal edge enhancement reduction parameters appropriately to get the best
8838quality images.<wbr/></p>
8839            </td>
8840          </tr>
8841
8842          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8843           <!-- end of entry -->
8844        
8845                
8846          <tr class="entry" id="controls_android.edge.strength">
8847            <td class="entry_name
8848             " rowspan="1">
8849              android.<wbr/>edge.<wbr/>strength
8850            </td>
8851            <td class="entry_type">
8852                <span class="entry_type_name">byte</span>
8853
8854              <span class="entry_type_visibility"> [system]</span>
8855
8856
8857
8858
8859
8860
8861            </td> <!-- entry_type -->
8862
8863            <td class="entry_description">
8864              <p>Control the amount of edge enhancement
8865applied to the images</p>
8866            </td>
8867
8868            <td class="entry_units">
8869              1-10; 10 is maximum sharpening
8870            </td>
8871
8872            <td class="entry_range">
8873            </td>
8874
8875            <td class="entry_tags">
8876              <ul class="entry_tags">
8877                  <li><a href="#tag_FUTURE">FUTURE</a></li>
8878              </ul>
8879            </td>
8880
8881          </tr>
8882
8883
8884          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8885           <!-- end of entry -->
8886        
8887        
8888
8889      <!-- end of kind -->
8890      </tbody>
8891      <tr><td colspan="6" class="kind">static</td></tr>
8892
8893      <thead class="entries_header">
8894        <tr>
8895          <th class="th_name">Property Name</th>
8896          <th class="th_type">Type</th>
8897          <th class="th_description">Description</th>
8898          <th class="th_units">Units</th>
8899          <th class="th_range">Range</th>
8900          <th class="th_tags">Tags</th>
8901        </tr>
8902      </thead>
8903
8904      <tbody>
8905
8906        
8907
8908        
8909
8910        
8911
8912        
8913
8914                
8915          <tr class="entry" id="static_android.edge.availableEdgeModes">
8916            <td class="entry_name
8917             " rowspan="5">
8918              android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
8919            </td>
8920            <td class="entry_type">
8921                <span class="entry_type_name">byte</span>
8922                <span class="entry_type_container">x</span>
8923
8924                <span class="entry_type_array">
8925                  n
8926                </span>
8927              <span class="entry_type_visibility"> [public as enumList]</span>
8928
8929
8930              <span class="entry_type_hwlevel">[full] </span>
8931
8932
8933                <div class="entry_type_notes">list of enums</div>
8934
8935
8936            </td> <!-- entry_type -->
8937
8938            <td class="entry_description">
8939              <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
8940device.<wbr/></p>
8941            </td>
8942
8943            <td class="entry_units">
8944            </td>
8945
8946            <td class="entry_range">
8947              <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
8948            </td>
8949
8950            <td class="entry_tags">
8951              <ul class="entry_tags">
8952                  <li><a href="#tag_V1">V1</a></li>
8953                  <li><a href="#tag_REPROC">REPROC</a></li>
8954              </ul>
8955            </td>
8956
8957          </tr>
8958          <tr class="entries_header">
8959            <th class="th_details" colspan="5">Details</th>
8960          </tr>
8961          <tr class="entry_cont">
8962            <td class="entry_details" colspan="5">
8963              <p>Full-capability camera devices must always support OFF; camera devices that support
8964YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will
8965list FAST.<wbr/></p>
8966            </td>
8967          </tr>
8968
8969          <tr class="entries_header">
8970            <th class="th_details" colspan="5">HAL Implementation Details</th>
8971          </tr>
8972          <tr class="entry_cont">
8973            <td class="entry_details" colspan="5">
8974              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available
8975on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
8976That is,<wbr/> if the highest quality implementation on the camera device does not slow down
8977capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
8978            </td>
8979          </tr>
8980
8981          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8982           <!-- end of entry -->
8983        
8984        
8985
8986      <!-- end of kind -->
8987      </tbody>
8988      <tr><td colspan="6" class="kind">dynamic</td></tr>
8989
8990      <thead class="entries_header">
8991        <tr>
8992          <th class="th_name">Property Name</th>
8993          <th class="th_type">Type</th>
8994          <th class="th_description">Description</th>
8995          <th class="th_units">Units</th>
8996          <th class="th_range">Range</th>
8997          <th class="th_tags">Tags</th>
8998        </tr>
8999      </thead>
9000
9001      <tbody>
9002
9003        
9004
9005        
9006
9007        
9008
9009        
9010
9011                
9012          <tr class="entry" id="dynamic_android.edge.mode">
9013            <td class="entry_name
9014             " rowspan="5">
9015              android.<wbr/>edge.<wbr/>mode
9016            </td>
9017            <td class="entry_type">
9018                <span class="entry_type_name entry_type_name_enum">byte</span>
9019
9020              <span class="entry_type_visibility"> [public]</span>
9021
9022
9023              <span class="entry_type_hwlevel">[full] </span>
9024
9025
9026
9027                <ul class="entry_type_enum">
9028                  <li>
9029                    <span class="entry_type_enum_name">OFF</span>
9030                    <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9031                  </li>
9032                  <li>
9033                    <span class="entry_type_enum_name">FAST</span>
9034                    <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9035relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9036slow down frame rate relative to sensor.<wbr/></p></span>
9037                  </li>
9038                  <li>
9039                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
9040                    <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>
9041                  </li>
9042                  <li>
9043                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
9044                    <span class="entry_type_enum_optional">[optional]</span>
9045                    <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/>
9046based 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
9047edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement
9048applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that
9049frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it
9050is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9051<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9052with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9053high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9054produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
9055high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9056preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9057buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9058reasonable preview quality.<wbr/></p>
9059<p>This mode is guaranteed to be supported by devices that support either the
9060YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9061(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9062be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9063                  </li>
9064                </ul>
9065
9066            </td> <!-- entry_type -->
9067
9068            <td class="entry_description">
9069              <p>Operation mode for edge
9070enhancement.<wbr/></p>
9071            </td>
9072
9073            <td class="entry_units">
9074            </td>
9075
9076            <td class="entry_range">
9077              <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9078            </td>
9079
9080            <td class="entry_tags">
9081              <ul class="entry_tags">
9082                  <li><a href="#tag_V1">V1</a></li>
9083                  <li><a href="#tag_REPROC">REPROC</a></li>
9084              </ul>
9085            </td>
9086
9087          </tr>
9088          <tr class="entries_header">
9089            <th class="th_details" colspan="5">Details</th>
9090          </tr>
9091          <tr class="entry_cont">
9092            <td class="entry_details" colspan="5">
9093              <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9094no enhancement will be applied by the camera device.<wbr/></p>
9095<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9096will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9097camera device will use the highest-quality enhancement algorithms,<wbr/>
9098even if it slows down capture rate.<wbr/> FAST means the camera device will
9099not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9100edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9101amount of enhancement applied.<wbr/></p>
9102<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9103buffer of high-resolution images during preview and reprocess image(s) from that buffer
9104into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9105edge enhancement to low-resolution streams (below maximum recording resolution) to
9106maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9107since those will be reprocessed later if necessary.<wbr/></p>
9108<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9109device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9110The camera device may adjust its internal edge enhancement parameters for best
9111image 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>
9112            </td>
9113          </tr>
9114
9115          <tr class="entries_header">
9116            <th class="th_details" colspan="5">HAL Implementation Details</th>
9117          </tr>
9118          <tr class="entry_cont">
9119            <td class="entry_details" colspan="5">
9120              <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
9121adjust the internal edge enhancement reduction parameters appropriately to get the best
9122quality images.<wbr/></p>
9123            </td>
9124          </tr>
9125
9126          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9127           <!-- end of entry -->
9128        
9129        
9130
9131      <!-- end of kind -->
9132      </tbody>
9133
9134  <!-- end of section -->
9135  <tr><td colspan="6" id="section_flash" class="section">flash</td></tr>
9136
9137
9138      <tr><td colspan="6" class="kind">controls</td></tr>
9139
9140      <thead class="entries_header">
9141        <tr>
9142          <th class="th_name">Property Name</th>
9143          <th class="th_type">Type</th>
9144          <th class="th_description">Description</th>
9145          <th class="th_units">Units</th>
9146          <th class="th_range">Range</th>
9147          <th class="th_tags">Tags</th>
9148        </tr>
9149      </thead>
9150
9151      <tbody>
9152
9153        
9154
9155        
9156
9157        
9158
9159        
9160
9161                
9162          <tr class="entry" id="controls_android.flash.firingPower">
9163            <td class="entry_name
9164             " rowspan="3">
9165              android.<wbr/>flash.<wbr/>firing<wbr/>Power
9166            </td>
9167            <td class="entry_type">
9168                <span class="entry_type_name">byte</span>
9169
9170              <span class="entry_type_visibility"> [system]</span>
9171
9172
9173
9174
9175
9176
9177            </td> <!-- entry_type -->
9178
9179            <td class="entry_description">
9180              <p>Power for flash firing/<wbr/>torch</p>
9181            </td>
9182
9183            <td class="entry_units">
9184              10 is max power; 0 is no flash.<wbr/> Linear
9185            </td>
9186
9187            <td class="entry_range">
9188              <p>0 - 10</p>
9189            </td>
9190
9191            <td class="entry_tags">
9192              <ul class="entry_tags">
9193                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9194              </ul>
9195            </td>
9196
9197          </tr>
9198          <tr class="entries_header">
9199            <th class="th_details" colspan="5">Details</th>
9200          </tr>
9201          <tr class="entry_cont">
9202            <td class="entry_details" colspan="5">
9203              <p>Power for snapshot may use a different scale than
9204for torch mode.<wbr/> Only one entry for torch mode will be
9205used</p>
9206            </td>
9207          </tr>
9208
9209
9210          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9211           <!-- end of entry -->
9212        
9213                
9214          <tr class="entry" id="controls_android.flash.firingTime">
9215            <td class="entry_name
9216             " rowspan="3">
9217              android.<wbr/>flash.<wbr/>firing<wbr/>Time
9218            </td>
9219            <td class="entry_type">
9220                <span class="entry_type_name">int64</span>
9221
9222              <span class="entry_type_visibility"> [system]</span>
9223
9224
9225
9226
9227
9228
9229            </td> <!-- entry_type -->
9230
9231            <td class="entry_description">
9232              <p>Firing time of flash relative to start of
9233exposure</p>
9234            </td>
9235
9236            <td class="entry_units">
9237              nanoseconds
9238            </td>
9239
9240            <td class="entry_range">
9241              <p>0-(exposure time-flash duration)</p>
9242            </td>
9243
9244            <td class="entry_tags">
9245              <ul class="entry_tags">
9246                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9247              </ul>
9248            </td>
9249
9250          </tr>
9251          <tr class="entries_header">
9252            <th class="th_details" colspan="5">Details</th>
9253          </tr>
9254          <tr class="entry_cont">
9255            <td class="entry_details" colspan="5">
9256              <p>Clamped to (0,<wbr/> exposure time - flash
9257duration).<wbr/></p>
9258            </td>
9259          </tr>
9260
9261
9262          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9263           <!-- end of entry -->
9264        
9265                
9266          <tr class="entry" id="controls_android.flash.mode">
9267            <td class="entry_name
9268             " rowspan="3">
9269              android.<wbr/>flash.<wbr/>mode
9270            </td>
9271            <td class="entry_type">
9272                <span class="entry_type_name entry_type_name_enum">byte</span>
9273
9274              <span class="entry_type_visibility"> [public]</span>
9275
9276
9277              <span class="entry_type_hwlevel">[legacy] </span>
9278
9279
9280
9281                <ul class="entry_type_enum">
9282                  <li>
9283                    <span class="entry_type_enum_name">OFF</span>
9284                    <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
9285                  </li>
9286                  <li>
9287                    <span class="entry_type_enum_name">SINGLE</span>
9288                    <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
9289for this capture.<wbr/></p></span>
9290                  </li>
9291                  <li>
9292                    <span class="entry_type_enum_name">TORCH</span>
9293                    <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
9294                  </li>
9295                </ul>
9296
9297            </td> <!-- entry_type -->
9298
9299            <td class="entry_description">
9300              <p>The desired mode for for the camera device's flash control.<wbr/></p>
9301            </td>
9302
9303            <td class="entry_units">
9304            </td>
9305
9306            <td class="entry_range">
9307            </td>
9308
9309            <td class="entry_tags">
9310              <ul class="entry_tags">
9311                  <li><a href="#tag_BC">BC</a></li>
9312              </ul>
9313            </td>
9314
9315          </tr>
9316          <tr class="entries_header">
9317            <th class="th_details" colspan="5">Details</th>
9318          </tr>
9319          <tr class="entry_cont">
9320            <td class="entry_details" colspan="5">
9321              <p>This control is only effective when flash unit is available
9322(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
9323<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/>
9324Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
9325ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
9326<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
9327<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
9328device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
9329control should be used along with auto-exposure (AE) precapture metering sequence
9330(<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>
9331<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
9332for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
9333<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>
9334            </td>
9335          </tr>
9336
9337
9338          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9339           <!-- end of entry -->
9340        
9341        
9342
9343      <!-- end of kind -->
9344      </tbody>
9345      <tr><td colspan="6" class="kind">static</td></tr>
9346
9347      <thead class="entries_header">
9348        <tr>
9349          <th class="th_name">Property Name</th>
9350          <th class="th_type">Type</th>
9351          <th class="th_description">Description</th>
9352          <th class="th_units">Units</th>
9353          <th class="th_range">Range</th>
9354          <th class="th_tags">Tags</th>
9355        </tr>
9356      </thead>
9357
9358      <tbody>
9359
9360        
9361
9362        
9363
9364        
9365
9366        
9367                
9368            
9369
9370                
9371          <tr class="entry" id="static_android.flash.info.available">
9372            <td class="entry_name
9373             " rowspan="3">
9374              android.<wbr/>flash.<wbr/>info.<wbr/>available
9375            </td>
9376            <td class="entry_type">
9377                <span class="entry_type_name entry_type_name_enum">byte</span>
9378
9379              <span class="entry_type_visibility"> [public as boolean]</span>
9380
9381
9382              <span class="entry_type_hwlevel">[legacy] </span>
9383
9384
9385
9386                <ul class="entry_type_enum">
9387                  <li>
9388                    <span class="entry_type_enum_name">FALSE</span>
9389                  </li>
9390                  <li>
9391                    <span class="entry_type_enum_name">TRUE</span>
9392                  </li>
9393                </ul>
9394
9395            </td> <!-- entry_type -->
9396
9397            <td class="entry_description">
9398              <p>Whether this camera device has a
9399flash unit.<wbr/></p>
9400            </td>
9401
9402            <td class="entry_units">
9403            </td>
9404
9405            <td class="entry_range">
9406            </td>
9407
9408            <td class="entry_tags">
9409              <ul class="entry_tags">
9410                  <li><a href="#tag_BC">BC</a></li>
9411              </ul>
9412            </td>
9413
9414          </tr>
9415          <tr class="entries_header">
9416            <th class="th_details" colspan="5">Details</th>
9417          </tr>
9418          <tr class="entry_cont">
9419            <td class="entry_details" colspan="5">
9420              <p>Will be <code>false</code> if no flash is available.<wbr/></p>
9421<p>If there is no flash unit,<wbr/> none of the flash controls do
9422anything.<wbr/></p>
9423            </td>
9424          </tr>
9425
9426
9427          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9428           <!-- end of entry -->
9429        
9430                
9431          <tr class="entry" id="static_android.flash.info.chargeDuration">
9432            <td class="entry_name
9433             " rowspan="3">
9434              android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
9435            </td>
9436            <td class="entry_type">
9437                <span class="entry_type_name">int64</span>
9438
9439              <span class="entry_type_visibility"> [system]</span>
9440
9441
9442
9443
9444
9445
9446            </td> <!-- entry_type -->
9447
9448            <td class="entry_description">
9449              <p>Time taken before flash can fire
9450again</p>
9451            </td>
9452
9453            <td class="entry_units">
9454              nanoseconds
9455            </td>
9456
9457            <td class="entry_range">
9458              <p>0-1e9</p>
9459            </td>
9460
9461            <td class="entry_tags">
9462              <ul class="entry_tags">
9463                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9464              </ul>
9465            </td>
9466
9467          </tr>
9468          <tr class="entries_header">
9469            <th class="th_details" colspan="5">Details</th>
9470          </tr>
9471          <tr class="entry_cont">
9472            <td class="entry_details" colspan="5">
9473              <p>1 second too long/<wbr/>too short for recharge? Should
9474this be power-dependent?</p>
9475            </td>
9476          </tr>
9477
9478
9479          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9480           <!-- end of entry -->
9481        
9482        
9483        
9484
9485                
9486          <tr class="entry" id="static_android.flash.colorTemperature">
9487            <td class="entry_name
9488             " rowspan="1">
9489              android.<wbr/>flash.<wbr/>color<wbr/>Temperature
9490            </td>
9491            <td class="entry_type">
9492                <span class="entry_type_name">byte</span>
9493
9494              <span class="entry_type_visibility"> [system]</span>
9495
9496
9497
9498
9499
9500
9501            </td> <!-- entry_type -->
9502
9503            <td class="entry_description">
9504              <p>The x,<wbr/>y whitepoint of the
9505flash</p>
9506            </td>
9507
9508            <td class="entry_units">
9509              pair of floats
9510            </td>
9511
9512            <td class="entry_range">
9513              <p>0-1 for both</p>
9514            </td>
9515
9516            <td class="entry_tags">
9517              <ul class="entry_tags">
9518                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9519              </ul>
9520            </td>
9521
9522          </tr>
9523
9524
9525          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9526           <!-- end of entry -->
9527        
9528                
9529          <tr class="entry" id="static_android.flash.maxEnergy">
9530            <td class="entry_name
9531             " rowspan="1">
9532              android.<wbr/>flash.<wbr/>max<wbr/>Energy
9533            </td>
9534            <td class="entry_type">
9535                <span class="entry_type_name">byte</span>
9536
9537              <span class="entry_type_visibility"> [system]</span>
9538
9539
9540
9541
9542
9543
9544            </td> <!-- entry_type -->
9545
9546            <td class="entry_description">
9547              <p>Max energy output of the flash for a full
9548power single flash</p>
9549            </td>
9550
9551            <td class="entry_units">
9552              lumen-seconds
9553            </td>
9554
9555            <td class="entry_range">
9556              <p>&gt;= 0</p>
9557            </td>
9558
9559            <td class="entry_tags">
9560              <ul class="entry_tags">
9561                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9562              </ul>
9563            </td>
9564
9565          </tr>
9566
9567
9568          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9569           <!-- end of entry -->
9570        
9571        
9572
9573      <!-- end of kind -->
9574      </tbody>
9575      <tr><td colspan="6" class="kind">dynamic</td></tr>
9576
9577      <thead class="entries_header">
9578        <tr>
9579          <th class="th_name">Property Name</th>
9580          <th class="th_type">Type</th>
9581          <th class="th_description">Description</th>
9582          <th class="th_units">Units</th>
9583          <th class="th_range">Range</th>
9584          <th class="th_tags">Tags</th>
9585        </tr>
9586      </thead>
9587
9588      <tbody>
9589
9590        
9591
9592        
9593
9594        
9595
9596        
9597
9598                
9599          <tr class="entry" id="dynamic_android.flash.firingPower">
9600            <td class="entry_name
9601             " rowspan="3">
9602              android.<wbr/>flash.<wbr/>firing<wbr/>Power
9603            </td>
9604            <td class="entry_type">
9605                <span class="entry_type_name">byte</span>
9606
9607              <span class="entry_type_visibility"> [system]</span>
9608
9609
9610
9611
9612
9613
9614            </td> <!-- entry_type -->
9615
9616            <td class="entry_description">
9617              <p>Power for flash firing/<wbr/>torch</p>
9618            </td>
9619
9620            <td class="entry_units">
9621              10 is max power; 0 is no flash.<wbr/> Linear
9622            </td>
9623
9624            <td class="entry_range">
9625              <p>0 - 10</p>
9626            </td>
9627
9628            <td class="entry_tags">
9629              <ul class="entry_tags">
9630                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9631              </ul>
9632            </td>
9633
9634          </tr>
9635          <tr class="entries_header">
9636            <th class="th_details" colspan="5">Details</th>
9637          </tr>
9638          <tr class="entry_cont">
9639            <td class="entry_details" colspan="5">
9640              <p>Power for snapshot may use a different scale than
9641for torch mode.<wbr/> Only one entry for torch mode will be
9642used</p>
9643            </td>
9644          </tr>
9645
9646
9647          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9648           <!-- end of entry -->
9649        
9650                
9651          <tr class="entry" id="dynamic_android.flash.firingTime">
9652            <td class="entry_name
9653             " rowspan="3">
9654              android.<wbr/>flash.<wbr/>firing<wbr/>Time
9655            </td>
9656            <td class="entry_type">
9657                <span class="entry_type_name">int64</span>
9658
9659              <span class="entry_type_visibility"> [system]</span>
9660
9661
9662
9663
9664
9665
9666            </td> <!-- entry_type -->
9667
9668            <td class="entry_description">
9669              <p>Firing time of flash relative to start of
9670exposure</p>
9671            </td>
9672
9673            <td class="entry_units">
9674              nanoseconds
9675            </td>
9676
9677            <td class="entry_range">
9678              <p>0-(exposure time-flash duration)</p>
9679            </td>
9680
9681            <td class="entry_tags">
9682              <ul class="entry_tags">
9683                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9684              </ul>
9685            </td>
9686
9687          </tr>
9688          <tr class="entries_header">
9689            <th class="th_details" colspan="5">Details</th>
9690          </tr>
9691          <tr class="entry_cont">
9692            <td class="entry_details" colspan="5">
9693              <p>Clamped to (0,<wbr/> exposure time - flash
9694duration).<wbr/></p>
9695            </td>
9696          </tr>
9697
9698
9699          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9700           <!-- end of entry -->
9701        
9702                
9703          <tr class="entry" id="dynamic_android.flash.mode">
9704            <td class="entry_name
9705             " rowspan="3">
9706              android.<wbr/>flash.<wbr/>mode
9707            </td>
9708            <td class="entry_type">
9709                <span class="entry_type_name entry_type_name_enum">byte</span>
9710
9711              <span class="entry_type_visibility"> [public]</span>
9712
9713
9714              <span class="entry_type_hwlevel">[legacy] </span>
9715
9716
9717
9718                <ul class="entry_type_enum">
9719                  <li>
9720                    <span class="entry_type_enum_name">OFF</span>
9721                    <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
9722                  </li>
9723                  <li>
9724                    <span class="entry_type_enum_name">SINGLE</span>
9725                    <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
9726for this capture.<wbr/></p></span>
9727                  </li>
9728                  <li>
9729                    <span class="entry_type_enum_name">TORCH</span>
9730                    <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
9731                  </li>
9732                </ul>
9733
9734            </td> <!-- entry_type -->
9735
9736            <td class="entry_description">
9737              <p>The desired mode for for the camera device's flash control.<wbr/></p>
9738            </td>
9739
9740            <td class="entry_units">
9741            </td>
9742
9743            <td class="entry_range">
9744            </td>
9745
9746            <td class="entry_tags">
9747              <ul class="entry_tags">
9748                  <li><a href="#tag_BC">BC</a></li>
9749              </ul>
9750            </td>
9751
9752          </tr>
9753          <tr class="entries_header">
9754            <th class="th_details" colspan="5">Details</th>
9755          </tr>
9756          <tr class="entry_cont">
9757            <td class="entry_details" colspan="5">
9758              <p>This control is only effective when flash unit is available
9759(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
9760<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/>
9761Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
9762ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
9763<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
9764<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
9765device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
9766control should be used along with auto-exposure (AE) precapture metering sequence
9767(<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>
9768<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
9769for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
9770<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>
9771            </td>
9772          </tr>
9773
9774
9775          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9776           <!-- end of entry -->
9777        
9778                
9779          <tr class="entry" id="dynamic_android.flash.state">
9780            <td class="entry_name
9781             " rowspan="3">
9782              android.<wbr/>flash.<wbr/>state
9783            </td>
9784            <td class="entry_type">
9785                <span class="entry_type_name entry_type_name_enum">byte</span>
9786
9787              <span class="entry_type_visibility"> [public]</span>
9788
9789
9790              <span class="entry_type_hwlevel">[limited] </span>
9791
9792
9793
9794                <ul class="entry_type_enum">
9795                  <li>
9796                    <span class="entry_type_enum_name">UNAVAILABLE</span>
9797                    <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
9798                  </li>
9799                  <li>
9800                    <span class="entry_type_enum_name">CHARGING</span>
9801                    <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
9802                  </li>
9803                  <li>
9804                    <span class="entry_type_enum_name">READY</span>
9805                    <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
9806                  </li>
9807                  <li>
9808                    <span class="entry_type_enum_name">FIRED</span>
9809                    <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
9810                  </li>
9811                  <li>
9812                    <span class="entry_type_enum_name">PARTIAL</span>
9813                    <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
9814<p>This is usually due to the next or previous frame having
9815the flash fire,<wbr/> and the flash spilling into this capture
9816due to hardware limitations.<wbr/></p></span>
9817                  </li>
9818                </ul>
9819
9820            </td> <!-- entry_type -->
9821
9822            <td class="entry_description">
9823              <p>Current state of the flash
9824unit.<wbr/></p>
9825            </td>
9826
9827            <td class="entry_units">
9828            </td>
9829
9830            <td class="entry_range">
9831            </td>
9832
9833            <td class="entry_tags">
9834            </td>
9835
9836          </tr>
9837          <tr class="entries_header">
9838            <th class="th_details" colspan="5">Details</th>
9839          </tr>
9840          <tr class="entry_cont">
9841            <td class="entry_details" colspan="5">
9842              <p>When the camera device doesn't have flash unit
9843(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/>
9844Other states indicate the current flash status.<wbr/></p>
9845<p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p>
9846<ul>
9847<li>Flash-less cameras always return UNAVAILABLE.<wbr/></li>
9848<li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH
9849   will always return FIRED.<wbr/></li>
9850<li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH
9851   will always return FIRED.<wbr/></li>
9852</ul>
9853<p>In all other conditions the state will not be available on
9854LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p>
9855            </td>
9856          </tr>
9857
9858
9859          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9860           <!-- end of entry -->
9861        
9862        
9863
9864      <!-- end of kind -->
9865      </tbody>
9866
9867  <!-- end of section -->
9868  <tr><td colspan="6" id="section_hotPixel" class="section">hotPixel</td></tr>
9869
9870
9871      <tr><td colspan="6" class="kind">controls</td></tr>
9872
9873      <thead class="entries_header">
9874        <tr>
9875          <th class="th_name">Property Name</th>
9876          <th class="th_type">Type</th>
9877          <th class="th_description">Description</th>
9878          <th class="th_units">Units</th>
9879          <th class="th_range">Range</th>
9880          <th class="th_tags">Tags</th>
9881        </tr>
9882      </thead>
9883
9884      <tbody>
9885
9886        
9887
9888        
9889
9890        
9891
9892        
9893
9894                
9895          <tr class="entry" id="controls_android.hotPixel.mode">
9896            <td class="entry_name
9897             " rowspan="3">
9898              android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
9899            </td>
9900            <td class="entry_type">
9901                <span class="entry_type_name entry_type_name_enum">byte</span>
9902
9903              <span class="entry_type_visibility"> [public]</span>
9904
9905
9906
9907
9908
9909                <ul class="entry_type_enum">
9910                  <li>
9911                    <span class="entry_type_enum_name">OFF</span>
9912                    <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
9913<p>The frame rate must not be reduced relative to sensor raw output
9914for this option.<wbr/></p>
9915<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>
9916                  </li>
9917                  <li>
9918                    <span class="entry_type_enum_name">FAST</span>
9919                    <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
9920rate relative to sensor raw output.<wbr/></p>
9921<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>
9922                  </li>
9923                  <li>
9924                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
9925                    <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
9926of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
9927<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>
9928                  </li>
9929                </ul>
9930
9931            </td> <!-- entry_type -->
9932
9933            <td class="entry_description">
9934              <p>Operational mode for hot pixel correction.<wbr/></p>
9935            </td>
9936
9937            <td class="entry_units">
9938            </td>
9939
9940            <td class="entry_range">
9941              <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
9942            </td>
9943
9944            <td class="entry_tags">
9945              <ul class="entry_tags">
9946                  <li><a href="#tag_V1">V1</a></li>
9947                  <li><a href="#tag_RAW">RAW</a></li>
9948              </ul>
9949            </td>
9950
9951          </tr>
9952          <tr class="entries_header">
9953            <th class="th_details" colspan="5">Details</th>
9954          </tr>
9955          <tr class="entry_cont">
9956            <td class="entry_details" colspan="5">
9957              <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
9958that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
9959are stuck at an arbitrary value or are oversensitive).<wbr/></p>
9960            </td>
9961          </tr>
9962
9963
9964          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9965           <!-- end of entry -->
9966        
9967        
9968
9969      <!-- end of kind -->
9970      </tbody>
9971      <tr><td colspan="6" class="kind">static</td></tr>
9972
9973      <thead class="entries_header">
9974        <tr>
9975          <th class="th_name">Property Name</th>
9976          <th class="th_type">Type</th>
9977          <th class="th_description">Description</th>
9978          <th class="th_units">Units</th>
9979          <th class="th_range">Range</th>
9980          <th class="th_tags">Tags</th>
9981        </tr>
9982      </thead>
9983
9984      <tbody>
9985
9986        
9987
9988        
9989
9990        
9991
9992        
9993
9994                
9995          <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
9996            <td class="entry_name
9997             " rowspan="5">
9998              android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
9999            </td>
10000            <td class="entry_type">
10001                <span class="entry_type_name">byte</span>
10002                <span class="entry_type_container">x</span>
10003
10004                <span class="entry_type_array">
10005                  n
10006                </span>
10007              <span class="entry_type_visibility"> [public as enumList]</span>
10008
10009
10010
10011
10012                <div class="entry_type_notes">list of enums</div>
10013
10014
10015            </td> <!-- entry_type -->
10016
10017            <td class="entry_description">
10018              <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
10019camera device.<wbr/></p>
10020            </td>
10021
10022            <td class="entry_units">
10023            </td>
10024
10025            <td class="entry_range">
10026              <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
10027            </td>
10028
10029            <td class="entry_tags">
10030              <ul class="entry_tags">
10031                  <li><a href="#tag_V1">V1</a></li>
10032                  <li><a href="#tag_RAW">RAW</a></li>
10033              </ul>
10034            </td>
10035
10036          </tr>
10037          <tr class="entries_header">
10038            <th class="th_details" colspan="5">Details</th>
10039          </tr>
10040          <tr class="entry_cont">
10041            <td class="entry_details" colspan="5">
10042              <p>FULL mode camera devices will always support FAST.<wbr/></p>
10043            </td>
10044          </tr>
10045
10046          <tr class="entries_header">
10047            <th class="th_details" colspan="5">HAL Implementation Details</th>
10048          </tr>
10049          <tr class="entry_cont">
10050            <td class="entry_details" colspan="5">
10051              <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
10052pixels than actual pixels on the camera sensor.<wbr/>
10053HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available
10054on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
10055That is,<wbr/> if the highest quality implementation on the camera device does not slow down
10056capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
10057            </td>
10058          </tr>
10059
10060          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10061           <!-- end of entry -->
10062        
10063        
10064
10065      <!-- end of kind -->
10066      </tbody>
10067      <tr><td colspan="6" class="kind">dynamic</td></tr>
10068
10069      <thead class="entries_header">
10070        <tr>
10071          <th class="th_name">Property Name</th>
10072          <th class="th_type">Type</th>
10073          <th class="th_description">Description</th>
10074          <th class="th_units">Units</th>
10075          <th class="th_range">Range</th>
10076          <th class="th_tags">Tags</th>
10077        </tr>
10078      </thead>
10079
10080      <tbody>
10081
10082        
10083
10084        
10085
10086        
10087
10088        
10089
10090                
10091          <tr class="entry" id="dynamic_android.hotPixel.mode">
10092            <td class="entry_name
10093             " rowspan="3">
10094              android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
10095            </td>
10096            <td class="entry_type">
10097                <span class="entry_type_name entry_type_name_enum">byte</span>
10098
10099              <span class="entry_type_visibility"> [public]</span>
10100
10101
10102
10103
10104
10105                <ul class="entry_type_enum">
10106                  <li>
10107                    <span class="entry_type_enum_name">OFF</span>
10108                    <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
10109<p>The frame rate must not be reduced relative to sensor raw output
10110for this option.<wbr/></p>
10111<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>
10112                  </li>
10113                  <li>
10114                    <span class="entry_type_enum_name">FAST</span>
10115                    <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
10116rate relative to sensor raw output.<wbr/></p>
10117<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>
10118                  </li>
10119                  <li>
10120                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
10121                    <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
10122of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
10123<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>
10124                  </li>
10125                </ul>
10126
10127            </td> <!-- entry_type -->
10128
10129            <td class="entry_description">
10130              <p>Operational mode for hot pixel correction.<wbr/></p>
10131            </td>
10132
10133            <td class="entry_units">
10134            </td>
10135
10136            <td class="entry_range">
10137              <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
10138            </td>
10139
10140            <td class="entry_tags">
10141              <ul class="entry_tags">
10142                  <li><a href="#tag_V1">V1</a></li>
10143                  <li><a href="#tag_RAW">RAW</a></li>
10144              </ul>
10145            </td>
10146
10147          </tr>
10148          <tr class="entries_header">
10149            <th class="th_details" colspan="5">Details</th>
10150          </tr>
10151          <tr class="entry_cont">
10152            <td class="entry_details" colspan="5">
10153              <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
10154that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
10155are stuck at an arbitrary value or are oversensitive).<wbr/></p>
10156            </td>
10157          </tr>
10158
10159
10160          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10161           <!-- end of entry -->
10162        
10163        
10164
10165      <!-- end of kind -->
10166      </tbody>
10167
10168  <!-- end of section -->
10169  <tr><td colspan="6" id="section_jpeg" class="section">jpeg</td></tr>
10170
10171
10172      <tr><td colspan="6" class="kind">controls</td></tr>
10173
10174      <thead class="entries_header">
10175        <tr>
10176          <th class="th_name">Property Name</th>
10177          <th class="th_type">Type</th>
10178          <th class="th_description">Description</th>
10179          <th class="th_units">Units</th>
10180          <th class="th_range">Range</th>
10181          <th class="th_tags">Tags</th>
10182        </tr>
10183      </thead>
10184
10185      <tbody>
10186
10187        
10188
10189        
10190
10191        
10192
10193        
10194
10195                
10196          <tr class="entry" id="controls_android.jpeg.gpsLocation">
10197            <td class="entry_name
10198             " rowspan="3">
10199              android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
10200            </td>
10201            <td class="entry_type">
10202                <span class="entry_type_name">byte</span>
10203
10204              <span class="entry_type_visibility"> [public as location]</span>
10205
10206              <span class="entry_type_synthetic">[synthetic] </span>
10207
10208              <span class="entry_type_hwlevel">[legacy] </span>
10209
10210
10211
10212
10213            </td> <!-- entry_type -->
10214
10215            <td class="entry_description">
10216              <p>A location object to use when generating image GPS metadata.<wbr/></p>
10217            </td>
10218
10219            <td class="entry_units">
10220            </td>
10221
10222            <td class="entry_range">
10223            </td>
10224
10225            <td class="entry_tags">
10226            </td>
10227
10228          </tr>
10229          <tr class="entries_header">
10230            <th class="th_details" colspan="5">Details</th>
10231          </tr>
10232          <tr class="entry_cont">
10233            <td class="entry_details" colspan="5">
10234              <p>Setting a location object in a request will include the GPS coordinates of the location
10235into any JPEG images captured based on the request.<wbr/> These coordinates can then be
10236viewed by anyone who receives the JPEG image.<wbr/></p>
10237            </td>
10238          </tr>
10239
10240
10241          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10242           <!-- end of entry -->
10243        
10244                
10245          <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
10246            <td class="entry_name
10247             " rowspan="1">
10248              android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
10249            </td>
10250            <td class="entry_type">
10251                <span class="entry_type_name">double</span>
10252                <span class="entry_type_container">x</span>
10253
10254                <span class="entry_type_array">
10255                  3
10256                </span>
10257              <span class="entry_type_visibility"> [hidden]</span>
10258
10259
10260              <span class="entry_type_hwlevel">[legacy] </span>
10261
10262
10263                <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
10264
10265
10266            </td> <!-- entry_type -->
10267
10268            <td class="entry_description">
10269              <p>GPS coordinates to include in output JPEG
10270EXIF.<wbr/></p>
10271            </td>
10272
10273            <td class="entry_units">
10274            </td>
10275
10276            <td class="entry_range">
10277              <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
10278            </td>
10279
10280            <td class="entry_tags">
10281              <ul class="entry_tags">
10282                  <li><a href="#tag_BC">BC</a></li>
10283              </ul>
10284            </td>
10285
10286          </tr>
10287
10288
10289          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10290           <!-- end of entry -->
10291        
10292                
10293          <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
10294            <td class="entry_name
10295             " rowspan="1">
10296              android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
10297            </td>
10298            <td class="entry_type">
10299                <span class="entry_type_name">byte</span>
10300
10301              <span class="entry_type_visibility"> [hidden as string]</span>
10302
10303
10304              <span class="entry_type_hwlevel">[legacy] </span>
10305
10306
10307
10308
10309            </td> <!-- entry_type -->
10310
10311            <td class="entry_description">
10312              <p>32 characters describing GPS algorithm to
10313include in EXIF.<wbr/></p>
10314            </td>
10315
10316            <td class="entry_units">
10317              UTF-8 null-terminated string
10318            </td>
10319
10320            <td class="entry_range">
10321            </td>
10322
10323            <td class="entry_tags">
10324              <ul class="entry_tags">
10325                  <li><a href="#tag_BC">BC</a></li>
10326              </ul>
10327            </td>
10328
10329          </tr>
10330
10331
10332          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10333           <!-- end of entry -->
10334        
10335                
10336          <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
10337            <td class="entry_name
10338             " rowspan="1">
10339              android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
10340            </td>
10341            <td class="entry_type">
10342                <span class="entry_type_name">int64</span>
10343
10344              <span class="entry_type_visibility"> [hidden]</span>
10345
10346
10347              <span class="entry_type_hwlevel">[legacy] </span>
10348
10349
10350
10351
10352            </td> <!-- entry_type -->
10353
10354            <td class="entry_description">
10355              <p>Time GPS fix was made to include in
10356EXIF.<wbr/></p>
10357            </td>
10358
10359            <td class="entry_units">
10360              UTC in seconds since January 1,<wbr/> 1970
10361            </td>
10362
10363            <td class="entry_range">
10364            </td>
10365
10366            <td class="entry_tags">
10367              <ul class="entry_tags">
10368                  <li><a href="#tag_BC">BC</a></li>
10369              </ul>
10370            </td>
10371
10372          </tr>
10373
10374
10375          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10376           <!-- end of entry -->
10377        
10378                
10379          <tr class="entry" id="controls_android.jpeg.orientation">
10380            <td class="entry_name
10381             " rowspan="3">
10382              android.<wbr/>jpeg.<wbr/>orientation
10383            </td>
10384            <td class="entry_type">
10385                <span class="entry_type_name">int32</span>
10386
10387              <span class="entry_type_visibility"> [public]</span>
10388
10389
10390              <span class="entry_type_hwlevel">[legacy] </span>
10391
10392
10393
10394
10395            </td> <!-- entry_type -->
10396
10397            <td class="entry_description">
10398              <p>The orientation for a JPEG image.<wbr/></p>
10399            </td>
10400
10401            <td class="entry_units">
10402              Degrees in multiples of 90
10403            </td>
10404
10405            <td class="entry_range">
10406              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
10407            </td>
10408
10409            <td class="entry_tags">
10410              <ul class="entry_tags">
10411                  <li><a href="#tag_BC">BC</a></li>
10412              </ul>
10413            </td>
10414
10415          </tr>
10416          <tr class="entries_header">
10417            <th class="th_details" colspan="5">Details</th>
10418          </tr>
10419          <tr class="entry_cont">
10420            <td class="entry_details" colspan="5">
10421              <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
10422to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
10423upright.<wbr/></p>
10424<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
10425rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
10426the thumbnail data will also be rotated.<wbr/></p>
10427<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
10428by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
10429<p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
10430sample code may be used:</p>
10431<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
10432    if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
10433    int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
10434
10435    //<wbr/> Round device orientation to a multiple of 90
10436    deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
10437
10438    //<wbr/> Reverse device orientation for front-facing cameras
10439    boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
10440    if (facingFront) deviceOrientation = -deviceOrientation;
10441
10442    //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
10443    //<wbr/> the image upright relative to the device orientation
10444    int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
10445
10446    return jpegOrientation;
10447}
10448</code></pre>
10449            </td>
10450          </tr>
10451
10452
10453          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10454           <!-- end of entry -->
10455        
10456                
10457          <tr class="entry" id="controls_android.jpeg.quality">
10458            <td class="entry_name
10459             " rowspan="3">
10460              android.<wbr/>jpeg.<wbr/>quality
10461            </td>
10462            <td class="entry_type">
10463                <span class="entry_type_name">byte</span>
10464
10465              <span class="entry_type_visibility"> [public]</span>
10466
10467
10468              <span class="entry_type_hwlevel">[legacy] </span>
10469
10470
10471
10472
10473            </td> <!-- entry_type -->
10474
10475            <td class="entry_description">
10476              <p>Compression quality of the final JPEG
10477image.<wbr/></p>
10478            </td>
10479
10480            <td class="entry_units">
10481            </td>
10482
10483            <td class="entry_range">
10484              <p>1-100; larger is higher quality</p>
10485            </td>
10486
10487            <td class="entry_tags">
10488              <ul class="entry_tags">
10489                  <li><a href="#tag_BC">BC</a></li>
10490              </ul>
10491            </td>
10492
10493          </tr>
10494          <tr class="entries_header">
10495            <th class="th_details" colspan="5">Details</th>
10496          </tr>
10497          <tr class="entry_cont">
10498            <td class="entry_details" colspan="5">
10499              <p>85-95 is typical usage range.<wbr/></p>
10500            </td>
10501          </tr>
10502
10503
10504          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10505           <!-- end of entry -->
10506        
10507                
10508          <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
10509            <td class="entry_name
10510             " rowspan="1">
10511              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
10512            </td>
10513            <td class="entry_type">
10514                <span class="entry_type_name">byte</span>
10515
10516              <span class="entry_type_visibility"> [public]</span>
10517
10518
10519              <span class="entry_type_hwlevel">[legacy] </span>
10520
10521
10522
10523
10524            </td> <!-- entry_type -->
10525
10526            <td class="entry_description">
10527              <p>Compression quality of JPEG
10528thumbnail.<wbr/></p>
10529            </td>
10530
10531            <td class="entry_units">
10532            </td>
10533
10534            <td class="entry_range">
10535              <p>1-100; larger is higher quality</p>
10536            </td>
10537
10538            <td class="entry_tags">
10539              <ul class="entry_tags">
10540                  <li><a href="#tag_BC">BC</a></li>
10541              </ul>
10542            </td>
10543
10544          </tr>
10545
10546
10547          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10548           <!-- end of entry -->
10549        
10550                
10551          <tr class="entry" id="controls_android.jpeg.thumbnailSize">
10552            <td class="entry_name
10553             " rowspan="5">
10554              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
10555            </td>
10556            <td class="entry_type">
10557                <span class="entry_type_name">int32</span>
10558                <span class="entry_type_container">x</span>
10559
10560                <span class="entry_type_array">
10561                  2
10562                </span>
10563              <span class="entry_type_visibility"> [public as size]</span>
10564
10565
10566              <span class="entry_type_hwlevel">[legacy] </span>
10567
10568
10569
10570
10571            </td> <!-- entry_type -->
10572
10573            <td class="entry_description">
10574              <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
10575            </td>
10576
10577            <td class="entry_units">
10578            </td>
10579
10580            <td class="entry_range">
10581              <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
10582            </td>
10583
10584            <td class="entry_tags">
10585              <ul class="entry_tags">
10586                  <li><a href="#tag_BC">BC</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>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
10597but the captured JPEG will still be a valid image.<wbr/></p>
10598<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
10599should have the same aspect ratio as the main JPEG output.<wbr/></p>
10600<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
10601ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
10602For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
1060316:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
10604generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
10605Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
10606<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
10607the camera device will handle thumbnail rotation in one of the following ways:</p>
10608<ul>
10609<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
10610  and keep jpeg and thumbnail image data unrotated.<wbr/></li>
10611<li>Rotate the jpeg and thumbnail image data and not set
10612  <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
10613  case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
10614  capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
10615  orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
10616  size.<wbr/></li>
10617</ul>
10618            </td>
10619          </tr>
10620
10621          <tr class="entries_header">
10622            <th class="th_details" colspan="5">HAL Implementation Details</th>
10623          </tr>
10624          <tr class="entry_cont">
10625            <td class="entry_details" colspan="5">
10626              <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
10627The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
10628The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
10629thumbnail image cropping.<wbr/></p>
10630            </td>
10631          </tr>
10632
10633          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10634           <!-- end of entry -->
10635        
10636        
10637
10638      <!-- end of kind -->
10639      </tbody>
10640      <tr><td colspan="6" class="kind">static</td></tr>
10641
10642      <thead class="entries_header">
10643        <tr>
10644          <th class="th_name">Property Name</th>
10645          <th class="th_type">Type</th>
10646          <th class="th_description">Description</th>
10647          <th class="th_units">Units</th>
10648          <th class="th_range">Range</th>
10649          <th class="th_tags">Tags</th>
10650        </tr>
10651      </thead>
10652
10653      <tbody>
10654
10655        
10656
10657        
10658
10659        
10660
10661        
10662
10663                
10664          <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
10665            <td class="entry_name
10666             " rowspan="3">
10667              android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
10668            </td>
10669            <td class="entry_type">
10670                <span class="entry_type_name">int32</span>
10671                <span class="entry_type_container">x</span>
10672
10673                <span class="entry_type_array">
10674                  2 x n
10675                </span>
10676              <span class="entry_type_visibility"> [public as size]</span>
10677
10678
10679              <span class="entry_type_hwlevel">[legacy] </span>
10680
10681
10682
10683
10684            </td> <!-- entry_type -->
10685
10686            <td class="entry_description">
10687              <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
10688camera device.<wbr/></p>
10689            </td>
10690
10691            <td class="entry_units">
10692            </td>
10693
10694            <td class="entry_range">
10695            </td>
10696
10697            <td class="entry_tags">
10698              <ul class="entry_tags">
10699                  <li><a href="#tag_BC">BC</a></li>
10700              </ul>
10701            </td>
10702
10703          </tr>
10704          <tr class="entries_header">
10705            <th class="th_details" colspan="5">Details</th>
10706          </tr>
10707          <tr class="entry_cont">
10708            <td class="entry_details" colspan="5">
10709              <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
10710thumbnail should be generated.<wbr/></p>
10711<p>Below condiditions will be satisfied for this size list:</p>
10712<ul>
10713<li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
10714If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
10715<li>The aspect ratio of the largest thumbnail size will be same as the
10716aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
10717The largest size is defined as the size that has the largest pixel area
10718in a given size list.<wbr/></li>
10719<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
10720one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
10721and vice versa.<wbr/></li>
10722<li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
10723</ul>
10724            </td>
10725          </tr>
10726
10727
10728          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10729           <!-- end of entry -->
10730        
10731                
10732          <tr class="entry" id="static_android.jpeg.maxSize">
10733            <td class="entry_name
10734             " rowspan="3">
10735              android.<wbr/>jpeg.<wbr/>max<wbr/>Size
10736            </td>
10737            <td class="entry_type">
10738                <span class="entry_type_name">int32</span>
10739
10740              <span class="entry_type_visibility"> [system]</span>
10741
10742
10743
10744
10745
10746
10747            </td> <!-- entry_type -->
10748
10749            <td class="entry_description">
10750              <p>Maximum size in bytes for the compressed
10751JPEG buffer</p>
10752            </td>
10753
10754            <td class="entry_units">
10755            </td>
10756
10757            <td class="entry_range">
10758              <p>Must be large enough to fit any JPEG produced by
10759the camera</p>
10760            </td>
10761
10762            <td class="entry_tags">
10763            </td>
10764
10765          </tr>
10766          <tr class="entries_header">
10767            <th class="th_details" colspan="5">Details</th>
10768          </tr>
10769          <tr class="entry_cont">
10770            <td class="entry_details" colspan="5">
10771              <p>This is used for sizing the gralloc buffers for
10772JPEG</p>
10773            </td>
10774          </tr>
10775
10776
10777          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10778           <!-- end of entry -->
10779        
10780        
10781
10782      <!-- end of kind -->
10783      </tbody>
10784      <tr><td colspan="6" class="kind">dynamic</td></tr>
10785
10786      <thead class="entries_header">
10787        <tr>
10788          <th class="th_name">Property Name</th>
10789          <th class="th_type">Type</th>
10790          <th class="th_description">Description</th>
10791          <th class="th_units">Units</th>
10792          <th class="th_range">Range</th>
10793          <th class="th_tags">Tags</th>
10794        </tr>
10795      </thead>
10796
10797      <tbody>
10798
10799        
10800
10801        
10802
10803        
10804
10805        
10806
10807                
10808          <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
10809            <td class="entry_name
10810             " rowspan="3">
10811              android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
10812            </td>
10813            <td class="entry_type">
10814                <span class="entry_type_name">byte</span>
10815
10816              <span class="entry_type_visibility"> [public as location]</span>
10817
10818              <span class="entry_type_synthetic">[synthetic] </span>
10819
10820              <span class="entry_type_hwlevel">[legacy] </span>
10821
10822
10823
10824
10825            </td> <!-- entry_type -->
10826
10827            <td class="entry_description">
10828              <p>A location object to use when generating image GPS metadata.<wbr/></p>
10829            </td>
10830
10831            <td class="entry_units">
10832            </td>
10833
10834            <td class="entry_range">
10835            </td>
10836
10837            <td class="entry_tags">
10838            </td>
10839
10840          </tr>
10841          <tr class="entries_header">
10842            <th class="th_details" colspan="5">Details</th>
10843          </tr>
10844          <tr class="entry_cont">
10845            <td class="entry_details" colspan="5">
10846              <p>Setting a location object in a request will include the GPS coordinates of the location
10847into any JPEG images captured based on the request.<wbr/> These coordinates can then be
10848viewed by anyone who receives the JPEG image.<wbr/></p>
10849            </td>
10850          </tr>
10851
10852
10853          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10854           <!-- end of entry -->
10855        
10856                
10857          <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
10858            <td class="entry_name
10859             " rowspan="1">
10860              android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
10861            </td>
10862            <td class="entry_type">
10863                <span class="entry_type_name">double</span>
10864                <span class="entry_type_container">x</span>
10865
10866                <span class="entry_type_array">
10867                  3
10868                </span>
10869              <span class="entry_type_visibility"> [hidden]</span>
10870
10871
10872              <span class="entry_type_hwlevel">[legacy] </span>
10873
10874
10875                <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
10876
10877
10878            </td> <!-- entry_type -->
10879
10880            <td class="entry_description">
10881              <p>GPS coordinates to include in output JPEG
10882EXIF.<wbr/></p>
10883            </td>
10884
10885            <td class="entry_units">
10886            </td>
10887
10888            <td class="entry_range">
10889              <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
10890            </td>
10891
10892            <td class="entry_tags">
10893              <ul class="entry_tags">
10894                  <li><a href="#tag_BC">BC</a></li>
10895              </ul>
10896            </td>
10897
10898          </tr>
10899
10900
10901          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10902           <!-- end of entry -->
10903        
10904                
10905          <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
10906            <td class="entry_name
10907             " rowspan="1">
10908              android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
10909            </td>
10910            <td class="entry_type">
10911                <span class="entry_type_name">byte</span>
10912
10913              <span class="entry_type_visibility"> [hidden as string]</span>
10914
10915
10916              <span class="entry_type_hwlevel">[legacy] </span>
10917
10918
10919
10920
10921            </td> <!-- entry_type -->
10922
10923            <td class="entry_description">
10924              <p>32 characters describing GPS algorithm to
10925include in EXIF.<wbr/></p>
10926            </td>
10927
10928            <td class="entry_units">
10929              UTF-8 null-terminated string
10930            </td>
10931
10932            <td class="entry_range">
10933            </td>
10934
10935            <td class="entry_tags">
10936              <ul class="entry_tags">
10937                  <li><a href="#tag_BC">BC</a></li>
10938              </ul>
10939            </td>
10940
10941          </tr>
10942
10943
10944          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10945           <!-- end of entry -->
10946        
10947                
10948          <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
10949            <td class="entry_name
10950             " rowspan="1">
10951              android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
10952            </td>
10953            <td class="entry_type">
10954                <span class="entry_type_name">int64</span>
10955
10956              <span class="entry_type_visibility"> [hidden]</span>
10957
10958
10959              <span class="entry_type_hwlevel">[legacy] </span>
10960
10961
10962
10963
10964            </td> <!-- entry_type -->
10965
10966            <td class="entry_description">
10967              <p>Time GPS fix was made to include in
10968EXIF.<wbr/></p>
10969            </td>
10970
10971            <td class="entry_units">
10972              UTC in seconds since January 1,<wbr/> 1970
10973            </td>
10974
10975            <td class="entry_range">
10976            </td>
10977
10978            <td class="entry_tags">
10979              <ul class="entry_tags">
10980                  <li><a href="#tag_BC">BC</a></li>
10981              </ul>
10982            </td>
10983
10984          </tr>
10985
10986
10987          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10988           <!-- end of entry -->
10989        
10990                
10991          <tr class="entry" id="dynamic_android.jpeg.orientation">
10992            <td class="entry_name
10993             " rowspan="3">
10994              android.<wbr/>jpeg.<wbr/>orientation
10995            </td>
10996            <td class="entry_type">
10997                <span class="entry_type_name">int32</span>
10998
10999              <span class="entry_type_visibility"> [public]</span>
11000
11001
11002              <span class="entry_type_hwlevel">[legacy] </span>
11003
11004
11005
11006
11007            </td> <!-- entry_type -->
11008
11009            <td class="entry_description">
11010              <p>The orientation for a JPEG image.<wbr/></p>
11011            </td>
11012
11013            <td class="entry_units">
11014              Degrees in multiples of 90
11015            </td>
11016
11017            <td class="entry_range">
11018              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
11019            </td>
11020
11021            <td class="entry_tags">
11022              <ul class="entry_tags">
11023                  <li><a href="#tag_BC">BC</a></li>
11024              </ul>
11025            </td>
11026
11027          </tr>
11028          <tr class="entries_header">
11029            <th class="th_details" colspan="5">Details</th>
11030          </tr>
11031          <tr class="entry_cont">
11032            <td class="entry_details" colspan="5">
11033              <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
11034to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
11035upright.<wbr/></p>
11036<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
11037rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
11038the thumbnail data will also be rotated.<wbr/></p>
11039<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
11040by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
11041<p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
11042sample code may be used:</p>
11043<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
11044    if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
11045    int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
11046
11047    //<wbr/> Round device orientation to a multiple of 90
11048    deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
11049
11050    //<wbr/> Reverse device orientation for front-facing cameras
11051    boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
11052    if (facingFront) deviceOrientation = -deviceOrientation;
11053
11054    //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
11055    //<wbr/> the image upright relative to the device orientation
11056    int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
11057
11058    return jpegOrientation;
11059}
11060</code></pre>
11061            </td>
11062          </tr>
11063
11064
11065          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11066           <!-- end of entry -->
11067        
11068                
11069          <tr class="entry" id="dynamic_android.jpeg.quality">
11070            <td class="entry_name
11071             " rowspan="3">
11072              android.<wbr/>jpeg.<wbr/>quality
11073            </td>
11074            <td class="entry_type">
11075                <span class="entry_type_name">byte</span>
11076
11077              <span class="entry_type_visibility"> [public]</span>
11078
11079
11080              <span class="entry_type_hwlevel">[legacy] </span>
11081
11082
11083
11084
11085            </td> <!-- entry_type -->
11086
11087            <td class="entry_description">
11088              <p>Compression quality of the final JPEG
11089image.<wbr/></p>
11090            </td>
11091
11092            <td class="entry_units">
11093            </td>
11094
11095            <td class="entry_range">
11096              <p>1-100; larger is higher quality</p>
11097            </td>
11098
11099            <td class="entry_tags">
11100              <ul class="entry_tags">
11101                  <li><a href="#tag_BC">BC</a></li>
11102              </ul>
11103            </td>
11104
11105          </tr>
11106          <tr class="entries_header">
11107            <th class="th_details" colspan="5">Details</th>
11108          </tr>
11109          <tr class="entry_cont">
11110            <td class="entry_details" colspan="5">
11111              <p>85-95 is typical usage range.<wbr/></p>
11112            </td>
11113          </tr>
11114
11115
11116          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11117           <!-- end of entry -->
11118        
11119                
11120          <tr class="entry" id="dynamic_android.jpeg.size">
11121            <td class="entry_name
11122             " rowspan="3">
11123              android.<wbr/>jpeg.<wbr/>size
11124            </td>
11125            <td class="entry_type">
11126                <span class="entry_type_name">int32</span>
11127
11128              <span class="entry_type_visibility"> [system]</span>
11129
11130
11131
11132
11133
11134
11135            </td> <!-- entry_type -->
11136
11137            <td class="entry_description">
11138              <p>The size of the compressed JPEG image,<wbr/> in
11139bytes</p>
11140            </td>
11141
11142            <td class="entry_units">
11143            </td>
11144
11145            <td class="entry_range">
11146              <p>&gt;= 0</p>
11147            </td>
11148
11149            <td class="entry_tags">
11150              <ul class="entry_tags">
11151                  <li><a href="#tag_FUTURE">FUTURE</a></li>
11152              </ul>
11153            </td>
11154
11155          </tr>
11156          <tr class="entries_header">
11157            <th class="th_details" colspan="5">Details</th>
11158          </tr>
11159          <tr class="entry_cont">
11160            <td class="entry_details" colspan="5">
11161              <p>If no JPEG output is produced for the request,<wbr/>
11162this must be 0.<wbr/></p>
11163<p>Otherwise,<wbr/> this describes the real size of the compressed
11164JPEG image placed in the output stream.<wbr/>  More specifically,<wbr/>
11165if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
11166has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
11167the JPEG stream will be 1000000 bytes,<wbr/> of which the first
11168500000 make up the real data.<wbr/></p>
11169            </td>
11170          </tr>
11171
11172
11173          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11174           <!-- end of entry -->
11175        
11176                
11177          <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
11178            <td class="entry_name
11179             " rowspan="1">
11180              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
11181            </td>
11182            <td class="entry_type">
11183                <span class="entry_type_name">byte</span>
11184
11185              <span class="entry_type_visibility"> [public]</span>
11186
11187
11188              <span class="entry_type_hwlevel">[legacy] </span>
11189
11190
11191
11192
11193            </td> <!-- entry_type -->
11194
11195            <td class="entry_description">
11196              <p>Compression quality of JPEG
11197thumbnail.<wbr/></p>
11198            </td>
11199
11200            <td class="entry_units">
11201            </td>
11202
11203            <td class="entry_range">
11204              <p>1-100; larger is higher quality</p>
11205            </td>
11206
11207            <td class="entry_tags">
11208              <ul class="entry_tags">
11209                  <li><a href="#tag_BC">BC</a></li>
11210              </ul>
11211            </td>
11212
11213          </tr>
11214
11215
11216          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11217           <!-- end of entry -->
11218        
11219                
11220          <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
11221            <td class="entry_name
11222             " rowspan="5">
11223              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
11224            </td>
11225            <td class="entry_type">
11226                <span class="entry_type_name">int32</span>
11227                <span class="entry_type_container">x</span>
11228
11229                <span class="entry_type_array">
11230                  2
11231                </span>
11232              <span class="entry_type_visibility"> [public as size]</span>
11233
11234
11235              <span class="entry_type_hwlevel">[legacy] </span>
11236
11237
11238
11239
11240            </td> <!-- entry_type -->
11241
11242            <td class="entry_description">
11243              <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
11244            </td>
11245
11246            <td class="entry_units">
11247            </td>
11248
11249            <td class="entry_range">
11250              <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
11251            </td>
11252
11253            <td class="entry_tags">
11254              <ul class="entry_tags">
11255                  <li><a href="#tag_BC">BC</a></li>
11256              </ul>
11257            </td>
11258
11259          </tr>
11260          <tr class="entries_header">
11261            <th class="th_details" colspan="5">Details</th>
11262          </tr>
11263          <tr class="entry_cont">
11264            <td class="entry_details" colspan="5">
11265              <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
11266but the captured JPEG will still be a valid image.<wbr/></p>
11267<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
11268should have the same aspect ratio as the main JPEG output.<wbr/></p>
11269<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
11270ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
11271For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
1127216:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
11273generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
11274Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
11275<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
11276the camera device will handle thumbnail rotation in one of the following ways:</p>
11277<ul>
11278<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
11279  and keep jpeg and thumbnail image data unrotated.<wbr/></li>
11280<li>Rotate the jpeg and thumbnail image data and not set
11281  <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
11282  case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
11283  capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
11284  orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
11285  size.<wbr/></li>
11286</ul>
11287            </td>
11288          </tr>
11289
11290          <tr class="entries_header">
11291            <th class="th_details" colspan="5">HAL Implementation Details</th>
11292          </tr>
11293          <tr class="entry_cont">
11294            <td class="entry_details" colspan="5">
11295              <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
11296The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
11297The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
11298thumbnail image cropping.<wbr/></p>
11299            </td>
11300          </tr>
11301
11302          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11303           <!-- end of entry -->
11304        
11305        
11306
11307      <!-- end of kind -->
11308      </tbody>
11309
11310  <!-- end of section -->
11311  <tr><td colspan="6" id="section_lens" class="section">lens</td></tr>
11312
11313
11314      <tr><td colspan="6" class="kind">controls</td></tr>
11315
11316      <thead class="entries_header">
11317        <tr>
11318          <th class="th_name">Property Name</th>
11319          <th class="th_type">Type</th>
11320          <th class="th_description">Description</th>
11321          <th class="th_units">Units</th>
11322          <th class="th_range">Range</th>
11323          <th class="th_tags">Tags</th>
11324        </tr>
11325      </thead>
11326
11327      <tbody>
11328
11329        
11330
11331        
11332
11333        
11334
11335        
11336
11337                
11338          <tr class="entry" id="controls_android.lens.aperture">
11339            <td class="entry_name
11340             " rowspan="3">
11341              android.<wbr/>lens.<wbr/>aperture
11342            </td>
11343            <td class="entry_type">
11344                <span class="entry_type_name">float</span>
11345
11346              <span class="entry_type_visibility"> [public]</span>
11347
11348
11349              <span class="entry_type_hwlevel">[full] </span>
11350
11351
11352
11353
11354            </td> <!-- entry_type -->
11355
11356            <td class="entry_description">
11357              <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
11358effective aperture diameter.<wbr/></p>
11359            </td>
11360
11361            <td class="entry_units">
11362              The f-number (f/<wbr/>N)
11363            </td>
11364
11365            <td class="entry_range">
11366              <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
11367            </td>
11368
11369            <td class="entry_tags">
11370              <ul class="entry_tags">
11371                  <li><a href="#tag_V1">V1</a></li>
11372              </ul>
11373            </td>
11374
11375          </tr>
11376          <tr class="entries_header">
11377            <th class="th_details" colspan="5">Details</th>
11378          </tr>
11379          <tr class="entry_cont">
11380            <td class="entry_details" colspan="5">
11381              <p>Setting this value is only supported on the camera devices that have a variable
11382aperture lens.<wbr/></p>
11383<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
11384this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
11385<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>
11386to achieve manual exposure control.<wbr/></p>
11387<p>The requested aperture value may take several frames to reach the
11388requested value; the camera device will report the current (intermediate)
11389aperture size in capture result metadata while the aperture is changing.<wbr/>
11390While 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>
11391<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
11392the ON modes,<wbr/> this will be overridden by the camera device
11393auto-exposure algorithm,<wbr/> the overridden values are then provided
11394back to the user in the corresponding result.<wbr/></p>
11395            </td>
11396          </tr>
11397
11398
11399          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11400           <!-- end of entry -->
11401        
11402                
11403          <tr class="entry" id="controls_android.lens.filterDensity">
11404            <td class="entry_name
11405             " rowspan="3">
11406              android.<wbr/>lens.<wbr/>filter<wbr/>Density
11407            </td>
11408            <td class="entry_type">
11409                <span class="entry_type_name">float</span>
11410
11411              <span class="entry_type_visibility"> [public]</span>
11412
11413
11414              <span class="entry_type_hwlevel">[full] </span>
11415
11416
11417
11418
11419            </td> <!-- entry_type -->
11420
11421            <td class="entry_description">
11422              <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
11423            </td>
11424
11425            <td class="entry_units">
11426              Exposure Value (EV)
11427            </td>
11428
11429            <td class="entry_range">
11430              <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
11431            </td>
11432
11433            <td class="entry_tags">
11434              <ul class="entry_tags">
11435                  <li><a href="#tag_V1">V1</a></li>
11436              </ul>
11437            </td>
11438
11439          </tr>
11440          <tr class="entries_header">
11441            <th class="th_details" colspan="5">Details</th>
11442          </tr>
11443          <tr class="entry_cont">
11444            <td class="entry_details" colspan="5">
11445              <p>This control will not be supported on most camera devices.<wbr/></p>
11446<p>Lens filters are typically used to lower the amount of light the
11447sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
11448step is the standard logarithmic representation,<wbr/> which are
11449non-negative,<wbr/> and inversely proportional to the amount of light
11450hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
11451in no reduction of the incoming light,<wbr/> and setting this to 2 would
11452mean that the filter is set to reduce incoming light by two stops
11453(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
11454<p>It may take several frames before the lens filter density changes
11455to the requested value.<wbr/> While the filter density is still changing,<wbr/>
11456<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
11457            </td>
11458          </tr>
11459
11460
11461          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11462           <!-- end of entry -->
11463        
11464                
11465          <tr class="entry" id="controls_android.lens.focalLength">
11466            <td class="entry_name
11467             " rowspan="3">
11468              android.<wbr/>lens.<wbr/>focal<wbr/>Length
11469            </td>
11470            <td class="entry_type">
11471                <span class="entry_type_name">float</span>
11472
11473              <span class="entry_type_visibility"> [public]</span>
11474
11475
11476              <span class="entry_type_hwlevel">[legacy] </span>
11477
11478
11479
11480
11481            </td> <!-- entry_type -->
11482
11483            <td class="entry_description">
11484              <p>The desired lens focal length; used for optical zoom.<wbr/></p>
11485            </td>
11486
11487            <td class="entry_units">
11488              Millimeters
11489            </td>
11490
11491            <td class="entry_range">
11492              <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
11493            </td>
11494
11495            <td class="entry_tags">
11496              <ul class="entry_tags">
11497                  <li><a href="#tag_V1">V1</a></li>
11498              </ul>
11499            </td>
11500
11501          </tr>
11502          <tr class="entries_header">
11503            <th class="th_details" colspan="5">Details</th>
11504          </tr>
11505          <tr class="entry_cont">
11506            <td class="entry_details" colspan="5">
11507              <p>This setting controls the physical focal length of the camera
11508device's lens.<wbr/> Changing the focal length changes the field of
11509view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
11510<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
11511setting won't be applied instantaneously,<wbr/> and it may take several
11512frames before the lens can change to the requested focal length.<wbr/>
11513While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
11514be set to MOVING.<wbr/></p>
11515<p>Optical zoom will not be supported on most devices.<wbr/></p>
11516            </td>
11517          </tr>
11518
11519
11520          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11521           <!-- end of entry -->
11522        
11523                
11524          <tr class="entry" id="controls_android.lens.focusDistance">
11525            <td class="entry_name
11526             " rowspan="3">
11527              android.<wbr/>lens.<wbr/>focus<wbr/>Distance
11528            </td>
11529            <td class="entry_type">
11530                <span class="entry_type_name">float</span>
11531
11532              <span class="entry_type_visibility"> [public]</span>
11533
11534
11535              <span class="entry_type_hwlevel">[full] </span>
11536
11537
11538
11539
11540            </td> <!-- entry_type -->
11541
11542            <td class="entry_description">
11543              <p>Desired distance to plane of sharpest focus,<wbr/>
11544measured from frontmost surface of the lens.<wbr/></p>
11545            </td>
11546
11547            <td class="entry_units">
11548              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
11549            </td>
11550
11551            <td class="entry_range">
11552              <p>&gt;= 0</p>
11553            </td>
11554
11555            <td class="entry_tags">
11556              <ul class="entry_tags">
11557                  <li><a href="#tag_BC">BC</a></li>
11558                  <li><a href="#tag_V1">V1</a></li>
11559              </ul>
11560            </td>
11561
11562          </tr>
11563          <tr class="entries_header">
11564            <th class="th_details" colspan="5">Details</th>
11565          </tr>
11566          <tr class="entry_cont">
11567            <td class="entry_details" colspan="5">
11568              <p>This control can be used for setting manual focus,<wbr/> on devices that support
11569the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
11570<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
11571<p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
11572<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>
11573<p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
11574instantaneously,<wbr/> and it may take several frames before the lens
11575can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
11576<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
11577<p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
11578for infinity focus.<wbr/></p>
11579            </td>
11580          </tr>
11581
11582
11583          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11584           <!-- end of entry -->
11585        
11586                
11587          <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
11588            <td class="entry_name
11589             " rowspan="3">
11590              android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
11591            </td>
11592            <td class="entry_type">
11593                <span class="entry_type_name entry_type_name_enum">byte</span>
11594
11595              <span class="entry_type_visibility"> [public]</span>
11596
11597
11598              <span class="entry_type_hwlevel">[limited] </span>
11599
11600
11601
11602                <ul class="entry_type_enum">
11603                  <li>
11604                    <span class="entry_type_enum_name">OFF</span>
11605                    <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
11606                  </li>
11607                  <li>
11608                    <span class="entry_type_enum_name">ON</span>
11609                    <span class="entry_type_enum_optional">[optional]</span>
11610                    <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
11611                  </li>
11612                </ul>
11613
11614            </td> <!-- entry_type -->
11615
11616            <td class="entry_description">
11617              <p>Sets whether the camera device uses optical image stabilization (OIS)
11618when capturing images.<wbr/></p>
11619            </td>
11620
11621            <td class="entry_units">
11622            </td>
11623
11624            <td class="entry_range">
11625              <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
11626            </td>
11627
11628            <td class="entry_tags">
11629              <ul class="entry_tags">
11630                  <li><a href="#tag_V1">V1</a></li>
11631              </ul>
11632            </td>
11633
11634          </tr>
11635          <tr class="entries_header">
11636            <th class="th_details" colspan="5">Details</th>
11637          </tr>
11638          <tr class="entry_cont">
11639            <td class="entry_details" colspan="5">
11640              <p>OIS is used to compensate for motion blur due to small
11641movements of the camera during capture.<wbr/> Unlike digital image
11642stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
11643makes use of mechanical elements to stabilize the camera
11644sensor,<wbr/> and thus allows for longer exposure times before
11645camera shake becomes apparent.<wbr/></p>
11646<p>Switching between different optical stabilization modes may take several
11647frames to initialize,<wbr/> the camera device will report the current mode in
11648capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
11649optical stabilization modes in the first several capture results may still
11650be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
11651<p>If a camera device supports both OIS and digital image stabilization
11652(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
11653interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
11654<p>Not all devices will support OIS; see
11655<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
11656available controls.<wbr/></p>
11657            </td>
11658          </tr>
11659
11660
11661          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11662           <!-- end of entry -->
11663        
11664        
11665
11666      <!-- end of kind -->
11667      </tbody>
11668      <tr><td colspan="6" class="kind">static</td></tr>
11669
11670      <thead class="entries_header">
11671        <tr>
11672          <th class="th_name">Property Name</th>
11673          <th class="th_type">Type</th>
11674          <th class="th_description">Description</th>
11675          <th class="th_units">Units</th>
11676          <th class="th_range">Range</th>
11677          <th class="th_tags">Tags</th>
11678        </tr>
11679      </thead>
11680
11681      <tbody>
11682
11683        
11684
11685        
11686
11687        
11688
11689        
11690                
11691            
11692
11693                
11694          <tr class="entry" id="static_android.lens.info.availableApertures">
11695            <td class="entry_name
11696             " rowspan="3">
11697              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
11698            </td>
11699            <td class="entry_type">
11700                <span class="entry_type_name">float</span>
11701                <span class="entry_type_container">x</span>
11702
11703                <span class="entry_type_array">
11704                  n
11705                </span>
11706              <span class="entry_type_visibility"> [public]</span>
11707
11708
11709              <span class="entry_type_hwlevel">[full] </span>
11710
11711
11712
11713
11714            </td> <!-- entry_type -->
11715
11716            <td class="entry_description">
11717              <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
11718supported by this camera device.<wbr/></p>
11719            </td>
11720
11721            <td class="entry_units">
11722              The aperture f-number
11723            </td>
11724
11725            <td class="entry_range">
11726            </td>
11727
11728            <td class="entry_tags">
11729              <ul class="entry_tags">
11730                  <li><a href="#tag_V1">V1</a></li>
11731              </ul>
11732            </td>
11733
11734          </tr>
11735          <tr class="entries_header">
11736            <th class="th_details" colspan="5">Details</th>
11737          </tr>
11738          <tr class="entry_cont">
11739            <td class="entry_details" colspan="5">
11740              <p>If the camera device doesn't support a variable lens aperture,<wbr/>
11741this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
11742<p>If the camera device supports a variable aperture,<wbr/> the aperture values
11743in this list will be sorted in ascending order.<wbr/></p>
11744            </td>
11745          </tr>
11746
11747
11748          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11749           <!-- end of entry -->
11750        
11751                
11752          <tr class="entry" id="static_android.lens.info.availableFilterDensities">
11753            <td class="entry_name
11754             " rowspan="3">
11755              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
11756            </td>
11757            <td class="entry_type">
11758                <span class="entry_type_name">float</span>
11759                <span class="entry_type_container">x</span>
11760
11761                <span class="entry_type_array">
11762                  n
11763                </span>
11764              <span class="entry_type_visibility"> [public]</span>
11765
11766
11767              <span class="entry_type_hwlevel">[full] </span>
11768
11769
11770
11771
11772            </td> <!-- entry_type -->
11773
11774            <td class="entry_description">
11775              <p>List of neutral density filter values for
11776<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
11777            </td>
11778
11779            <td class="entry_units">
11780              Exposure value (EV)
11781            </td>
11782
11783            <td class="entry_range">
11784              <p>Values are &gt;= 0</p>
11785            </td>
11786
11787            <td class="entry_tags">
11788              <ul class="entry_tags">
11789                  <li><a href="#tag_V1">V1</a></li>
11790              </ul>
11791            </td>
11792
11793          </tr>
11794          <tr class="entries_header">
11795            <th class="th_details" colspan="5">Details</th>
11796          </tr>
11797          <tr class="entry_cont">
11798            <td class="entry_details" colspan="5">
11799              <p>If a neutral density filter is not supported by this camera device,<wbr/>
11800this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
11801filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
11802            </td>
11803          </tr>
11804
11805
11806          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11807           <!-- end of entry -->
11808        
11809                
11810          <tr class="entry" id="static_android.lens.info.availableFocalLengths">
11811            <td class="entry_name
11812             " rowspan="3">
11813              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
11814            </td>
11815            <td class="entry_type">
11816                <span class="entry_type_name">float</span>
11817                <span class="entry_type_container">x</span>
11818
11819                <span class="entry_type_array">
11820                  n
11821                </span>
11822              <span class="entry_type_visibility"> [public]</span>
11823
11824
11825              <span class="entry_type_hwlevel">[legacy] </span>
11826
11827
11828                <div class="entry_type_notes">The list of available focal lengths</div>
11829
11830
11831            </td> <!-- entry_type -->
11832
11833            <td class="entry_description">
11834              <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
11835device.<wbr/></p>
11836            </td>
11837
11838            <td class="entry_units">
11839              Millimeters
11840            </td>
11841
11842            <td class="entry_range">
11843              <p>Values are &gt; 0</p>
11844            </td>
11845
11846            <td class="entry_tags">
11847              <ul class="entry_tags">
11848                  <li><a href="#tag_BC">BC</a></li>
11849                  <li><a href="#tag_V1">V1</a></li>
11850              </ul>
11851            </td>
11852
11853          </tr>
11854          <tr class="entries_header">
11855            <th class="th_details" colspan="5">Details</th>
11856          </tr>
11857          <tr class="entry_cont">
11858            <td class="entry_details" colspan="5">
11859              <p>If optical zoom is not supported,<wbr/> this list will only contain
11860a single value corresponding to the fixed focal length of the
11861device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
11862by the camera device,<wbr/> in ascending order.<wbr/></p>
11863            </td>
11864          </tr>
11865
11866
11867          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11868           <!-- end of entry -->
11869        
11870                
11871          <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
11872            <td class="entry_name
11873             " rowspan="3">
11874              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
11875            </td>
11876            <td class="entry_type">
11877                <span class="entry_type_name">byte</span>
11878                <span class="entry_type_container">x</span>
11879
11880                <span class="entry_type_array">
11881                  n
11882                </span>
11883              <span class="entry_type_visibility"> [public as enumList]</span>
11884
11885
11886              <span class="entry_type_hwlevel">[limited] </span>
11887
11888
11889                <div class="entry_type_notes">list of enums</div>
11890
11891
11892            </td> <!-- entry_type -->
11893
11894            <td class="entry_description">
11895              <p>List of optical image stabilization (OIS) modes for
11896<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>
11897            </td>
11898
11899            <td class="entry_units">
11900            </td>
11901
11902            <td class="entry_range">
11903              <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
11904            </td>
11905
11906            <td class="entry_tags">
11907              <ul class="entry_tags">
11908                  <li><a href="#tag_V1">V1</a></li>
11909              </ul>
11910            </td>
11911
11912          </tr>
11913          <tr class="entries_header">
11914            <th class="th_details" colspan="5">Details</th>
11915          </tr>
11916          <tr class="entry_cont">
11917            <td class="entry_details" colspan="5">
11918              <p>If OIS is not supported by a given camera device,<wbr/> this list will
11919contain only OFF.<wbr/></p>
11920            </td>
11921          </tr>
11922
11923
11924          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11925           <!-- end of entry -->
11926        
11927                
11928          <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
11929            <td class="entry_name
11930             " rowspan="3">
11931              android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
11932            </td>
11933            <td class="entry_type">
11934                <span class="entry_type_name">float</span>
11935
11936              <span class="entry_type_visibility"> [public]</span>
11937
11938
11939              <span class="entry_type_hwlevel">[limited] </span>
11940
11941
11942
11943
11944            </td> <!-- entry_type -->
11945
11946            <td class="entry_description">
11947              <p>Hyperfocal distance for this lens.<wbr/></p>
11948            </td>
11949
11950            <td class="entry_units">
11951              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
11952            </td>
11953
11954            <td class="entry_range">
11955              <p>If lens is fixed focus,<wbr/> &gt;= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
11956within <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>
11957            </td>
11958
11959            <td class="entry_tags">
11960            </td>
11961
11962          </tr>
11963          <tr class="entries_header">
11964            <th class="th_details" colspan="5">Details</th>
11965          </tr>
11966          <tr class="entry_cont">
11967            <td class="entry_details" colspan="5">
11968              <p>If the lens is not fixed focus,<wbr/> the camera device will report this
11969field 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>
11970            </td>
11971          </tr>
11972
11973
11974          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11975           <!-- end of entry -->
11976        
11977                
11978          <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
11979            <td class="entry_name
11980             " rowspan="5">
11981              android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
11982            </td>
11983            <td class="entry_type">
11984                <span class="entry_type_name">float</span>
11985
11986              <span class="entry_type_visibility"> [public]</span>
11987
11988
11989              <span class="entry_type_hwlevel">[limited] </span>
11990
11991
11992
11993
11994            </td> <!-- entry_type -->
11995
11996            <td class="entry_description">
11997              <p>Shortest distance from frontmost surface
11998of the lens that can be brought into sharp focus.<wbr/></p>
11999            </td>
12000
12001            <td class="entry_units">
12002              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12003            </td>
12004
12005            <td class="entry_range">
12006              <p>&gt;= 0</p>
12007            </td>
12008
12009            <td class="entry_tags">
12010              <ul class="entry_tags">
12011                  <li><a href="#tag_V1">V1</a></li>
12012              </ul>
12013            </td>
12014
12015          </tr>
12016          <tr class="entries_header">
12017            <th class="th_details" colspan="5">Details</th>
12018          </tr>
12019          <tr class="entry_cont">
12020            <td class="entry_details" colspan="5">
12021              <p>If the lens is fixed-focus,<wbr/> this will be
120220.<wbr/></p>
12023            </td>
12024          </tr>
12025
12026          <tr class="entries_header">
12027            <th class="th_details" colspan="5">HAL Implementation Details</th>
12028          </tr>
12029          <tr class="entry_cont">
12030            <td class="entry_details" colspan="5">
12031              <p>Mandatory for FULL devices; LIMITED devices
12032must always set this value to 0 for fixed-focus; and may omit
12033the minimum focus distance otherwise.<wbr/></p>
12034<p>This field is also mandatory for all devices advertising
12035the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
12036            </td>
12037          </tr>
12038
12039          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12040           <!-- end of entry -->
12041        
12042                
12043          <tr class="entry" id="static_android.lens.info.shadingMapSize">
12044            <td class="entry_name
12045             " rowspan="3">
12046              android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
12047            </td>
12048            <td class="entry_type">
12049                <span class="entry_type_name">int32</span>
12050                <span class="entry_type_container">x</span>
12051
12052                <span class="entry_type_array">
12053                  2
12054                </span>
12055              <span class="entry_type_visibility"> [hidden as size]</span>
12056
12057
12058              <span class="entry_type_hwlevel">[full] </span>
12059
12060
12061                <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
12062
12063
12064            </td> <!-- entry_type -->
12065
12066            <td class="entry_description">
12067              <p>Dimensions of lens shading map.<wbr/></p>
12068            </td>
12069
12070            <td class="entry_units">
12071            </td>
12072
12073            <td class="entry_range">
12074              <p>Both values &gt;= 1</p>
12075            </td>
12076
12077            <td class="entry_tags">
12078              <ul class="entry_tags">
12079                  <li><a href="#tag_V1">V1</a></li>
12080              </ul>
12081            </td>
12082
12083          </tr>
12084          <tr class="entries_header">
12085            <th class="th_details" colspan="5">Details</th>
12086          </tr>
12087          <tr class="entry_cont">
12088            <td class="entry_details" colspan="5">
12089              <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
12090must be smaller than 64x64.<wbr/></p>
12091            </td>
12092          </tr>
12093
12094
12095          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12096           <!-- end of entry -->
12097        
12098                
12099          <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
12100            <td class="entry_name
12101             " rowspan="5">
12102              android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
12103            </td>
12104            <td class="entry_type">
12105                <span class="entry_type_name entry_type_name_enum">byte</span>
12106
12107              <span class="entry_type_visibility"> [public]</span>
12108
12109
12110              <span class="entry_type_hwlevel">[limited] </span>
12111
12112
12113
12114                <ul class="entry_type_enum">
12115                  <li>
12116                    <span class="entry_type_enum_name">UNCALIBRATED</span>
12117                    <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
12118<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
12119<p>Setting the lens to the same focus distance on separate occasions may
12120result in a different real focus distance,<wbr/> depending on factors such
12121as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
12122and the device temperature.<wbr/> The focus distance value will still be
12123in 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
12124represents the farthest focus.<wbr/></p></span>
12125                  </li>
12126                  <li>
12127                    <span class="entry_type_enum_name">APPROXIMATE</span>
12128                    <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
12129<p>However,<wbr/> setting the lens to the same focus distance
12130on separate occasions may result in a different real
12131focus distance,<wbr/> depending on factors such as the
12132orientation of the device,<wbr/> the age of the focusing
12133mechanism,<wbr/> and the device temperature.<wbr/></p></span>
12134                  </li>
12135                  <li>
12136                    <span class="entry_type_enum_name">CALIBRATED</span>
12137                    <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
12138is calibrated.<wbr/></p>
12139<p>The lens mechanism is calibrated so that setting the
12140same focus distance is repeatable on multiple
12141occasions with good accuracy,<wbr/> and the focus distance
12142corresponds to the real physical distance to the plane
12143of best focus.<wbr/></p></span>
12144                  </li>
12145                </ul>
12146
12147            </td> <!-- entry_type -->
12148
12149            <td class="entry_description">
12150              <p>The lens focus distance calibration quality.<wbr/></p>
12151            </td>
12152
12153            <td class="entry_units">
12154            </td>
12155
12156            <td class="entry_range">
12157            </td>
12158
12159            <td class="entry_tags">
12160              <ul class="entry_tags">
12161                  <li><a href="#tag_V1">V1</a></li>
12162              </ul>
12163            </td>
12164
12165          </tr>
12166          <tr class="entries_header">
12167            <th class="th_details" colspan="5">Details</th>
12168          </tr>
12169          <tr class="entry_cont">
12170            <td class="entry_details" colspan="5">
12171              <p>The lens focus distance calibration quality determines the reliability of
12172focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
12173<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
12174<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
12175<p>APPROXIMATE and CALIBRATED devices report the focus metadata in
12176units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
12177and increasing positive numbers represent focusing closer and closer
12178to the camera device.<wbr/> The focus distance control also uses diopters
12179on these devices.<wbr/></p>
12180<p>UNCALIBRATED devices do not use units that are directly comparable
12181to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
12182focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
12183nearest focus the device can achieve.<wbr/></p>
12184            </td>
12185          </tr>
12186
12187          <tr class="entries_header">
12188            <th class="th_details" colspan="5">HAL Implementation Details</th>
12189          </tr>
12190          <tr class="entry_cont">
12191            <td class="entry_details" colspan="5">
12192              <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
12193focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
12194and the lens focus distance is set to 0 diopters
12195(<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
12196and is stably focused at infinity even if the device tilts.<wbr/> It may take the
12197lens some time to move; during the move the lens state should be MOVING and
12198the output diopter value should be changing toward 0.<wbr/></p>
12199            </td>
12200          </tr>
12201
12202          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12203           <!-- end of entry -->
12204        
12205        
12206        
12207
12208                
12209          <tr class="entry" id="static_android.lens.facing">
12210            <td class="entry_name
12211             " rowspan="1">
12212              android.<wbr/>lens.<wbr/>facing
12213            </td>
12214            <td class="entry_type">
12215                <span class="entry_type_name entry_type_name_enum">byte</span>
12216
12217              <span class="entry_type_visibility"> [public]</span>
12218
12219
12220              <span class="entry_type_hwlevel">[legacy] </span>
12221
12222
12223
12224                <ul class="entry_type_enum">
12225                  <li>
12226                    <span class="entry_type_enum_name">FRONT</span>
12227                    <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
12228                  </li>
12229                  <li>
12230                    <span class="entry_type_enum_name">BACK</span>
12231                    <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
12232                  </li>
12233                  <li>
12234                    <span class="entry_type_enum_name">EXTERNAL</span>
12235                    <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
12236device's screen.<wbr/></p></span>
12237                  </li>
12238                </ul>
12239
12240            </td> <!-- entry_type -->
12241
12242            <td class="entry_description">
12243              <p>Direction the camera faces relative to
12244device screen.<wbr/></p>
12245            </td>
12246
12247            <td class="entry_units">
12248            </td>
12249
12250            <td class="entry_range">
12251            </td>
12252
12253            <td class="entry_tags">
12254            </td>
12255
12256          </tr>
12257
12258
12259          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12260           <!-- end of entry -->
12261        
12262                
12263          <tr class="entry" id="static_android.lens.poseRotation">
12264            <td class="entry_name
12265             " rowspan="3">
12266              android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
12267            </td>
12268            <td class="entry_type">
12269                <span class="entry_type_name">float</span>
12270                <span class="entry_type_container">x</span>
12271
12272                <span class="entry_type_array">
12273                  4
12274                </span>
12275              <span class="entry_type_visibility"> [public]</span>
12276
12277
12278
12279
12280
12281
12282            </td> <!-- entry_type -->
12283
12284            <td class="entry_description">
12285              <p>The orientation of the camera relative to the sensor
12286coordinate system.<wbr/></p>
12287            </td>
12288
12289            <td class="entry_units">
12290              
12291            Quaternion coefficients
12292          
12293            </td>
12294
12295            <td class="entry_range">
12296            </td>
12297
12298            <td class="entry_tags">
12299              <ul class="entry_tags">
12300                  <li><a href="#tag_DEPTH">DEPTH</a></li>
12301              </ul>
12302            </td>
12303
12304          </tr>
12305          <tr class="entries_header">
12306            <th class="th_details" colspan="5">Details</th>
12307          </tr>
12308          <tr class="entry_cont">
12309            <td class="entry_details" colspan="5">
12310              <p>The four coefficients that describe the quaternion
12311rotation from the Android sensor coordinate system to a
12312camera-aligned coordinate system where the X-axis is
12313aligned with the long side of the image sensor,<wbr/> the Y-axis
12314is aligned with the short side of the image sensor,<wbr/> and
12315the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
12316<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
12317to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
12318amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
12319<pre><code> theta = 2 * acos(w)
12320a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
12321a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
12322a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
12323</code></pre>
12324<p>To create a 3x3 rotation matrix that applies the rotation
12325defined by this quaternion,<wbr/> the following matrix can be
12326used:</p>
12327<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
12328           2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
12329           2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
12330</code></pre>
12331<p>This matrix can then be used to apply the rotation to a
12332 column vector point with</p>
12333<p><code>p' = Rp</code></p>
12334<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
12335 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
12336            </td>
12337          </tr>
12338
12339
12340          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12341           <!-- end of entry -->
12342        
12343                
12344          <tr class="entry" id="static_android.lens.poseTranslation">
12345            <td class="entry_name
12346             " rowspan="3">
12347              android.<wbr/>lens.<wbr/>pose<wbr/>Translation
12348            </td>
12349            <td class="entry_type">
12350                <span class="entry_type_name">float</span>
12351                <span class="entry_type_container">x</span>
12352
12353                <span class="entry_type_array">
12354                  3
12355                </span>
12356              <span class="entry_type_visibility"> [public]</span>
12357
12358
12359
12360
12361
12362
12363            </td> <!-- entry_type -->
12364
12365            <td class="entry_description">
12366              <p>Position of the camera optical center.<wbr/></p>
12367            </td>
12368
12369            <td class="entry_units">
12370              Meters
12371            </td>
12372
12373            <td class="entry_range">
12374            </td>
12375
12376            <td class="entry_tags">
12377              <ul class="entry_tags">
12378                  <li><a href="#tag_DEPTH">DEPTH</a></li>
12379              </ul>
12380            </td>
12381
12382          </tr>
12383          <tr class="entries_header">
12384            <th class="th_details" colspan="5">Details</th>
12385          </tr>
12386          <tr class="entry_cont">
12387            <td class="entry_details" colspan="5">
12388              <p>The position of the camera device's lens optical center,<wbr/>
12389as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
12390optical center of the largest camera device facing in the
12391same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
12392axes</a>.<wbr/> Note that only the axis definitions are shared with
12393the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
12394<p>If this device is the largest or only camera device with a
12395given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
12396camera device with a lens optical center located 3 cm from
12397the main sensor along the +X axis (to the right from the
12398user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
12399<p>To transform a pixel coordinates between two cameras
12400facing the same direction,<wbr/> first the source camera
12401<a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/>  Then
12402the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
12403to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
12404of the source camera,<wbr/> the translation of the source camera
12405relative to the destination camera,<wbr/> the
12406<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
12407finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
12408of the destination camera.<wbr/> This obtains a
12409radial-distortion-free coordinate in the destination
12410camera pixel coordinates.<wbr/></p>
12411<p>To compare this against a real image from the destination
12412camera,<wbr/> the destination camera image then needs to be
12413corrected for radial distortion before comparison or
12414sampling.<wbr/></p>
12415            </td>
12416          </tr>
12417
12418
12419          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12420           <!-- end of entry -->
12421        
12422                
12423          <tr class="entry" id="static_android.lens.intrinsicCalibration">
12424            <td class="entry_name
12425             " rowspan="3">
12426              android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
12427            </td>
12428            <td class="entry_type">
12429                <span class="entry_type_name">float</span>
12430                <span class="entry_type_container">x</span>
12431
12432                <span class="entry_type_array">
12433                  5
12434                </span>
12435              <span class="entry_type_visibility"> [public]</span>
12436
12437
12438
12439
12440
12441
12442            </td> <!-- entry_type -->
12443
12444            <td class="entry_description">
12445              <p>The parameters for this camera device's intrinsic
12446calibration.<wbr/></p>
12447            </td>
12448
12449            <td class="entry_units">
12450              
12451            Pixels in the
12452            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
12453            coordinate system.<wbr/>
12454          
12455            </td>
12456
12457            <td class="entry_range">
12458            </td>
12459
12460            <td class="entry_tags">
12461              <ul class="entry_tags">
12462                  <li><a href="#tag_DEPTH">DEPTH</a></li>
12463              </ul>
12464            </td>
12465
12466          </tr>
12467          <tr class="entries_header">
12468            <th class="th_details" colspan="5">Details</th>
12469          </tr>
12470          <tr class="entry_cont">
12471            <td class="entry_details" colspan="5">
12472              <p>The five calibration parameters that describe the
12473transform from camera-centric 3D coordinates to sensor
12474pixel coordinates:</p>
12475<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
12476</code></pre>
12477<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
12478focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
12479axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
12480being aligned with the lens plane.<wbr/></p>
12481<p>These are typically used within a transformation matrix K:</p>
12482<pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
12483       0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
12484       0    0,<wbr/>   1 ]
12485</code></pre>
12486<p>which can then be combined with the camera pose rotation
12487<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
12488<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
12489complete transform from world coordinates to pixel
12490coordinates:</p>
12491<pre><code>P = [ K 0   * [ R t
12492     0 1 ]     0 1 ]
12493</code></pre>
12494<p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
12495and <code>p_<wbr/>s</code> being a point in the camera active pixel array
12496coordinate system,<wbr/> and with the mapping including the
12497homogeneous division by z:</p>
12498<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
12499p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
12500</code></pre>
12501<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
12502point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
12503(depth) in pixel coordinates.<wbr/></p>
12504<p>Note that the coordinate system for this transform is the
12505<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/>
12506where <code>(0,<wbr/>0)</code> is the top-left of the
12507preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
12508intrinsic calibration transforms have been applied to a
12509world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
12510transform needs to be applied,<wbr/> and the result adjusted to
12511be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
12512system (where <code>(0,<wbr/> 0)</code> is the top-left of the
12513activeArraySize rectangle),<wbr/> to determine the final pixel
12514coordinate of the world point for processed (non-RAW)
12515output buffers.<wbr/></p>
12516            </td>
12517          </tr>
12518
12519
12520          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12521           <!-- end of entry -->
12522        
12523                
12524          <tr class="entry" id="static_android.lens.radialDistortion">
12525            <td class="entry_name
12526             " rowspan="3">
12527              android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
12528            </td>
12529            <td class="entry_type">
12530                <span class="entry_type_name">float</span>
12531                <span class="entry_type_container">x</span>
12532
12533                <span class="entry_type_array">
12534                  6
12535                </span>
12536              <span class="entry_type_visibility"> [public]</span>
12537
12538
12539
12540
12541
12542
12543            </td> <!-- entry_type -->
12544
12545            <td class="entry_description">
12546              <p>The correction coefficients to correct for this camera device's
12547radial and tangential lens distortion.<wbr/></p>
12548            </td>
12549
12550            <td class="entry_units">
12551              
12552            Unitless coefficients.<wbr/>
12553          
12554            </td>
12555
12556            <td class="entry_range">
12557            </td>
12558
12559            <td class="entry_tags">
12560              <ul class="entry_tags">
12561                  <li><a href="#tag_DEPTH">DEPTH</a></li>
12562              </ul>
12563            </td>
12564
12565          </tr>
12566          <tr class="entries_header">
12567            <th class="th_details" colspan="5">Details</th>
12568          </tr>
12569          <tr class="entry_cont">
12570            <td class="entry_details" colspan="5">
12571              <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
12572kappa_<wbr/>3]</code> and two tangential distortion coefficients
12573<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
12574lens's geometric distortion with the mapping equations:</p>
12575<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 ) +
12576       kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
12577 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
12578       kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
12579</code></pre>
12580<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
12581input image that correspond to the pixel values in the
12582corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
12583<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
12584</code></pre>
12585<p>The pixel coordinates are defined in a normalized
12586coordinate system related to the
12587<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
12588Both <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
12589lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
12590of both x and y coordinates are normalized to be 1 at the
12591edge further from the optical center,<wbr/> so the range
12592for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
12593<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
12594optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
12595is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
12596<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
12597            </td>
12598          </tr>
12599
12600
12601          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12602           <!-- end of entry -->
12603        
12604        
12605
12606      <!-- end of kind -->
12607      </tbody>
12608      <tr><td colspan="6" class="kind">dynamic</td></tr>
12609
12610      <thead class="entries_header">
12611        <tr>
12612          <th class="th_name">Property Name</th>
12613          <th class="th_type">Type</th>
12614          <th class="th_description">Description</th>
12615          <th class="th_units">Units</th>
12616          <th class="th_range">Range</th>
12617          <th class="th_tags">Tags</th>
12618        </tr>
12619      </thead>
12620
12621      <tbody>
12622
12623        
12624
12625        
12626
12627        
12628
12629        
12630
12631                
12632          <tr class="entry" id="dynamic_android.lens.aperture">
12633            <td class="entry_name
12634             " rowspan="3">
12635              android.<wbr/>lens.<wbr/>aperture
12636            </td>
12637            <td class="entry_type">
12638                <span class="entry_type_name">float</span>
12639
12640              <span class="entry_type_visibility"> [public]</span>
12641
12642
12643              <span class="entry_type_hwlevel">[full] </span>
12644
12645
12646
12647
12648            </td> <!-- entry_type -->
12649
12650            <td class="entry_description">
12651              <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
12652effective aperture diameter.<wbr/></p>
12653            </td>
12654
12655            <td class="entry_units">
12656              The f-number (f/<wbr/>N)
12657            </td>
12658
12659            <td class="entry_range">
12660              <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
12661            </td>
12662
12663            <td class="entry_tags">
12664              <ul class="entry_tags">
12665                  <li><a href="#tag_V1">V1</a></li>
12666              </ul>
12667            </td>
12668
12669          </tr>
12670          <tr class="entries_header">
12671            <th class="th_details" colspan="5">Details</th>
12672          </tr>
12673          <tr class="entry_cont">
12674            <td class="entry_details" colspan="5">
12675              <p>Setting this value is only supported on the camera devices that have a variable
12676aperture lens.<wbr/></p>
12677<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
12678this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
12679<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>
12680to achieve manual exposure control.<wbr/></p>
12681<p>The requested aperture value may take several frames to reach the
12682requested value; the camera device will report the current (intermediate)
12683aperture size in capture result metadata while the aperture is changing.<wbr/>
12684While 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>
12685<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
12686the ON modes,<wbr/> this will be overridden by the camera device
12687auto-exposure algorithm,<wbr/> the overridden values are then provided
12688back to the user in the corresponding result.<wbr/></p>
12689            </td>
12690          </tr>
12691
12692
12693          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12694           <!-- end of entry -->
12695        
12696                
12697          <tr class="entry" id="dynamic_android.lens.filterDensity">
12698            <td class="entry_name
12699             " rowspan="3">
12700              android.<wbr/>lens.<wbr/>filter<wbr/>Density
12701            </td>
12702            <td class="entry_type">
12703                <span class="entry_type_name">float</span>
12704
12705              <span class="entry_type_visibility"> [public]</span>
12706
12707
12708              <span class="entry_type_hwlevel">[full] </span>
12709
12710
12711
12712
12713            </td> <!-- entry_type -->
12714
12715            <td class="entry_description">
12716              <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
12717            </td>
12718
12719            <td class="entry_units">
12720              Exposure Value (EV)
12721            </td>
12722
12723            <td class="entry_range">
12724              <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
12725            </td>
12726
12727            <td class="entry_tags">
12728              <ul class="entry_tags">
12729                  <li><a href="#tag_V1">V1</a></li>
12730              </ul>
12731            </td>
12732
12733          </tr>
12734          <tr class="entries_header">
12735            <th class="th_details" colspan="5">Details</th>
12736          </tr>
12737          <tr class="entry_cont">
12738            <td class="entry_details" colspan="5">
12739              <p>This control will not be supported on most camera devices.<wbr/></p>
12740<p>Lens filters are typically used to lower the amount of light the
12741sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
12742step is the standard logarithmic representation,<wbr/> which are
12743non-negative,<wbr/> and inversely proportional to the amount of light
12744hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
12745in no reduction of the incoming light,<wbr/> and setting this to 2 would
12746mean that the filter is set to reduce incoming light by two stops
12747(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
12748<p>It may take several frames before the lens filter density changes
12749to the requested value.<wbr/> While the filter density is still changing,<wbr/>
12750<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12751            </td>
12752          </tr>
12753
12754
12755          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12756           <!-- end of entry -->
12757        
12758                
12759          <tr class="entry" id="dynamic_android.lens.focalLength">
12760            <td class="entry_name
12761             " rowspan="3">
12762              android.<wbr/>lens.<wbr/>focal<wbr/>Length
12763            </td>
12764            <td class="entry_type">
12765                <span class="entry_type_name">float</span>
12766
12767              <span class="entry_type_visibility"> [public]</span>
12768
12769
12770              <span class="entry_type_hwlevel">[legacy] </span>
12771
12772
12773
12774
12775            </td> <!-- entry_type -->
12776
12777            <td class="entry_description">
12778              <p>The desired lens focal length; used for optical zoom.<wbr/></p>
12779            </td>
12780
12781            <td class="entry_units">
12782              Millimeters
12783            </td>
12784
12785            <td class="entry_range">
12786              <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
12787            </td>
12788
12789            <td class="entry_tags">
12790              <ul class="entry_tags">
12791                  <li><a href="#tag_BC">BC</a></li>
12792              </ul>
12793            </td>
12794
12795          </tr>
12796          <tr class="entries_header">
12797            <th class="th_details" colspan="5">Details</th>
12798          </tr>
12799          <tr class="entry_cont">
12800            <td class="entry_details" colspan="5">
12801              <p>This setting controls the physical focal length of the camera
12802device's lens.<wbr/> Changing the focal length changes the field of
12803view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
12804<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
12805setting won't be applied instantaneously,<wbr/> and it may take several
12806frames before the lens can change to the requested focal length.<wbr/>
12807While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
12808be set to MOVING.<wbr/></p>
12809<p>Optical zoom will not be supported on most devices.<wbr/></p>
12810            </td>
12811          </tr>
12812
12813
12814          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12815           <!-- end of entry -->
12816        
12817                
12818          <tr class="entry" id="dynamic_android.lens.focusDistance">
12819            <td class="entry_name
12820             " rowspan="3">
12821              android.<wbr/>lens.<wbr/>focus<wbr/>Distance
12822            </td>
12823            <td class="entry_type">
12824                <span class="entry_type_name">float</span>
12825
12826              <span class="entry_type_visibility"> [public]</span>
12827
12828
12829              <span class="entry_type_hwlevel">[full] </span>
12830
12831
12832
12833
12834            </td> <!-- entry_type -->
12835
12836            <td class="entry_description">
12837              <p>Desired distance to plane of sharpest focus,<wbr/>
12838measured from frontmost surface of the lens.<wbr/></p>
12839            </td>
12840
12841            <td class="entry_units">
12842              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12843            </td>
12844
12845            <td class="entry_range">
12846              <p>&gt;= 0</p>
12847            </td>
12848
12849            <td class="entry_tags">
12850              <ul class="entry_tags">
12851                  <li><a href="#tag_BC">BC</a></li>
12852              </ul>
12853            </td>
12854
12855          </tr>
12856          <tr class="entries_header">
12857            <th class="th_details" colspan="5">Details</th>
12858          </tr>
12859          <tr class="entry_cont">
12860            <td class="entry_details" colspan="5">
12861              <p>Should be zero for fixed-focus cameras</p>
12862            </td>
12863          </tr>
12864
12865
12866          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12867           <!-- end of entry -->
12868        
12869                
12870          <tr class="entry" id="dynamic_android.lens.focusRange">
12871            <td class="entry_name
12872             " rowspan="3">
12873              android.<wbr/>lens.<wbr/>focus<wbr/>Range
12874            </td>
12875            <td class="entry_type">
12876                <span class="entry_type_name">float</span>
12877                <span class="entry_type_container">x</span>
12878
12879                <span class="entry_type_array">
12880                  2
12881                </span>
12882              <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
12883
12884
12885              <span class="entry_type_hwlevel">[limited] </span>
12886
12887
12888                <div class="entry_type_notes">Range of scene distances that are in focus</div>
12889
12890
12891            </td> <!-- entry_type -->
12892
12893            <td class="entry_description">
12894              <p>The range of scene distances that are in
12895sharp focus (depth of field).<wbr/></p>
12896            </td>
12897
12898            <td class="entry_units">
12899              A pair of focus distances in diopters: (near,<wbr/>
12900          far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
12901            </td>
12902
12903            <td class="entry_range">
12904              <p>&gt;=0</p>
12905            </td>
12906
12907            <td class="entry_tags">
12908              <ul class="entry_tags">
12909                  <li><a href="#tag_BC">BC</a></li>
12910              </ul>
12911            </td>
12912
12913          </tr>
12914          <tr class="entries_header">
12915            <th class="th_details" colspan="5">Details</th>
12916          </tr>
12917          <tr class="entry_cont">
12918            <td class="entry_details" colspan="5">
12919              <p>If variable focus not supported,<wbr/> can still report
12920fixed depth of field range</p>
12921            </td>
12922          </tr>
12923
12924
12925          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12926           <!-- end of entry -->
12927        
12928                
12929          <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
12930            <td class="entry_name
12931             " rowspan="3">
12932              android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
12933            </td>
12934            <td class="entry_type">
12935                <span class="entry_type_name entry_type_name_enum">byte</span>
12936
12937              <span class="entry_type_visibility"> [public]</span>
12938
12939
12940              <span class="entry_type_hwlevel">[limited] </span>
12941
12942
12943
12944                <ul class="entry_type_enum">
12945                  <li>
12946                    <span class="entry_type_enum_name">OFF</span>
12947                    <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
12948                  </li>
12949                  <li>
12950                    <span class="entry_type_enum_name">ON</span>
12951                    <span class="entry_type_enum_optional">[optional]</span>
12952                    <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
12953                  </li>
12954                </ul>
12955
12956            </td> <!-- entry_type -->
12957
12958            <td class="entry_description">
12959              <p>Sets whether the camera device uses optical image stabilization (OIS)
12960when capturing images.<wbr/></p>
12961            </td>
12962
12963            <td class="entry_units">
12964            </td>
12965
12966            <td class="entry_range">
12967              <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
12968            </td>
12969
12970            <td class="entry_tags">
12971              <ul class="entry_tags">
12972                  <li><a href="#tag_V1">V1</a></li>
12973              </ul>
12974            </td>
12975
12976          </tr>
12977          <tr class="entries_header">
12978            <th class="th_details" colspan="5">Details</th>
12979          </tr>
12980          <tr class="entry_cont">
12981            <td class="entry_details" colspan="5">
12982              <p>OIS is used to compensate for motion blur due to small
12983movements of the camera during capture.<wbr/> Unlike digital image
12984stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
12985makes use of mechanical elements to stabilize the camera
12986sensor,<wbr/> and thus allows for longer exposure times before
12987camera shake becomes apparent.<wbr/></p>
12988<p>Switching between different optical stabilization modes may take several
12989frames to initialize,<wbr/> the camera device will report the current mode in
12990capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
12991optical stabilization modes in the first several capture results may still
12992be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
12993<p>If a camera device supports both OIS and digital image stabilization
12994(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
12995interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
12996<p>Not all devices will support OIS; see
12997<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
12998available controls.<wbr/></p>
12999            </td>
13000          </tr>
13001
13002
13003          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13004           <!-- end of entry -->
13005        
13006                
13007          <tr class="entry" id="dynamic_android.lens.state">
13008            <td class="entry_name
13009             " rowspan="3">
13010              android.<wbr/>lens.<wbr/>state
13011            </td>
13012            <td class="entry_type">
13013                <span class="entry_type_name entry_type_name_enum">byte</span>
13014
13015              <span class="entry_type_visibility"> [public]</span>
13016
13017
13018              <span class="entry_type_hwlevel">[limited] </span>
13019
13020
13021
13022                <ul class="entry_type_enum">
13023                  <li>
13024                    <span class="entry_type_enum_name">STATIONARY</span>
13025                    <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/>
13026<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>
13027                  </li>
13028                  <li>
13029                    <span class="entry_type_enum_name">MOVING</span>
13030                    <span class="entry_type_enum_notes"><p>One or several of the lens parameters
13031(<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/>
13032<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
13033currently changing.<wbr/></p></span>
13034                  </li>
13035                </ul>
13036
13037            </td> <!-- entry_type -->
13038
13039            <td class="entry_description">
13040              <p>Current lens status.<wbr/></p>
13041            </td>
13042
13043            <td class="entry_units">
13044            </td>
13045
13046            <td class="entry_range">
13047            </td>
13048
13049            <td class="entry_tags">
13050              <ul class="entry_tags">
13051                  <li><a href="#tag_V1">V1</a></li>
13052              </ul>
13053            </td>
13054
13055          </tr>
13056          <tr class="entries_header">
13057            <th class="th_details" colspan="5">Details</th>
13058          </tr>
13059          <tr class="entry_cont">
13060            <td class="entry_details" colspan="5">
13061              <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/>
13062<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/>
13063they may take several frames to reach the requested values.<wbr/> This state indicates
13064the current status of the lens parameters.<wbr/></p>
13065<p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
13066either because the parameters are all fixed,<wbr/> or because the lens has had enough
13067time to reach the most recently-requested values.<wbr/>
13068If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
13069<ul>
13070<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
13071<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
13072<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/>
13073which means the optical zoom is not supported.<wbr/></li>
13074<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>
13075<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>
13076</ul>
13077<p>Then this state will always be STATIONARY.<wbr/></p>
13078<p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
13079is changing.<wbr/></p>
13080            </td>
13081          </tr>
13082
13083
13084          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13085           <!-- end of entry -->
13086        
13087                
13088          <tr class="entry" id="dynamic_android.lens.poseRotation">
13089            <td class="entry_name
13090             " rowspan="3">
13091              android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
13092            </td>
13093            <td class="entry_type">
13094                <span class="entry_type_name">float</span>
13095                <span class="entry_type_container">x</span>
13096
13097                <span class="entry_type_array">
13098                  4
13099                </span>
13100              <span class="entry_type_visibility"> [public]</span>
13101
13102
13103
13104
13105
13106
13107            </td> <!-- entry_type -->
13108
13109            <td class="entry_description">
13110              <p>The orientation of the camera relative to the sensor
13111coordinate system.<wbr/></p>
13112            </td>
13113
13114            <td class="entry_units">
13115              
13116            Quaternion coefficients
13117          
13118            </td>
13119
13120            <td class="entry_range">
13121            </td>
13122
13123            <td class="entry_tags">
13124              <ul class="entry_tags">
13125                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13126              </ul>
13127            </td>
13128
13129          </tr>
13130          <tr class="entries_header">
13131            <th class="th_details" colspan="5">Details</th>
13132          </tr>
13133          <tr class="entry_cont">
13134            <td class="entry_details" colspan="5">
13135              <p>The four coefficients that describe the quaternion
13136rotation from the Android sensor coordinate system to a
13137camera-aligned coordinate system where the X-axis is
13138aligned with the long side of the image sensor,<wbr/> the Y-axis
13139is aligned with the short side of the image sensor,<wbr/> and
13140the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
13141<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
13142to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
13143amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
13144<pre><code> theta = 2 * acos(w)
13145a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
13146a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
13147a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
13148</code></pre>
13149<p>To create a 3x3 rotation matrix that applies the rotation
13150defined by this quaternion,<wbr/> the following matrix can be
13151used:</p>
13152<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
13153           2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
13154           2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
13155</code></pre>
13156<p>This matrix can then be used to apply the rotation to a
13157 column vector point with</p>
13158<p><code>p' = Rp</code></p>
13159<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
13160 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
13161            </td>
13162          </tr>
13163
13164
13165          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13166           <!-- end of entry -->
13167        
13168                
13169          <tr class="entry" id="dynamic_android.lens.poseTranslation">
13170            <td class="entry_name
13171             " rowspan="3">
13172              android.<wbr/>lens.<wbr/>pose<wbr/>Translation
13173            </td>
13174            <td class="entry_type">
13175                <span class="entry_type_name">float</span>
13176                <span class="entry_type_container">x</span>
13177
13178                <span class="entry_type_array">
13179                  3
13180                </span>
13181              <span class="entry_type_visibility"> [public]</span>
13182
13183
13184
13185
13186
13187
13188            </td> <!-- entry_type -->
13189
13190            <td class="entry_description">
13191              <p>Position of the camera optical center.<wbr/></p>
13192            </td>
13193
13194            <td class="entry_units">
13195              Meters
13196            </td>
13197
13198            <td class="entry_range">
13199            </td>
13200
13201            <td class="entry_tags">
13202              <ul class="entry_tags">
13203                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13204              </ul>
13205            </td>
13206
13207          </tr>
13208          <tr class="entries_header">
13209            <th class="th_details" colspan="5">Details</th>
13210          </tr>
13211          <tr class="entry_cont">
13212            <td class="entry_details" colspan="5">
13213              <p>The position of the camera device's lens optical center,<wbr/>
13214as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
13215optical center of the largest camera device facing in the
13216same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
13217axes</a>.<wbr/> Note that only the axis definitions are shared with
13218the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
13219<p>If this device is the largest or only camera device with a
13220given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
13221camera device with a lens optical center located 3 cm from
13222the main sensor along the +X axis (to the right from the
13223user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
13224<p>To transform a pixel coordinates between two cameras
13225facing the same direction,<wbr/> first the source camera
13226<a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/>  Then
13227the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
13228to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
13229of the source camera,<wbr/> the translation of the source camera
13230relative to the destination camera,<wbr/> the
13231<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
13232finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
13233of the destination camera.<wbr/> This obtains a
13234radial-distortion-free coordinate in the destination
13235camera pixel coordinates.<wbr/></p>
13236<p>To compare this against a real image from the destination
13237camera,<wbr/> the destination camera image then needs to be
13238corrected for radial distortion before comparison or
13239sampling.<wbr/></p>
13240            </td>
13241          </tr>
13242
13243
13244          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13245           <!-- end of entry -->
13246        
13247                
13248          <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
13249            <td class="entry_name
13250             " rowspan="3">
13251              android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
13252            </td>
13253            <td class="entry_type">
13254                <span class="entry_type_name">float</span>
13255                <span class="entry_type_container">x</span>
13256
13257                <span class="entry_type_array">
13258                  5
13259                </span>
13260              <span class="entry_type_visibility"> [public]</span>
13261
13262
13263
13264
13265
13266
13267            </td> <!-- entry_type -->
13268
13269            <td class="entry_description">
13270              <p>The parameters for this camera device's intrinsic
13271calibration.<wbr/></p>
13272            </td>
13273
13274            <td class="entry_units">
13275              
13276            Pixels in the
13277            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
13278            coordinate system.<wbr/>
13279          
13280            </td>
13281
13282            <td class="entry_range">
13283            </td>
13284
13285            <td class="entry_tags">
13286              <ul class="entry_tags">
13287                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13288              </ul>
13289            </td>
13290
13291          </tr>
13292          <tr class="entries_header">
13293            <th class="th_details" colspan="5">Details</th>
13294          </tr>
13295          <tr class="entry_cont">
13296            <td class="entry_details" colspan="5">
13297              <p>The five calibration parameters that describe the
13298transform from camera-centric 3D coordinates to sensor
13299pixel coordinates:</p>
13300<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
13301</code></pre>
13302<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
13303focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
13304axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
13305being aligned with the lens plane.<wbr/></p>
13306<p>These are typically used within a transformation matrix K:</p>
13307<pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
13308       0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
13309       0    0,<wbr/>   1 ]
13310</code></pre>
13311<p>which can then be combined with the camera pose rotation
13312<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
13313<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
13314complete transform from world coordinates to pixel
13315coordinates:</p>
13316<pre><code>P = [ K 0   * [ R t
13317     0 1 ]     0 1 ]
13318</code></pre>
13319<p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
13320and <code>p_<wbr/>s</code> being a point in the camera active pixel array
13321coordinate system,<wbr/> and with the mapping including the
13322homogeneous division by z:</p>
13323<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
13324p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
13325</code></pre>
13326<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
13327point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
13328(depth) in pixel coordinates.<wbr/></p>
13329<p>Note that the coordinate system for this transform is the
13330<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/>
13331where <code>(0,<wbr/>0)</code> is the top-left of the
13332preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
13333intrinsic calibration transforms have been applied to a
13334world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
13335transform needs to be applied,<wbr/> and the result adjusted to
13336be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
13337system (where <code>(0,<wbr/> 0)</code> is the top-left of the
13338activeArraySize rectangle),<wbr/> to determine the final pixel
13339coordinate of the world point for processed (non-RAW)
13340output buffers.<wbr/></p>
13341            </td>
13342          </tr>
13343
13344
13345          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13346           <!-- end of entry -->
13347        
13348                
13349          <tr class="entry" id="dynamic_android.lens.radialDistortion">
13350            <td class="entry_name
13351             " rowspan="3">
13352              android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
13353            </td>
13354            <td class="entry_type">
13355                <span class="entry_type_name">float</span>
13356                <span class="entry_type_container">x</span>
13357
13358                <span class="entry_type_array">
13359                  6
13360                </span>
13361              <span class="entry_type_visibility"> [public]</span>
13362
13363
13364
13365
13366
13367
13368            </td> <!-- entry_type -->
13369
13370            <td class="entry_description">
13371              <p>The correction coefficients to correct for this camera device's
13372radial and tangential lens distortion.<wbr/></p>
13373            </td>
13374
13375            <td class="entry_units">
13376              
13377            Unitless coefficients.<wbr/>
13378          
13379            </td>
13380
13381            <td class="entry_range">
13382            </td>
13383
13384            <td class="entry_tags">
13385              <ul class="entry_tags">
13386                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13387              </ul>
13388            </td>
13389
13390          </tr>
13391          <tr class="entries_header">
13392            <th class="th_details" colspan="5">Details</th>
13393          </tr>
13394          <tr class="entry_cont">
13395            <td class="entry_details" colspan="5">
13396              <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13397kappa_<wbr/>3]</code> and two tangential distortion coefficients
13398<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13399lens's geometric distortion with the mapping equations:</p>
13400<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 ) +
13401       kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13402 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13403       kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13404</code></pre>
13405<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13406input image that correspond to the pixel values in the
13407corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13408<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13409</code></pre>
13410<p>The pixel coordinates are defined in a normalized
13411coordinate system related to the
13412<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
13413Both <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
13414lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
13415of both x and y coordinates are normalized to be 1 at the
13416edge further from the optical center,<wbr/> so the range
13417for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
13418<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13419optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
13420is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
13421<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13422            </td>
13423          </tr>
13424
13425
13426          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13427           <!-- end of entry -->
13428        
13429        
13430
13431      <!-- end of kind -->
13432      </tbody>
13433
13434  <!-- end of section -->
13435  <tr><td colspan="6" id="section_noiseReduction" class="section">noiseReduction</td></tr>
13436
13437
13438      <tr><td colspan="6" class="kind">controls</td></tr>
13439
13440      <thead class="entries_header">
13441        <tr>
13442          <th class="th_name">Property Name</th>
13443          <th class="th_type">Type</th>
13444          <th class="th_description">Description</th>
13445          <th class="th_units">Units</th>
13446          <th class="th_range">Range</th>
13447          <th class="th_tags">Tags</th>
13448        </tr>
13449      </thead>
13450
13451      <tbody>
13452
13453        
13454
13455        
13456
13457        
13458
13459        
13460
13461                
13462          <tr class="entry" id="controls_android.noiseReduction.mode">
13463            <td class="entry_name
13464             " rowspan="5">
13465              android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
13466            </td>
13467            <td class="entry_type">
13468                <span class="entry_type_name entry_type_name_enum">byte</span>
13469
13470              <span class="entry_type_visibility"> [public]</span>
13471
13472
13473              <span class="entry_type_hwlevel">[full] </span>
13474
13475
13476
13477                <ul class="entry_type_enum">
13478                  <li>
13479                    <span class="entry_type_enum_name">OFF</span>
13480                    <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
13481                  </li>
13482                  <li>
13483                    <span class="entry_type_enum_name">FAST</span>
13484                    <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
13485output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
13486relative to sensor.<wbr/></p></span>
13487                  </li>
13488                  <li>
13489                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
13490                    <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
13491rate relative to sensor output.<wbr/></p></span>
13492                  </li>
13493                  <li>
13494                    <span class="entry_type_enum_name">MINIMAL</span>
13495                    <span class="entry_type_enum_optional">[optional]</span>
13496                    <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
13497sensor output.<wbr/> </p></span>
13498                  </li>
13499                  <li>
13500                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
13501                    <span class="entry_type_enum_optional">[optional]</span>
13502                    <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
13503based 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
13504reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no
13505noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction
13506for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality
13507is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/>
13508quality may improve from FAST).<wbr/></p>
13509<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
13510with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
13511high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
13512produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
13513high-resolution buffers must not have noise reduction applied to maximize efficiency of
13514preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
13515low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
13516applied for reasonable preview quality.<wbr/></p>
13517<p>This mode is guaranteed to be supported by devices that support either the
13518YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
13519(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
13520be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
13521                  </li>
13522                </ul>
13523
13524            </td> <!-- entry_type -->
13525
13526            <td class="entry_description">
13527              <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
13528            </td>
13529
13530            <td class="entry_units">
13531            </td>
13532
13533            <td class="entry_range">
13534              <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
13535            </td>
13536
13537            <td class="entry_tags">
13538              <ul class="entry_tags">
13539                  <li><a href="#tag_V1">V1</a></li>
13540                  <li><a href="#tag_REPROC">REPROC</a></li>
13541              </ul>
13542            </td>
13543
13544          </tr>
13545          <tr class="entries_header">
13546            <th class="th_details" colspan="5">Details</th>
13547          </tr>
13548          <tr class="entry_cont">
13549            <td class="entry_details" colspan="5">
13550              <p>The noise reduction algorithm attempts to improve image quality by removing
13551excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
13552<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
13553YUV domain.<wbr/></p>
13554<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
13555demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
13556This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
13557<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>
13558<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
13559will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
13560will use the highest-quality noise filtering algorithms,<wbr/>
13561even if it slows down capture rate.<wbr/> FAST means the camera device will not
13562slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
13563MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
13564Every output stream will have a similar amount of enhancement applied.<wbr/></p>
13565<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
13566buffer of high-resolution images during preview and reprocess image(s) from that buffer
13567into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
13568noise reduction to low-resolution streams (below maximum recording resolution) to maximize
13569preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
13570those will be reprocessed later if necessary.<wbr/></p>
13571<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
13572will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
13573may adjust the noise reduction parameters for best image quality based on the
13574<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
13575            </td>
13576          </tr>
13577
13578          <tr class="entries_header">
13579            <th class="th_details" colspan="5">HAL Implementation Details</th>
13580          </tr>
13581          <tr class="entry_cont">
13582            <td class="entry_details" colspan="5">
13583              <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
13584adjust the internal noise reduction parameters appropriately to get the best quality
13585images.<wbr/></p>
13586            </td>
13587          </tr>
13588
13589          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13590           <!-- end of entry -->
13591        
13592                
13593          <tr class="entry" id="controls_android.noiseReduction.strength">
13594            <td class="entry_name
13595             " rowspan="1">
13596              android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
13597            </td>
13598            <td class="entry_type">
13599                <span class="entry_type_name">byte</span>
13600
13601              <span class="entry_type_visibility"> [system]</span>
13602
13603
13604
13605
13606
13607
13608            </td> <!-- entry_type -->
13609
13610            <td class="entry_description">
13611              <p>Control the amount of noise reduction
13612applied to the images</p>
13613            </td>
13614
13615            <td class="entry_units">
13616              1-10; 10 is max noise reduction
13617            </td>
13618
13619            <td class="entry_range">
13620              <p>1 - 10</p>
13621            </td>
13622
13623            <td class="entry_tags">
13624              <ul class="entry_tags">
13625                  <li><a href="#tag_FUTURE">FUTURE</a></li>
13626              </ul>
13627            </td>
13628
13629          </tr>
13630
13631
13632          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13633           <!-- end of entry -->
13634        
13635        
13636
13637      <!-- end of kind -->
13638      </tbody>
13639      <tr><td colspan="6" class="kind">static</td></tr>
13640
13641      <thead class="entries_header">
13642        <tr>
13643          <th class="th_name">Property Name</th>
13644          <th class="th_type">Type</th>
13645          <th class="th_description">Description</th>
13646          <th class="th_units">Units</th>
13647          <th class="th_range">Range</th>
13648          <th class="th_tags">Tags</th>
13649        </tr>
13650      </thead>
13651
13652      <tbody>
13653
13654        
13655
13656        
13657
13658        
13659
13660        
13661
13662                
13663          <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
13664            <td class="entry_name
13665             " rowspan="5">
13666              android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
13667            </td>
13668            <td class="entry_type">
13669                <span class="entry_type_name">byte</span>
13670                <span class="entry_type_container">x</span>
13671
13672                <span class="entry_type_array">
13673                  n
13674                </span>
13675              <span class="entry_type_visibility"> [public as enumList]</span>
13676
13677
13678              <span class="entry_type_hwlevel">[limited] </span>
13679
13680
13681                <div class="entry_type_notes">list of enums</div>
13682
13683
13684            </td> <!-- entry_type -->
13685
13686            <td class="entry_description">
13687              <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
13688by this camera device.<wbr/></p>
13689            </td>
13690
13691            <td class="entry_units">
13692            </td>
13693
13694            <td class="entry_range">
13695              <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
13696            </td>
13697
13698            <td class="entry_tags">
13699              <ul class="entry_tags">
13700                  <li><a href="#tag_V1">V1</a></li>
13701                  <li><a href="#tag_REPROC">REPROC</a></li>
13702              </ul>
13703            </td>
13704
13705          </tr>
13706          <tr class="entries_header">
13707            <th class="th_details" colspan="5">Details</th>
13708          </tr>
13709          <tr class="entry_cont">
13710            <td class="entry_details" colspan="5">
13711              <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
13712<p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support
13713ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p>
13714<p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
13715            </td>
13716          </tr>
13717
13718          <tr class="entries_header">
13719            <th class="th_details" colspan="5">HAL Implementation Details</th>
13720          </tr>
13721          <tr class="entry_cont">
13722            <td class="entry_details" colspan="5">
13723              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
13724on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
13725That is,<wbr/> if the highest quality implementation on the camera device does not slow down
13726capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
13727            </td>
13728          </tr>
13729
13730          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13731           <!-- end of entry -->
13732        
13733        
13734
13735      <!-- end of kind -->
13736      </tbody>
13737      <tr><td colspan="6" class="kind">dynamic</td></tr>
13738
13739      <thead class="entries_header">
13740        <tr>
13741          <th class="th_name">Property Name</th>
13742          <th class="th_type">Type</th>
13743          <th class="th_description">Description</th>
13744          <th class="th_units">Units</th>
13745          <th class="th_range">Range</th>
13746          <th class="th_tags">Tags</th>
13747        </tr>
13748      </thead>
13749
13750      <tbody>
13751
13752        
13753
13754        
13755
13756        
13757
13758        
13759
13760                
13761          <tr class="entry" id="dynamic_android.noiseReduction.mode">
13762            <td class="entry_name
13763             " rowspan="5">
13764              android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
13765            </td>
13766            <td class="entry_type">
13767                <span class="entry_type_name entry_type_name_enum">byte</span>
13768
13769              <span class="entry_type_visibility"> [public]</span>
13770
13771
13772              <span class="entry_type_hwlevel">[full] </span>
13773
13774
13775
13776                <ul class="entry_type_enum">
13777                  <li>
13778                    <span class="entry_type_enum_name">OFF</span>
13779                    <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
13780                  </li>
13781                  <li>
13782                    <span class="entry_type_enum_name">FAST</span>
13783                    <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
13784output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
13785relative to sensor.<wbr/></p></span>
13786                  </li>
13787                  <li>
13788                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
13789                    <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
13790rate relative to sensor output.<wbr/></p></span>
13791                  </li>
13792                  <li>
13793                    <span class="entry_type_enum_name">MINIMAL</span>
13794                    <span class="entry_type_enum_optional">[optional]</span>
13795                    <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
13796sensor output.<wbr/> </p></span>
13797                  </li>
13798                  <li>
13799                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
13800                    <span class="entry_type_enum_optional">[optional]</span>
13801                    <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
13802based 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
13803reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no
13804noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction
13805for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality
13806is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/>
13807quality may improve from FAST).<wbr/></p>
13808<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
13809with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
13810high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
13811produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
13812high-resolution buffers must not have noise reduction applied to maximize efficiency of
13813preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
13814low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
13815applied for reasonable preview quality.<wbr/></p>
13816<p>This mode is guaranteed to be supported by devices that support either the
13817YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
13818(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
13819be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
13820                  </li>
13821                </ul>
13822
13823            </td> <!-- entry_type -->
13824
13825            <td class="entry_description">
13826              <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
13827            </td>
13828
13829            <td class="entry_units">
13830            </td>
13831
13832            <td class="entry_range">
13833              <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
13834            </td>
13835
13836            <td class="entry_tags">
13837              <ul class="entry_tags">
13838                  <li><a href="#tag_V1">V1</a></li>
13839                  <li><a href="#tag_REPROC">REPROC</a></li>
13840              </ul>
13841            </td>
13842
13843          </tr>
13844          <tr class="entries_header">
13845            <th class="th_details" colspan="5">Details</th>
13846          </tr>
13847          <tr class="entry_cont">
13848            <td class="entry_details" colspan="5">
13849              <p>The noise reduction algorithm attempts to improve image quality by removing
13850excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
13851<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
13852YUV domain.<wbr/></p>
13853<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
13854demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
13855This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
13856<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>
13857<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
13858will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
13859will use the highest-quality noise filtering algorithms,<wbr/>
13860even if it slows down capture rate.<wbr/> FAST means the camera device will not
13861slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
13862MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
13863Every output stream will have a similar amount of enhancement applied.<wbr/></p>
13864<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
13865buffer of high-resolution images during preview and reprocess image(s) from that buffer
13866into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
13867noise reduction to low-resolution streams (below maximum recording resolution) to maximize
13868preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
13869those will be reprocessed later if necessary.<wbr/></p>
13870<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
13871will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
13872may adjust the noise reduction parameters for best image quality based on the
13873<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
13874            </td>
13875          </tr>
13876
13877          <tr class="entries_header">
13878            <th class="th_details" colspan="5">HAL Implementation Details</th>
13879          </tr>
13880          <tr class="entry_cont">
13881            <td class="entry_details" colspan="5">
13882              <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
13883adjust the internal noise reduction parameters appropriately to get the best quality
13884images.<wbr/></p>
13885            </td>
13886          </tr>
13887
13888          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13889           <!-- end of entry -->
13890        
13891        
13892
13893      <!-- end of kind -->
13894      </tbody>
13895
13896  <!-- end of section -->
13897  <tr><td colspan="6" id="section_quirks" class="section">quirks</td></tr>
13898
13899
13900      <tr><td colspan="6" class="kind">static</td></tr>
13901
13902      <thead class="entries_header">
13903        <tr>
13904          <th class="th_name">Property Name</th>
13905          <th class="th_type">Type</th>
13906          <th class="th_description">Description</th>
13907          <th class="th_units">Units</th>
13908          <th class="th_range">Range</th>
13909          <th class="th_tags">Tags</th>
13910        </tr>
13911      </thead>
13912
13913      <tbody>
13914
13915        
13916
13917        
13918
13919        
13920
13921        
13922
13923                
13924          <tr class="entry" id="static_android.quirks.meteringCropRegion">
13925            <td class="entry_name
13926                entry_name_deprecated
13927             " rowspan="3">
13928              android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
13929            </td>
13930            <td class="entry_type">
13931                <span class="entry_type_name">byte</span>
13932
13933              <span class="entry_type_visibility"> [system]</span>
13934
13935
13936
13937              <span class="entry_type_deprecated">[deprecated] </span>
13938
13939
13940
13941            </td> <!-- entry_type -->
13942
13943            <td class="entry_description">
13944              <p>If set to 1,<wbr/> the camera service does not
13945scale 'normalized' coordinates with respect to the crop
13946region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
13947and output (face rectangles).<wbr/></p>
13948            </td>
13949
13950            <td class="entry_units">
13951            </td>
13952
13953            <td class="entry_range">
13954              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13955            </td>
13956
13957            <td class="entry_tags">
13958            </td>
13959
13960          </tr>
13961          <tr class="entries_header">
13962            <th class="th_details" colspan="5">Details</th>
13963          </tr>
13964          <tr class="entry_cont">
13965            <td class="entry_details" colspan="5">
13966              <p>Normalized coordinates refer to those in the
13967(-1000,<wbr/>1000) range mentioned in the
13968android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
13969<p>HAL implementations should instead always use and emit
13970sensor array-relative coordinates for all region data.<wbr/> Does
13971not need to be listed in static metadata.<wbr/> Support will be
13972removed in future versions of camera service.<wbr/></p>
13973            </td>
13974          </tr>
13975
13976
13977          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13978           <!-- end of entry -->
13979        
13980                
13981          <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
13982            <td class="entry_name
13983                entry_name_deprecated
13984             " rowspan="3">
13985              android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
13986            </td>
13987            <td class="entry_type">
13988                <span class="entry_type_name">byte</span>
13989
13990              <span class="entry_type_visibility"> [system]</span>
13991
13992
13993
13994              <span class="entry_type_deprecated">[deprecated] </span>
13995
13996
13997
13998            </td> <!-- entry_type -->
13999
14000            <td class="entry_description">
14001              <p>If set to 1,<wbr/> then the camera service always
14002switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
14003trigger.<wbr/></p>
14004            </td>
14005
14006            <td class="entry_units">
14007            </td>
14008
14009            <td class="entry_range">
14010              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14011            </td>
14012
14013            <td class="entry_tags">
14014            </td>
14015
14016          </tr>
14017          <tr class="entries_header">
14018            <th class="th_details" colspan="5">Details</th>
14019          </tr>
14020          <tr class="entry_cont">
14021            <td class="entry_details" colspan="5">
14022              <p>HAL implementations should implement AF trigger
14023modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
14024CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
14025not need to be listed in static metadata.<wbr/> Support will be
14026removed in future versions of camera service</p>
14027            </td>
14028          </tr>
14029
14030
14031          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14032           <!-- end of entry -->
14033        
14034                
14035          <tr class="entry" id="static_android.quirks.useZslFormat">
14036            <td class="entry_name
14037                entry_name_deprecated
14038             " rowspan="3">
14039              android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
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              <span class="entry_type_deprecated">[deprecated] </span>
14049
14050
14051
14052            </td> <!-- entry_type -->
14053
14054            <td class="entry_description">
14055              <p>If set to 1,<wbr/> the camera service uses
14056CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
14057HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
14058shutter lag stream</p>
14059            </td>
14060
14061            <td class="entry_units">
14062            </td>
14063
14064            <td class="entry_range">
14065              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14066            </td>
14067
14068            <td class="entry_tags">
14069            </td>
14070
14071          </tr>
14072          <tr class="entries_header">
14073            <th class="th_details" colspan="5">Details</th>
14074          </tr>
14075          <tr class="entry_cont">
14076            <td class="entry_details" colspan="5">
14077              <p>HAL implementations should use gralloc usage flags
14078to determine that a stream will be used for
14079zero-shutter-lag,<wbr/> instead of relying on an explicit
14080format setting.<wbr/> Does not need to be listed in static
14081metadata.<wbr/> Support will be removed in future versions of
14082camera service.<wbr/></p>
14083            </td>
14084          </tr>
14085
14086
14087          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14088           <!-- end of entry -->
14089        
14090                
14091          <tr class="entry" id="static_android.quirks.usePartialResult">
14092            <td class="entry_name
14093                entry_name_deprecated
14094             " rowspan="5">
14095              android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
14096            </td>
14097            <td class="entry_type">
14098                <span class="entry_type_name">byte</span>
14099
14100              <span class="entry_type_visibility"> [hidden]</span>
14101
14102
14103
14104              <span class="entry_type_deprecated">[deprecated] </span>
14105
14106
14107
14108            </td> <!-- entry_type -->
14109
14110            <td class="entry_description">
14111              <p>If set to 1,<wbr/> the HAL will always split result
14112metadata for a single capture into multiple buffers,<wbr/>
14113returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
14114            </td>
14115
14116            <td class="entry_units">
14117            </td>
14118
14119            <td class="entry_range">
14120              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14121            </td>
14122
14123            <td class="entry_tags">
14124            </td>
14125
14126          </tr>
14127          <tr class="entries_header">
14128            <th class="th_details" colspan="5">Details</th>
14129          </tr>
14130          <tr class="entry_cont">
14131            <td class="entry_details" colspan="5">
14132              <p>Does not need to be listed in static
14133metadata.<wbr/> Support for partial results will be reworked in
14134future versions of camera service.<wbr/> This quirk will stop
14135working at that point; DO NOT USE without careful
14136consideration of future support.<wbr/></p>
14137            </td>
14138          </tr>
14139
14140          <tr class="entries_header">
14141            <th class="th_details" colspan="5">HAL Implementation Details</th>
14142          </tr>
14143          <tr class="entry_cont">
14144            <td class="entry_details" colspan="5">
14145              <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
14146for information on how to implement partial results.<wbr/></p>
14147            </td>
14148          </tr>
14149
14150          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14151           <!-- end of entry -->
14152        
14153        
14154
14155      <!-- end of kind -->
14156      </tbody>
14157      <tr><td colspan="6" class="kind">dynamic</td></tr>
14158
14159      <thead class="entries_header">
14160        <tr>
14161          <th class="th_name">Property Name</th>
14162          <th class="th_type">Type</th>
14163          <th class="th_description">Description</th>
14164          <th class="th_units">Units</th>
14165          <th class="th_range">Range</th>
14166          <th class="th_tags">Tags</th>
14167        </tr>
14168      </thead>
14169
14170      <tbody>
14171
14172        
14173
14174        
14175
14176        
14177
14178        
14179
14180                
14181          <tr class="entry" id="dynamic_android.quirks.partialResult">
14182            <td class="entry_name
14183                entry_name_deprecated
14184             " rowspan="5">
14185              android.<wbr/>quirks.<wbr/>partial<wbr/>Result
14186            </td>
14187            <td class="entry_type">
14188                <span class="entry_type_name entry_type_name_enum">byte</span>
14189
14190              <span class="entry_type_visibility"> [hidden as boolean]</span>
14191
14192
14193
14194              <span class="entry_type_deprecated">[deprecated] </span>
14195
14196
14197                <ul class="entry_type_enum">
14198                  <li>
14199                    <span class="entry_type_enum_name">FINAL</span>
14200                    <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
14201for this capture.<wbr/></p></span>
14202                  </li>
14203                  <li>
14204                    <span class="entry_type_enum_name">PARTIAL</span>
14205                    <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
14206capture.<wbr/> More result buffers for this capture will be sent
14207by the camera device,<wbr/> the last of which will be marked
14208FINAL.<wbr/></p></span>
14209                  </li>
14210                </ul>
14211
14212            </td> <!-- entry_type -->
14213
14214            <td class="entry_description">
14215              <p>Whether a result given to the framework is the
14216final one for the capture,<wbr/> or only a partial that contains a
14217subset of the full set of dynamic metadata
14218values.<wbr/></p>
14219            </td>
14220
14221            <td class="entry_units">
14222            </td>
14223
14224            <td class="entry_range">
14225              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14226              <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
14227            </td>
14228
14229            <td class="entry_tags">
14230            </td>
14231
14232          </tr>
14233          <tr class="entries_header">
14234            <th class="th_details" colspan="5">Details</th>
14235          </tr>
14236          <tr class="entry_cont">
14237            <td class="entry_details" colspan="5">
14238              <p>The entries in the result metadata buffers for a
14239single capture may not overlap,<wbr/> except for this entry.<wbr/> The
14240FINAL buffers must retain FIFO ordering relative to the
14241requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
14242always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
14243before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
14244in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
14245capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
14246only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
14247            </td>
14248          </tr>
14249
14250          <tr class="entries_header">
14251            <th class="th_details" colspan="5">HAL Implementation Details</th>
14252          </tr>
14253          <tr class="entry_cont">
14254            <td class="entry_details" colspan="5">
14255              <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
14256for information on how to implement partial results.<wbr/></p>
14257            </td>
14258          </tr>
14259
14260          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14261           <!-- end of entry -->
14262        
14263        
14264
14265      <!-- end of kind -->
14266      </tbody>
14267
14268  <!-- end of section -->
14269  <tr><td colspan="6" id="section_request" class="section">request</td></tr>
14270
14271
14272      <tr><td colspan="6" class="kind">controls</td></tr>
14273
14274      <thead class="entries_header">
14275        <tr>
14276          <th class="th_name">Property Name</th>
14277          <th class="th_type">Type</th>
14278          <th class="th_description">Description</th>
14279          <th class="th_units">Units</th>
14280          <th class="th_range">Range</th>
14281          <th class="th_tags">Tags</th>
14282        </tr>
14283      </thead>
14284
14285      <tbody>
14286
14287        
14288
14289        
14290
14291        
14292
14293        
14294
14295                
14296          <tr class="entry" id="controls_android.request.frameCount">
14297            <td class="entry_name
14298                entry_name_deprecated
14299             " rowspan="1">
14300              android.<wbr/>request.<wbr/>frame<wbr/>Count
14301            </td>
14302            <td class="entry_type">
14303                <span class="entry_type_name">int32</span>
14304
14305              <span class="entry_type_visibility"> [system]</span>
14306
14307
14308
14309              <span class="entry_type_deprecated">[deprecated] </span>
14310
14311
14312
14313            </td> <!-- entry_type -->
14314
14315            <td class="entry_description">
14316              <p>A frame counter set by the framework.<wbr/> Must
14317be maintained unchanged in output frame.<wbr/> This value monotonically
14318increases with every new result (that is,<wbr/> each new result has a unique
14319frameCount value).<wbr/></p>
14320            </td>
14321
14322            <td class="entry_units">
14323              incrementing integer
14324            </td>
14325
14326            <td class="entry_range">
14327              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14328              <p>Any int.<wbr/></p>
14329            </td>
14330
14331            <td class="entry_tags">
14332            </td>
14333
14334          </tr>
14335
14336
14337          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14338           <!-- end of entry -->
14339        
14340                
14341          <tr class="entry" id="controls_android.request.id">
14342            <td class="entry_name
14343             " rowspan="1">
14344              android.<wbr/>request.<wbr/>id
14345            </td>
14346            <td class="entry_type">
14347                <span class="entry_type_name">int32</span>
14348
14349              <span class="entry_type_visibility"> [hidden]</span>
14350
14351
14352
14353
14354
14355
14356            </td> <!-- entry_type -->
14357
14358            <td class="entry_description">
14359              <p>An application-specified ID for the current
14360request.<wbr/> Must be maintained unchanged in output
14361frame</p>
14362            </td>
14363
14364            <td class="entry_units">
14365              arbitrary integer assigned by application
14366            </td>
14367
14368            <td class="entry_range">
14369              <p>Any int</p>
14370            </td>
14371
14372            <td class="entry_tags">
14373              <ul class="entry_tags">
14374                  <li><a href="#tag_V1">V1</a></li>
14375              </ul>
14376            </td>
14377
14378          </tr>
14379
14380
14381          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14382           <!-- end of entry -->
14383        
14384                
14385          <tr class="entry" id="controls_android.request.inputStreams">
14386            <td class="entry_name
14387                entry_name_deprecated
14388             " rowspan="3">
14389              android.<wbr/>request.<wbr/>input<wbr/>Streams
14390            </td>
14391            <td class="entry_type">
14392                <span class="entry_type_name">int32</span>
14393                <span class="entry_type_container">x</span>
14394
14395                <span class="entry_type_array">
14396                  n
14397                </span>
14398              <span class="entry_type_visibility"> [system]</span>
14399
14400
14401
14402              <span class="entry_type_deprecated">[deprecated] </span>
14403
14404
14405
14406            </td> <!-- entry_type -->
14407
14408            <td class="entry_description">
14409              <p>List which camera reprocess stream is used
14410for the source of reprocessing data.<wbr/></p>
14411            </td>
14412
14413            <td class="entry_units">
14414              List of camera reprocess stream IDs
14415            </td>
14416
14417            <td class="entry_range">
14418              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14419              <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
14420            </td>
14421
14422            <td class="entry_tags">
14423              <ul class="entry_tags">
14424                  <li><a href="#tag_HAL2">HAL2</a></li>
14425              </ul>
14426            </td>
14427
14428          </tr>
14429          <tr class="entries_header">
14430            <th class="th_details" colspan="5">Details</th>
14431          </tr>
14432          <tr class="entry_cont">
14433            <td class="entry_details" colspan="5">
14434              <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
14435REPROCESS.<wbr/> Ignored otherwise</p>
14436            </td>
14437          </tr>
14438
14439
14440          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14441           <!-- end of entry -->
14442        
14443                
14444          <tr class="entry" id="controls_android.request.metadataMode">
14445            <td class="entry_name
14446             " rowspan="1">
14447              android.<wbr/>request.<wbr/>metadata<wbr/>Mode
14448            </td>
14449            <td class="entry_type">
14450                <span class="entry_type_name entry_type_name_enum">byte</span>
14451
14452              <span class="entry_type_visibility"> [system]</span>
14453
14454
14455
14456
14457
14458                <ul class="entry_type_enum">
14459                  <li>
14460                    <span class="entry_type_enum_name">NONE</span>
14461                    <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
14462for application-bound buffer data.<wbr/> If no
14463application-bound streams exist,<wbr/> no frame should be
14464placed in the output frame queue.<wbr/> If such streams
14465exist,<wbr/> a frame should be placed on the output queue
14466with null metadata but with the necessary output buffer
14467information.<wbr/> Timestamp information should still be
14468included with any output stream buffers</p></span>
14469                  </li>
14470                  <li>
14471                    <span class="entry_type_enum_name">FULL</span>
14472                    <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
14473only be produced if they are separately
14474enabled</p></span>
14475                  </li>
14476                </ul>
14477
14478            </td> <!-- entry_type -->
14479
14480            <td class="entry_description">
14481              <p>How much metadata to produce on
14482output</p>
14483            </td>
14484
14485            <td class="entry_units">
14486            </td>
14487
14488            <td class="entry_range">
14489            </td>
14490
14491            <td class="entry_tags">
14492              <ul class="entry_tags">
14493                  <li><a href="#tag_FUTURE">FUTURE</a></li>
14494              </ul>
14495            </td>
14496
14497          </tr>
14498
14499
14500          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14501           <!-- end of entry -->
14502        
14503                
14504          <tr class="entry" id="controls_android.request.outputStreams">
14505            <td class="entry_name
14506                entry_name_deprecated
14507             " rowspan="3">
14508              android.<wbr/>request.<wbr/>output<wbr/>Streams
14509            </td>
14510            <td class="entry_type">
14511                <span class="entry_type_name">int32</span>
14512                <span class="entry_type_container">x</span>
14513
14514                <span class="entry_type_array">
14515                  n
14516                </span>
14517              <span class="entry_type_visibility"> [system]</span>
14518
14519
14520
14521              <span class="entry_type_deprecated">[deprecated] </span>
14522
14523
14524
14525            </td> <!-- entry_type -->
14526
14527            <td class="entry_description">
14528              <p>Lists which camera output streams image data
14529from this capture must be sent to</p>
14530            </td>
14531
14532            <td class="entry_units">
14533              List of camera stream IDs
14534            </td>
14535
14536            <td class="entry_range">
14537              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14538              <p>List must only include streams that have been
14539created</p>
14540            </td>
14541
14542            <td class="entry_tags">
14543              <ul class="entry_tags">
14544                  <li><a href="#tag_HAL2">HAL2</a></li>
14545              </ul>
14546            </td>
14547
14548          </tr>
14549          <tr class="entries_header">
14550            <th class="th_details" colspan="5">Details</th>
14551          </tr>
14552          <tr class="entry_cont">
14553            <td class="entry_details" colspan="5">
14554              <p>If no output streams are listed,<wbr/> then the image
14555data should simply be discarded.<wbr/> The image data must
14556still be captured for metadata and statistics production,<wbr/>
14557and the lens and flash must operate as requested.<wbr/></p>
14558            </td>
14559          </tr>
14560
14561
14562          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14563           <!-- end of entry -->
14564        
14565                
14566          <tr class="entry" id="controls_android.request.type">
14567            <td class="entry_name
14568                entry_name_deprecated
14569             " rowspan="1">
14570              android.<wbr/>request.<wbr/>type
14571            </td>
14572            <td class="entry_type">
14573                <span class="entry_type_name entry_type_name_enum">byte</span>
14574
14575              <span class="entry_type_visibility"> [system]</span>
14576
14577
14578
14579              <span class="entry_type_deprecated">[deprecated] </span>
14580
14581
14582                <ul class="entry_type_enum">
14583                  <li>
14584                    <span class="entry_type_enum_name">CAPTURE</span>
14585                    <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
14586and process it according to the
14587settings</p></span>
14588                  </li>
14589                  <li>
14590                    <span class="entry_type_enum_name">REPROCESS</span>
14591                    <span class="entry_type_enum_notes"><p>Process previously captured data; the
14592<a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
14593source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
14594needed for reprocessing with [RP]</p></span>
14595                  </li>
14596                </ul>
14597
14598            </td> <!-- entry_type -->
14599
14600            <td class="entry_description">
14601              <p>The type of the request; either CAPTURE or
14602REPROCESS.<wbr/> For HAL3,<wbr/> this tag is redundant.<wbr/></p>
14603            </td>
14604
14605            <td class="entry_units">
14606            </td>
14607
14608            <td class="entry_range">
14609              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14610            </td>
14611
14612            <td class="entry_tags">
14613              <ul class="entry_tags">
14614                  <li><a href="#tag_HAL2">HAL2</a></li>
14615              </ul>
14616            </td>
14617
14618          </tr>
14619
14620
14621          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14622           <!-- end of entry -->
14623        
14624        
14625
14626      <!-- end of kind -->
14627      </tbody>
14628      <tr><td colspan="6" class="kind">static</td></tr>
14629
14630      <thead class="entries_header">
14631        <tr>
14632          <th class="th_name">Property Name</th>
14633          <th class="th_type">Type</th>
14634          <th class="th_description">Description</th>
14635          <th class="th_units">Units</th>
14636          <th class="th_range">Range</th>
14637          <th class="th_tags">Tags</th>
14638        </tr>
14639      </thead>
14640
14641      <tbody>
14642
14643        
14644
14645        
14646
14647        
14648
14649        
14650
14651                
14652          <tr class="entry" id="static_android.request.maxNumOutputStreams">
14653            <td class="entry_name
14654             " rowspan="3">
14655              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
14656            </td>
14657            <td class="entry_type">
14658                <span class="entry_type_name">int32</span>
14659                <span class="entry_type_container">x</span>
14660
14661                <span class="entry_type_array">
14662                  3
14663                </span>
14664              <span class="entry_type_visibility"> [hidden]</span>
14665
14666
14667              <span class="entry_type_hwlevel">[legacy] </span>
14668
14669
14670
14671
14672            </td> <!-- entry_type -->
14673
14674            <td class="entry_description">
14675              <p>The maximum numbers of different types of output streams
14676that can be configured and used simultaneously by a camera device.<wbr/></p>
14677            </td>
14678
14679            <td class="entry_units">
14680            </td>
14681
14682            <td class="entry_range">
14683              <p>For processed (and stalling) format streams,<wbr/> &gt;= 1.<wbr/></p>
14684<p>For Raw format (either stalling or non-stalling) streams,<wbr/> &gt;= 0.<wbr/></p>
14685<p>For processed (but not stalling) format streams,<wbr/> &gt;= 3
14686for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
14687&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>
14688            </td>
14689
14690            <td class="entry_tags">
14691              <ul class="entry_tags">
14692                  <li><a href="#tag_BC">BC</a></li>
14693              </ul>
14694            </td>
14695
14696          </tr>
14697          <tr class="entries_header">
14698            <th class="th_details" colspan="5">Details</th>
14699          </tr>
14700          <tr class="entry_cont">
14701            <td class="entry_details" colspan="5">
14702              <p>This is a 3 element tuple that contains the max number of output simultaneous
14703streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
14704formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
14705stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
14706number 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>
14707<p>This lists the upper bound of the number of output streams supported by
14708the camera device.<wbr/> Using more streams simultaneously may require more hardware and
14709CPU resources that will consume more power.<wbr/> The image format for an output stream can
14710be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
14711The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
14712into the 3 stream types as below:</p>
14713<ul>
14714<li>Processed (but stalling): any non-RAW format with a stallDurations &gt; 0.<wbr/>
14715  Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
14716<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>
14717<li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/>
14718  Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
14719  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a>,<wbr/> or
14720  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a>.<wbr/></li>
14721</ul>
14722            </td>
14723          </tr>
14724
14725
14726          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14727           <!-- end of entry -->
14728        
14729                
14730          <tr class="entry" id="static_android.request.maxNumOutputRaw">
14731            <td class="entry_name
14732             " rowspan="3">
14733              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
14734            </td>
14735            <td class="entry_type">
14736                <span class="entry_type_name">int32</span>
14737
14738              <span class="entry_type_visibility"> [public]</span>
14739
14740              <span class="entry_type_synthetic">[synthetic] </span>
14741
14742              <span class="entry_type_hwlevel">[legacy] </span>
14743
14744
14745
14746
14747            </td> <!-- entry_type -->
14748
14749            <td class="entry_description">
14750              <p>The maximum numbers of different types of output streams
14751that can be configured and used simultaneously by a camera device
14752for any <code>RAW</code> formats.<wbr/></p>
14753            </td>
14754
14755            <td class="entry_units">
14756            </td>
14757
14758            <td class="entry_range">
14759              <p>&gt;= 0</p>
14760            </td>
14761
14762            <td class="entry_tags">
14763            </td>
14764
14765          </tr>
14766          <tr class="entries_header">
14767            <th class="th_details" colspan="5">Details</th>
14768          </tr>
14769          <tr class="entry_cont">
14770            <td class="entry_details" colspan="5">
14771              <p>This value contains the max number of output simultaneous
14772streams from the raw sensor.<wbr/></p>
14773<p>This lists the upper bound of the number of output streams supported by
14774the camera device.<wbr/> Using more streams simultaneously may require more hardware and
14775CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
14776be 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>
14777<p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
14778<ul>
14779<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
14780<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
14781<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
14782</ul>
14783<p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
14784never support raw streams.<wbr/></p>
14785            </td>
14786          </tr>
14787
14788
14789          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14790           <!-- end of entry -->
14791        
14792                
14793          <tr class="entry" id="static_android.request.maxNumOutputProc">
14794            <td class="entry_name
14795             " rowspan="3">
14796              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
14797            </td>
14798            <td class="entry_type">
14799                <span class="entry_type_name">int32</span>
14800
14801              <span class="entry_type_visibility"> [public]</span>
14802
14803              <span class="entry_type_synthetic">[synthetic] </span>
14804
14805              <span class="entry_type_hwlevel">[legacy] </span>
14806
14807
14808
14809
14810            </td> <!-- entry_type -->
14811
14812            <td class="entry_description">
14813              <p>The maximum numbers of different types of output streams
14814that can be configured and used simultaneously by a camera device
14815for any processed (but not-stalling) formats.<wbr/></p>
14816            </td>
14817
14818            <td class="entry_units">
14819            </td>
14820
14821            <td class="entry_range">
14822              <p>&gt;= 3
14823for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
14824&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>
14825            </td>
14826
14827            <td class="entry_tags">
14828            </td>
14829
14830          </tr>
14831          <tr class="entries_header">
14832            <th class="th_details" colspan="5">Details</th>
14833          </tr>
14834          <tr class="entry_cont">
14835            <td class="entry_details" colspan="5">
14836              <p>This value contains the max number of output simultaneous
14837streams for any processed (but not-stalling) formats.<wbr/></p>
14838<p>This lists the upper bound of the number of output streams supported by
14839the camera device.<wbr/> Using more streams simultaneously may require more hardware and
14840CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
14841be 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>
14842<p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
14843Typically:</p>
14844<ul>
14845<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li>
14846<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li>
14847<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li>
14848<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>
14849</ul>
14850<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
14851processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
14852<p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
14853            </td>
14854          </tr>
14855
14856
14857          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14858           <!-- end of entry -->
14859        
14860                
14861          <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
14862            <td class="entry_name
14863             " rowspan="3">
14864              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
14865            </td>
14866            <td class="entry_type">
14867                <span class="entry_type_name">int32</span>
14868
14869              <span class="entry_type_visibility"> [public]</span>
14870
14871              <span class="entry_type_synthetic">[synthetic] </span>
14872
14873              <span class="entry_type_hwlevel">[legacy] </span>
14874
14875
14876
14877
14878            </td> <!-- entry_type -->
14879
14880            <td class="entry_description">
14881              <p>The maximum numbers of different types of output streams
14882that can be configured and used simultaneously by a camera device
14883for any processed (and stalling) formats.<wbr/></p>
14884            </td>
14885
14886            <td class="entry_units">
14887            </td>
14888
14889            <td class="entry_range">
14890              <p>&gt;= 1</p>
14891            </td>
14892
14893            <td class="entry_tags">
14894            </td>
14895
14896          </tr>
14897          <tr class="entries_header">
14898            <th class="th_details" colspan="5">Details</th>
14899          </tr>
14900          <tr class="entry_cont">
14901            <td class="entry_details" colspan="5">
14902              <p>This value contains the max number of output simultaneous
14903streams for any processed (but not-stalling) formats.<wbr/></p>
14904<p>This lists the upper bound of the number of output streams supported by
14905the camera device.<wbr/> Using more streams simultaneously may require more hardware and
14906CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
14907be 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>
14908<p>A processed and stalling format is defined as any non-RAW format with a stallDurations
14909&gt; 0.<wbr/>  Typically only the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a> is a
14910stalling format.<wbr/></p>
14911<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
14912processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
14913<p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
14914            </td>
14915          </tr>
14916
14917
14918          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14919           <!-- end of entry -->
14920        
14921                
14922          <tr class="entry" id="static_android.request.maxNumReprocessStreams">
14923            <td class="entry_name
14924                entry_name_deprecated
14925             " rowspan="3">
14926              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
14927            </td>
14928            <td class="entry_type">
14929                <span class="entry_type_name">int32</span>
14930                <span class="entry_type_container">x</span>
14931
14932                <span class="entry_type_array">
14933                  1
14934                </span>
14935              <span class="entry_type_visibility"> [system]</span>
14936
14937
14938
14939              <span class="entry_type_deprecated">[deprecated] </span>
14940
14941
14942
14943            </td> <!-- entry_type -->
14944
14945            <td class="entry_description">
14946              <p>How many reprocessing streams of any type
14947can be allocated at the same time.<wbr/></p>
14948            </td>
14949
14950            <td class="entry_units">
14951            </td>
14952
14953            <td class="entry_range">
14954              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14955              <p>&gt;= 0</p>
14956            </td>
14957
14958            <td class="entry_tags">
14959              <ul class="entry_tags">
14960                  <li><a href="#tag_HAL2">HAL2</a></li>
14961              </ul>
14962            </td>
14963
14964          </tr>
14965          <tr class="entries_header">
14966            <th class="th_details" colspan="5">Details</th>
14967          </tr>
14968          <tr class="entry_cont">
14969            <td class="entry_details" colspan="5">
14970              <p>Only used by HAL2.<wbr/>x.<wbr/></p>
14971<p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
14972            </td>
14973          </tr>
14974
14975
14976          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14977           <!-- end of entry -->
14978        
14979                
14980          <tr class="entry" id="static_android.request.maxNumInputStreams">
14981            <td class="entry_name
14982             " rowspan="5">
14983              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
14984            </td>
14985            <td class="entry_type">
14986                <span class="entry_type_name">int32</span>
14987
14988              <span class="entry_type_visibility"> [public]</span>
14989
14990
14991              <span class="entry_type_hwlevel">[full] </span>
14992
14993
14994
14995
14996            </td> <!-- entry_type -->
14997
14998            <td class="entry_description">
14999              <p>The maximum numbers of any type of input streams
15000that can be configured and used simultaneously by a camera device.<wbr/></p>
15001            </td>
15002
15003            <td class="entry_units">
15004            </td>
15005
15006            <td class="entry_range">
15007              <p>0 or 1.<wbr/></p>
15008            </td>
15009
15010            <td class="entry_tags">
15011              <ul class="entry_tags">
15012                  <li><a href="#tag_REPROC">REPROC</a></li>
15013              </ul>
15014            </td>
15015
15016          </tr>
15017          <tr class="entries_header">
15018            <th class="th_details" colspan="5">Details</th>
15019          </tr>
15020          <tr class="entry_cont">
15021            <td class="entry_details" colspan="5">
15022              <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
15023<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
15024input stream,<wbr/> there must be at least one output stream configured to to receive the
15025reprocessed images.<wbr/></p>
15026<p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
15027only the input buffer will be used to produce these output stream buffers,<wbr/> and a
15028new sensor image will not be captured.<wbr/></p>
15029<p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
15030stream image format will be PRIVATE,<wbr/> the associated output stream image format
15031should be JPEG.<wbr/></p>
15032            </td>
15033          </tr>
15034
15035          <tr class="entries_header">
15036            <th class="th_details" colspan="5">HAL Implementation Details</th>
15037          </tr>
15038          <tr class="entry_cont">
15039            <td class="entry_details" colspan="5">
15040              <p>For the reprocessing flow and controls,<wbr/> see
15041hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
15042            </td>
15043          </tr>
15044
15045          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15046           <!-- end of entry -->
15047        
15048                
15049          <tr class="entry" id="static_android.request.pipelineMaxDepth">
15050            <td class="entry_name
15051             " rowspan="5">
15052              android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
15053            </td>
15054            <td class="entry_type">
15055                <span class="entry_type_name">byte</span>
15056
15057              <span class="entry_type_visibility"> [public]</span>
15058
15059
15060              <span class="entry_type_hwlevel">[legacy] </span>
15061
15062
15063
15064
15065            </td> <!-- entry_type -->
15066
15067            <td class="entry_description">
15068              <p>Specifies the number of maximum pipeline stages a frame
15069has to go through from when it's exposed to when it's available
15070to the framework.<wbr/></p>
15071            </td>
15072
15073            <td class="entry_units">
15074            </td>
15075
15076            <td class="entry_range">
15077            </td>
15078
15079            <td class="entry_tags">
15080            </td>
15081
15082          </tr>
15083          <tr class="entries_header">
15084            <th class="th_details" colspan="5">Details</th>
15085          </tr>
15086          <tr class="entry_cont">
15087            <td class="entry_details" colspan="5">
15088              <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
15089one stage to readout) from the sensor.<wbr/> The ISP then usually adds
15090its own stages to do custom HW processing.<wbr/> Further stages may be
15091added by SW processing.<wbr/></p>
15092<p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
15093processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
15094depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
15095the max pipeline depth.<wbr/></p>
15096<p>A pipeline depth of X stages is equivalent to a pipeline latency of
15097X frame intervals.<wbr/></p>
15098<p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/>
15099the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p>
15100            </td>
15101          </tr>
15102
15103          <tr class="entries_header">
15104            <th class="th_details" colspan="5">HAL Implementation Details</th>
15105          </tr>
15106          <tr class="entry_cont">
15107            <td class="entry_details" colspan="5">
15108              <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the
15109max batch sizes may be larger than 1.<wbr/></p>
15110            </td>
15111          </tr>
15112
15113          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15114           <!-- end of entry -->
15115        
15116                
15117          <tr class="entry" id="static_android.request.partialResultCount">
15118            <td class="entry_name
15119             " rowspan="3">
15120              android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
15121            </td>
15122            <td class="entry_type">
15123                <span class="entry_type_name">int32</span>
15124
15125              <span class="entry_type_visibility"> [public]</span>
15126
15127
15128
15129
15130
15131
15132            </td> <!-- entry_type -->
15133
15134            <td class="entry_description">
15135              <p>Defines how many sub-components
15136a result will be composed of.<wbr/></p>
15137            </td>
15138
15139            <td class="entry_units">
15140            </td>
15141
15142            <td class="entry_range">
15143              <p>&gt;= 1</p>
15144            </td>
15145
15146            <td class="entry_tags">
15147            </td>
15148
15149          </tr>
15150          <tr class="entries_header">
15151            <th class="th_details" colspan="5">Details</th>
15152          </tr>
15153          <tr class="entry_cont">
15154            <td class="entry_details" colspan="5">
15155              <p>In order to combat the pipeline latency,<wbr/> partial results
15156may be delivered to the application layer from the camera device as
15157soon as they are available.<wbr/></p>
15158<p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
15159results are not supported,<wbr/> and only the final TotalCaptureResult will
15160be produced by the camera device.<wbr/></p>
15161<p>A typical use case for this might be: after requesting an
15162auto-focus (AF) lock the new AF state might be available 50%
15163of the way through the pipeline.<wbr/>  The camera device could
15164then immediately dispatch this state via a partial result to
15165the application,<wbr/> and the rest of the metadata via later
15166partial results.<wbr/></p>
15167            </td>
15168          </tr>
15169
15170
15171          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15172           <!-- end of entry -->
15173        
15174                
15175          <tr class="entry" id="static_android.request.availableCapabilities">
15176            <td class="entry_name
15177             " rowspan="5">
15178              android.<wbr/>request.<wbr/>available<wbr/>Capabilities
15179            </td>
15180            <td class="entry_type">
15181                <span class="entry_type_name entry_type_name_enum">byte</span>
15182                <span class="entry_type_container">x</span>
15183
15184                <span class="entry_type_array">
15185                  n
15186                </span>
15187              <span class="entry_type_visibility"> [public]</span>
15188
15189
15190              <span class="entry_type_hwlevel">[legacy] </span>
15191
15192
15193
15194                <ul class="entry_type_enum">
15195                  <li>
15196                    <span class="entry_type_enum_name">BACKWARD_COMPATIBLE</span>
15197                    <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
15198device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
15199supports.<wbr/></p>
15200<p>This capability is listed by all normal devices,<wbr/> and
15201indicates that the camera device has a feature set
15202that's comparable to the baseline requirements for the
15203older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
15204<p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this
15205capability,<wbr/> indicating that they support only depth measurement,<wbr/>
15206not standard color output.<wbr/></p></span>
15207                  </li>
15208                  <li>
15209                    <span class="entry_type_enum_name">MANUAL_SENSOR</span>
15210                    <span class="entry_type_enum_optional">[optional]</span>
15211                    <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
15212as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
15213The camera device supports basic manual control of the sensor image
15214acquisition related stages.<wbr/> This means the following controls are
15215guaranteed to be supported:</p>
15216<ul>
15217<li>Manual frame duration control<ul>
15218<li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
15219<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
15220</ul>
15221</li>
15222<li>Manual exposure control<ul>
15223<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
15224<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
15225</ul>
15226</li>
15227<li>Manual sensitivity control<ul>
15228<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
15229<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
15230</ul>
15231</li>
15232<li>Manual lens control (if the lens is adjustable)<ul>
15233<li>android.<wbr/>lens.<wbr/>*</li>
15234</ul>
15235</li>
15236<li>Manual flash control (if a flash unit is present)<ul>
15237<li>android.<wbr/>flash.<wbr/>*</li>
15238</ul>
15239</li>
15240<li>Manual black level locking<ul>
15241<li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
15242</ul>
15243</li>
15244<li>Auto exposure lock<ul>
15245<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
15246</ul>
15247</li>
15248</ul>
15249<p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
15250device will accurately report the values applied by 3A in the
15251result.<wbr/></p>
15252<p>A given camera device may also support additional manual sensor controls,<wbr/>
15253but this capability only covers the above list of controls.<wbr/></p>
15254<p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
15255additionally return a min frame duration that is greater than
15256zero for each supported size-format combination.<wbr/></p></span>
15257                  </li>
15258                  <li>
15259                    <span class="entry_type_enum_name">MANUAL_POST_PROCESSING</span>
15260                    <span class="entry_type_enum_optional">[optional]</span>
15261                    <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
15262The camera device supports basic manual control of the image post-processing
15263stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
15264<ul>
15265<li>
15266<p>Manual tonemap control</p>
15267<ul>
15268<li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
15269<li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
15270<li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
15271<li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
15272<li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
15273</ul>
15274</li>
15275<li>
15276<p>Manual white balance control</p>
15277<ul>
15278<li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
15279<li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
15280</ul>
15281</li>
15282<li>Manual lens shading map control<ul>
15283<li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
15284<li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
15285<li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
15286<li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
15287</ul>
15288</li>
15289<li>Manual aberration correction control (if aberration correction is supported)<ul>
15290<li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
15291<li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
15292</ul>
15293</li>
15294<li>Auto white balance lock<ul>
15295<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
15296</ul>
15297</li>
15298</ul>
15299<p>If auto white balance is enabled,<wbr/> then the camera device
15300will accurately report the values applied by AWB in the result.<wbr/></p>
15301<p>A given camera device may also support additional post-processing
15302controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span>
15303                  </li>
15304                  <li>
15305                    <span class="entry_type_enum_name">RAW</span>
15306                    <span class="entry_type_enum_optional">[optional]</span>
15307                    <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
15308metadata for interpreting them.<wbr/></p>
15309<p>Devices supporting the RAW capability allow both for
15310saving DNG files,<wbr/> and for direct application processing of
15311raw sensor images.<wbr/></p>
15312<ul>
15313<li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
15314<li>The maximum available resolution for RAW_<wbr/>SENSOR streams
15315  will match either the value in
15316  <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
15317  <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>
15318<li>All DNG-related optional metadata entries are provided
15319  by the camera device.<wbr/></li>
15320</ul></span>
15321                  </li>
15322                  <li>
15323                    <span class="entry_type_enum_name">PRIVATE_REPROCESSING</span>
15324                    <span class="entry_type_enum_optional">[optional]</span>
15325                    <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
15326<ul>
15327<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>
15328<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/>
15329  that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of
15330  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>
15331<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
15332  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>
15333<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>
15334<li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop
15335  relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
15336<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both
15337  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and
15338  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
15339<li>The maximum available resolution for PRIVATE streams
15340  (both input/<wbr/>output) will match the maximum available
15341  resolution of JPEG streams.<wbr/></li>
15342<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
15343<li>Only below controls are effective for reprocessing requests and
15344  will be present in capture results,<wbr/> other controls in reprocess
15345  requests will be ignored by the camera device.<wbr/><ul>
15346<li>android.<wbr/>jpeg.<wbr/>*</li>
15347<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
15348<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
15349</ul>
15350</li>
15351<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
15352  <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>
15353</ul></span>
15354                  </li>
15355                  <li>
15356                    <span class="entry_type_enum_name">READ_SENSOR_SETTINGS</span>
15357                    <span class="entry_type_enum_optional">[optional]</span>
15358                    <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
15359the sensor controls while the built-in 3A algorithm is running.<wbr/>  This allows
15360reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
15361<p>The values reported for the following controls are guaranteed to be available
15362in the CaptureResult,<wbr/> including when 3A is enabled:</p>
15363<ul>
15364<li>Exposure control<ul>
15365<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
15366</ul>
15367</li>
15368<li>Sensitivity control<ul>
15369<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
15370</ul>
15371</li>
15372<li>Lens controls (if the lens is adjustable)<ul>
15373<li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
15374<li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
15375</ul>
15376</li>
15377</ul>
15378<p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
15379always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
15380                  </li>
15381                  <li>
15382                    <span class="entry_type_enum_name">BURST_CAPTURE</span>
15383                    <span class="entry_type_enum_optional">[optional]</span>
15384                    <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at &gt;= 20 frames per
15385second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set
15386to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at &gt;= 10 frames
15387per second.<wbr/>  Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum
15388resolution of the device,<wbr/> whichever is smaller.<wbr/></p>
15389<p>More specifically,<wbr/> this means that a size matching the camera device's active array
15390size 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/>
15391with a minimum frame duration for that format and size of either &lt;= 1/<wbr/>20 s,<wbr/> or
15392&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
15393lists at least one FPS range where the minimum FPS is &gt;= 1 /<wbr/> minimumFrameDuration
15394for 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/>
15395then 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
15396least one resolution &gt;= 8 megapixels,<wbr/> with a minimum frame duration of &lt;= 1/<wbr/>20
15397s.<wbr/></p>
15398<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
15399as the maximum-size YUV_<wbr/>420_<wbr/>888 resolution is.<wbr/></p>
15400<p>If the device supports the PRIVATE_<wbr/>REPROCESSING capability,<wbr/> then the same guarantees
15401as 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>
15402<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
15403and 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>
15404are also guaranteed to be <code>true</code> so burst capture with these two locks ON yields
15405consistent image output.<wbr/></p></span>
15406                  </li>
15407                  <li>
15408                    <span class="entry_type_enum_name">YUV_REPROCESSING</span>
15409                    <span class="entry_type_enum_optional">[optional]</span>
15410                    <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
15411PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
15412following:</p>
15413<ul>
15414<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>
15415<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/>
15416  YUV_<wbr/>420_<wbr/>888 is included in the lists of formats returned by
15417  <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a> and
15418  <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputFormats">StreamConfigurationMap#getOutputFormats</a>.<wbr/></li>
15419<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
15420  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>
15421<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>
15422<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
15423  relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
15424<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
15425  <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>
15426<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
15427  maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
15428<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
15429<li>Only the below controls are effective for reprocessing requests and will be present
15430  in capture results.<wbr/> The reprocess requests are from the original capture results that
15431  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>
15432  output buffers.<wbr/>  All other controls in the reprocess requests will be ignored by the
15433  camera device.<wbr/><ul>
15434<li>android.<wbr/>jpeg.<wbr/>*</li>
15435<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
15436<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
15437<li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
15438</ul>
15439</li>
15440<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
15441  <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>
15442</ul></span>
15443                  </li>
15444                  <li>
15445                    <span class="entry_type_enum_name">DEPTH_OUTPUT</span>
15446                    <span class="entry_type_enum_optional">[optional]</span>
15447                    <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
15448<p>This capability requires the camera device to support the following:</p>
15449<ul>
15450<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as an output format.<wbr/></li>
15451<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
15452  output format.<wbr/></li>
15453<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/>
15454  will list the following calibration entries in both
15455  <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> and
15456  <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
15457<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
15458<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
15459<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
15460<li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li>
15461</ul>
15462</li>
15463<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>
15464<li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
15465  normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16
15466  format.<wbr/></li>
15467</ul>
15468<p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
15469so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
15470should be accounted for (see
15471<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
15472On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
15473using a repeating burst is recommended,<wbr/> where a depth-output target is only included
15474once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
15475rate,<wbr/> including depth stall time.<wbr/></p></span>
15476                  </li>
15477                  <li>
15478                    <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO</span>
15479                    <span class="entry_type_enum_optional">[optional]</span>
15480                    <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate &gt;=120fps)
15481use case.<wbr/> The camera device will support high speed capture session created by
15482<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>,<wbr/> which
15483only accepts high speed request lists created by
15484<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/></p>
15485<p>A camera device can still support high speed video streaming by advertising the high speed
15486FPS 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
15487capture request per frame control and synchronization requirements will apply to
15488the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability describes
15489the capability of a specialized operating mode with many limitations (see below),<wbr/> which
15490is only targeted at high speed video recording.<wbr/></p>
15491<p>The supported high speed video sizes and fps ranges are specified in
15492<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/>
15493To get desired output frame rates,<wbr/> the application is only allowed to select video size
15494and FPS range combinations provided by
15495<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/>
15496The 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>
15497<p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
15498ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
15499controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
15500and post-processing parameters is possible.<wbr/> All other controls operate the
15501same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
15502android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
15503<ul>
15504<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
15505<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
15506<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
15507<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
15508<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
15509<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
15510<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
15511<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
15512<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
15513<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
15514</ul>
15515<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
15516<ul>
15517<li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not
15518work since aeMode is ON)</li>
15519<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
15520<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
15521<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li>
15522</ul>
15523<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
15524be lower than what camera can output,<wbr/> depending on the destination Surfaces for
15525the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
15526the application need check if the video encoder is capable of supporting the
15527high frame rate for a given video size,<wbr/> or it will end up with lower recording
15528frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame
15529rate will be bounded by the screen refresh rate.<wbr/></p>
15530<p>The camera device will only support up to 2 high speed simultaneous output surfaces
15531(preview and recording surfaces)
15532in this mode.<wbr/> Above controls will be effective only if all of below conditions are true:</p>
15533<ul>
15534<li>The application creates a camera capture session with no more than 2 surfaces via
15535<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The
15536targeted surfaces must be preview surface (either from
15537<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
15538recording surface(either from <a href="https://developer.android.com/reference/android/media/MediaRecorder.html#getSurface">MediaRecorder#getSurface</a> or
15539<a href="https://developer.android.com/reference/android/media/MediaCodec.html#createInputSurface">MediaCodec#createInputSurface</a>).<wbr/></li>
15540<li>The stream sizes are selected from the sizes reported by
15541<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li>
15542<li>The FPS ranges are selected from
15543<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/></li>
15544</ul>
15545<p>When above conditions are NOT satistied,<wbr/>
15546<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
15547will fail.<wbr/></p>
15548<p>Switching to a FPS range that has different maximum FPS may trigger some camera device
15549reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
15550the application avoids unnecessary maximum target FPS changes as much as possible
15551during high speed streaming.<wbr/></p></span>
15552                  </li>
15553                </ul>
15554
15555            </td> <!-- entry_type -->
15556
15557            <td class="entry_description">
15558              <p>List of capabilities that this camera device
15559advertises as fully supporting.<wbr/></p>
15560            </td>
15561
15562            <td class="entry_units">
15563            </td>
15564
15565            <td class="entry_range">
15566            </td>
15567
15568            <td class="entry_tags">
15569            </td>
15570
15571          </tr>
15572          <tr class="entries_header">
15573            <th class="th_details" colspan="5">Details</th>
15574          </tr>
15575          <tr class="entry_cont">
15576            <td class="entry_details" colspan="5">
15577              <p>A capability is a contract that the camera device makes in order
15578to be able to satisfy one or more use cases.<wbr/></p>
15579<p>Listing a capability guarantees that the whole set of features
15580required to support a common use will all be available.<wbr/></p>
15581<p>Using a subset of the functionality provided by an unsupported
15582capability may be possible on a specific camera device implementation;
15583to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
15584<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
15585<a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
15586<p>The following capabilities are guaranteed to be available on
15587<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
15588<ul>
15589<li>MANUAL_<wbr/>SENSOR</li>
15590<li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
15591</ul>
15592<p>Other capabilities may be available on either FULL or LIMITED
15593devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
15594            </td>
15595          </tr>
15596
15597          <tr class="entries_header">
15598            <th class="th_details" colspan="5">HAL Implementation Details</th>
15599          </tr>
15600          <tr class="entry_cont">
15601            <td class="entry_details" colspan="5">
15602              <p>Additional constraint details per-capability will be available
15603in the Compatibility Test Suite.<wbr/></p>
15604<p>Minimum baseline requirements required for the
15605BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
15606Instead refer to "BC" tags and the camera CTS tests in the
15607android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
15608<p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
15609<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
15610request and the result in order to be considered to be
15611capability-compliant.<wbr/></p>
15612<p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
15613then exposure time must be configurable via the request <em>and</em>
15614the actual exposure applied must be available via
15615the result.<wbr/></p>
15616<p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
15617<a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
15618<p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
15619hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
15620<p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
15621CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
15622<p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
15623YUV_<wbr/>REPROCESSING capability must support the
15624CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
15625<p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
15626<a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
15627<a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
15628<a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
15629addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
15630enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
15631if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
15632DEPTH).<wbr/></p>
15633            </td>
15634          </tr>
15635
15636          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15637           <!-- end of entry -->
15638        
15639                
15640          <tr class="entry" id="static_android.request.availableRequestKeys">
15641            <td class="entry_name
15642             " rowspan="5">
15643              android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
15644            </td>
15645            <td class="entry_type">
15646                <span class="entry_type_name">int32</span>
15647                <span class="entry_type_container">x</span>
15648
15649                <span class="entry_type_array">
15650                  n
15651                </span>
15652              <span class="entry_type_visibility"> [hidden]</span>
15653
15654
15655              <span class="entry_type_hwlevel">[legacy] </span>
15656
15657
15658
15659
15660            </td> <!-- entry_type -->
15661
15662            <td class="entry_description">
15663              <p>A list of all keys that the camera device has available
15664to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
15665            </td>
15666
15667            <td class="entry_units">
15668            </td>
15669
15670            <td class="entry_range">
15671            </td>
15672
15673            <td class="entry_tags">
15674            </td>
15675
15676          </tr>
15677          <tr class="entries_header">
15678            <th class="th_details" colspan="5">Details</th>
15679          </tr>
15680          <tr class="entry_cont">
15681            <td class="entry_details" colspan="5">
15682              <p>Attempting to set a key into a CaptureRequest that is not
15683listed here will result in an invalid request and will be rejected
15684by the camera device.<wbr/></p>
15685<p>This field can be used to query the feature set of a camera device
15686at a more granular level than capabilities.<wbr/> This is especially
15687important for optional keys that are not listed under any capability
15688in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
15689            </td>
15690          </tr>
15691
15692          <tr class="entries_header">
15693            <th class="th_details" colspan="5">HAL Implementation Details</th>
15694          </tr>
15695          <tr class="entry_cont">
15696            <td class="entry_details" colspan="5">
15697              <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
15698extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
15699<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
15700vendor extensions API and not against this field.<wbr/></p>
15701<p>The HAL must not consume any request tags that are not listed either
15702here or in the vendor tag list.<wbr/></p>
15703<p>The public camera2 API will always make the vendor tags visible
15704via
15705<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
15706            </td>
15707          </tr>
15708
15709          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15710           <!-- end of entry -->
15711        
15712                
15713          <tr class="entry" id="static_android.request.availableResultKeys">
15714            <td class="entry_name
15715             " rowspan="5">
15716              android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
15717            </td>
15718            <td class="entry_type">
15719                <span class="entry_type_name">int32</span>
15720                <span class="entry_type_container">x</span>
15721
15722                <span class="entry_type_array">
15723                  n
15724                </span>
15725              <span class="entry_type_visibility"> [hidden]</span>
15726
15727
15728              <span class="entry_type_hwlevel">[legacy] </span>
15729
15730
15731
15732
15733            </td> <!-- entry_type -->
15734
15735            <td class="entry_description">
15736              <p>A list of all keys that the camera device has available
15737to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>.<wbr/></p>
15738            </td>
15739
15740            <td class="entry_units">
15741            </td>
15742
15743            <td class="entry_range">
15744            </td>
15745
15746            <td class="entry_tags">
15747            </td>
15748
15749          </tr>
15750          <tr class="entries_header">
15751            <th class="th_details" colspan="5">Details</th>
15752          </tr>
15753          <tr class="entry_cont">
15754            <td class="entry_details" colspan="5">
15755              <p>Attempting to get a key from a CaptureResult that is not
15756listed here will always return a <code>null</code> value.<wbr/> Getting a key from
15757a CaptureResult that is listed here will generally never return a <code>null</code>
15758value.<wbr/></p>
15759<p>The following keys may return <code>null</code> unless they are enabled:</p>
15760<ul>
15761<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>
15762</ul>
15763<p>(Those sometimes-null keys will nevertheless be listed here
15764if they are available.<wbr/>)</p>
15765<p>This field can be used to query the feature set of a camera device
15766at a more granular level than capabilities.<wbr/> This is especially
15767important for optional keys that are not listed under any capability
15768in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
15769            </td>
15770          </tr>
15771
15772          <tr class="entries_header">
15773            <th class="th_details" colspan="5">HAL Implementation Details</th>
15774          </tr>
15775          <tr class="entry_cont">
15776            <td class="entry_details" colspan="5">
15777              <p>Tags listed here must always have an entry in the result metadata,<wbr/>
15778even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
15779matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
15780<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
15781extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
15782<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
15783vendor extensions API and not against this field.<wbr/></p>
15784<p>The HAL must not produce any result tags that are not listed either
15785here or in the vendor tag list.<wbr/></p>
15786<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>
15787            </td>
15788          </tr>
15789
15790          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15791           <!-- end of entry -->
15792        
15793                
15794          <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
15795            <td class="entry_name
15796             " rowspan="5">
15797              android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
15798            </td>
15799            <td class="entry_type">
15800                <span class="entry_type_name">int32</span>
15801                <span class="entry_type_container">x</span>
15802
15803                <span class="entry_type_array">
15804                  n
15805                </span>
15806              <span class="entry_type_visibility"> [hidden]</span>
15807
15808
15809              <span class="entry_type_hwlevel">[legacy] </span>
15810
15811
15812
15813
15814            </td> <!-- entry_type -->
15815
15816            <td class="entry_description">
15817              <p>A list of all keys that the camera device has available
15818to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
15819            </td>
15820
15821            <td class="entry_units">
15822            </td>
15823
15824            <td class="entry_range">
15825            </td>
15826
15827            <td class="entry_tags">
15828            </td>
15829
15830          </tr>
15831          <tr class="entries_header">
15832            <th class="th_details" colspan="5">Details</th>
15833          </tr>
15834          <tr class="entry_cont">
15835            <td class="entry_details" colspan="5">
15836              <p>This entry follows the same rules as
15837<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
15838CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
15839details.<wbr/></p>
15840            </td>
15841          </tr>
15842
15843          <tr class="entries_header">
15844            <th class="th_details" colspan="5">HAL Implementation Details</th>
15845          </tr>
15846          <tr class="entry_cont">
15847            <td class="entry_details" colspan="5">
15848              <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
15849even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
15850matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
15851<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
15852extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
15853<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
15854vendor extensions API and not against this field.<wbr/></p>
15855<p>The HAL must not have any tags in its static info that are not listed
15856either here or in the vendor tag list.<wbr/></p>
15857<p>The public camera2 API will always make the vendor tags visible
15858via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
15859            </td>
15860          </tr>
15861
15862          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15863           <!-- end of entry -->
15864        
15865        
15866
15867      <!-- end of kind -->
15868      </tbody>
15869      <tr><td colspan="6" class="kind">dynamic</td></tr>
15870
15871      <thead class="entries_header">
15872        <tr>
15873          <th class="th_name">Property Name</th>
15874          <th class="th_type">Type</th>
15875          <th class="th_description">Description</th>
15876          <th class="th_units">Units</th>
15877          <th class="th_range">Range</th>
15878          <th class="th_tags">Tags</th>
15879        </tr>
15880      </thead>
15881
15882      <tbody>
15883
15884        
15885
15886        
15887
15888        
15889
15890        
15891
15892                
15893          <tr class="entry" id="dynamic_android.request.frameCount">
15894            <td class="entry_name
15895                entry_name_deprecated
15896             " rowspan="3">
15897              android.<wbr/>request.<wbr/>frame<wbr/>Count
15898            </td>
15899            <td class="entry_type">
15900                <span class="entry_type_name">int32</span>
15901
15902              <span class="entry_type_visibility"> [hidden]</span>
15903
15904
15905
15906              <span class="entry_type_deprecated">[deprecated] </span>
15907
15908
15909
15910            </td> <!-- entry_type -->
15911
15912            <td class="entry_description">
15913              <p>A frame counter set by the framework.<wbr/> This value monotonically
15914increases with every new result (that is,<wbr/> each new result has a unique
15915frameCount value).<wbr/></p>
15916            </td>
15917
15918            <td class="entry_units">
15919              count of frames
15920            </td>
15921
15922            <td class="entry_range">
15923              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15924              <p>&gt; 0</p>
15925            </td>
15926
15927            <td class="entry_tags">
15928            </td>
15929
15930          </tr>
15931          <tr class="entries_header">
15932            <th class="th_details" colspan="5">Details</th>
15933          </tr>
15934          <tr class="entry_cont">
15935            <td class="entry_details" colspan="5">
15936              <p>Reset on release()</p>
15937            </td>
15938          </tr>
15939
15940
15941          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15942           <!-- end of entry -->
15943        
15944                
15945          <tr class="entry" id="dynamic_android.request.id">
15946            <td class="entry_name
15947             " rowspan="1">
15948              android.<wbr/>request.<wbr/>id
15949            </td>
15950            <td class="entry_type">
15951                <span class="entry_type_name">int32</span>
15952
15953              <span class="entry_type_visibility"> [hidden]</span>
15954
15955
15956
15957
15958
15959
15960            </td> <!-- entry_type -->
15961
15962            <td class="entry_description">
15963              <p>An application-specified ID for the current
15964request.<wbr/> Must be maintained unchanged in output
15965frame</p>
15966            </td>
15967
15968            <td class="entry_units">
15969              arbitrary integer assigned by application
15970            </td>
15971
15972            <td class="entry_range">
15973              <p>Any int</p>
15974            </td>
15975
15976            <td class="entry_tags">
15977              <ul class="entry_tags">
15978                  <li><a href="#tag_V1">V1</a></li>
15979              </ul>
15980            </td>
15981
15982          </tr>
15983
15984
15985          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15986           <!-- end of entry -->
15987        
15988                
15989          <tr class="entry" id="dynamic_android.request.metadataMode">
15990            <td class="entry_name
15991             " rowspan="1">
15992              android.<wbr/>request.<wbr/>metadata<wbr/>Mode
15993            </td>
15994            <td class="entry_type">
15995                <span class="entry_type_name entry_type_name_enum">byte</span>
15996
15997              <span class="entry_type_visibility"> [system]</span>
15998
15999
16000
16001
16002
16003                <ul class="entry_type_enum">
16004                  <li>
16005                    <span class="entry_type_enum_name">NONE</span>
16006                    <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
16007for application-bound buffer data.<wbr/> If no
16008application-bound streams exist,<wbr/> no frame should be
16009placed in the output frame queue.<wbr/> If such streams
16010exist,<wbr/> a frame should be placed on the output queue
16011with null metadata but with the necessary output buffer
16012information.<wbr/> Timestamp information should still be
16013included with any output stream buffers</p></span>
16014                  </li>
16015                  <li>
16016                    <span class="entry_type_enum_name">FULL</span>
16017                    <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
16018only be produced if they are separately
16019enabled</p></span>
16020                  </li>
16021                </ul>
16022
16023            </td> <!-- entry_type -->
16024
16025            <td class="entry_description">
16026              <p>How much metadata to produce on
16027output</p>
16028            </td>
16029
16030            <td class="entry_units">
16031            </td>
16032
16033            <td class="entry_range">
16034            </td>
16035
16036            <td class="entry_tags">
16037              <ul class="entry_tags">
16038                  <li><a href="#tag_FUTURE">FUTURE</a></li>
16039              </ul>
16040            </td>
16041
16042          </tr>
16043
16044
16045          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16046           <!-- end of entry -->
16047        
16048                
16049          <tr class="entry" id="dynamic_android.request.outputStreams">
16050            <td class="entry_name
16051                entry_name_deprecated
16052             " rowspan="3">
16053              android.<wbr/>request.<wbr/>output<wbr/>Streams
16054            </td>
16055            <td class="entry_type">
16056                <span class="entry_type_name">int32</span>
16057                <span class="entry_type_container">x</span>
16058
16059                <span class="entry_type_array">
16060                  n
16061                </span>
16062              <span class="entry_type_visibility"> [system]</span>
16063
16064
16065
16066              <span class="entry_type_deprecated">[deprecated] </span>
16067
16068
16069
16070            </td> <!-- entry_type -->
16071
16072            <td class="entry_description">
16073              <p>Lists which camera output streams image data
16074from this capture must be sent to</p>
16075            </td>
16076
16077            <td class="entry_units">
16078              List of camera stream IDs
16079            </td>
16080
16081            <td class="entry_range">
16082              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16083              <p>List must only include streams that have been
16084created</p>
16085            </td>
16086
16087            <td class="entry_tags">
16088              <ul class="entry_tags">
16089                  <li><a href="#tag_HAL2">HAL2</a></li>
16090              </ul>
16091            </td>
16092
16093          </tr>
16094          <tr class="entries_header">
16095            <th class="th_details" colspan="5">Details</th>
16096          </tr>
16097          <tr class="entry_cont">
16098            <td class="entry_details" colspan="5">
16099              <p>If no output streams are listed,<wbr/> then the image
16100data should simply be discarded.<wbr/> The image data must
16101still be captured for metadata and statistics production,<wbr/>
16102and the lens and flash must operate as requested.<wbr/></p>
16103            </td>
16104          </tr>
16105
16106
16107          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16108           <!-- end of entry -->
16109        
16110                
16111          <tr class="entry" id="dynamic_android.request.pipelineDepth">
16112            <td class="entry_name
16113             " rowspan="5">
16114              android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
16115            </td>
16116            <td class="entry_type">
16117                <span class="entry_type_name">byte</span>
16118
16119              <span class="entry_type_visibility"> [public]</span>
16120
16121
16122              <span class="entry_type_hwlevel">[legacy] </span>
16123
16124
16125
16126
16127            </td> <!-- entry_type -->
16128
16129            <td class="entry_description">
16130              <p>Specifies the number of pipeline stages the frame went
16131through from when it was exposed to when the final completed result
16132was available to the framework.<wbr/></p>
16133            </td>
16134
16135            <td class="entry_units">
16136            </td>
16137
16138            <td class="entry_range">
16139              <p>&lt;= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
16140            </td>
16141
16142            <td class="entry_tags">
16143            </td>
16144
16145          </tr>
16146          <tr class="entries_header">
16147            <th class="th_details" colspan="5">Details</th>
16148          </tr>
16149          <tr class="entry_cont">
16150            <td class="entry_details" colspan="5">
16151              <p>Depending on what settings are used in the request,<wbr/> and
16152what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
16153and some pipeline stages skipped.<wbr/></p>
16154<p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
16155            </td>
16156          </tr>
16157
16158          <tr class="entries_header">
16159            <th class="th_details" colspan="5">HAL Implementation Details</th>
16160          </tr>
16161          <tr class="entry_cont">
16162            <td class="entry_details" colspan="5">
16163              <p>This value must always represent the accurate count of how many
16164pipeline stages were actually used.<wbr/></p>
16165            </td>
16166          </tr>
16167
16168          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16169           <!-- end of entry -->
16170        
16171        
16172
16173      <!-- end of kind -->
16174      </tbody>
16175
16176  <!-- end of section -->
16177  <tr><td colspan="6" id="section_scaler" class="section">scaler</td></tr>
16178
16179
16180      <tr><td colspan="6" class="kind">controls</td></tr>
16181
16182      <thead class="entries_header">
16183        <tr>
16184          <th class="th_name">Property Name</th>
16185          <th class="th_type">Type</th>
16186          <th class="th_description">Description</th>
16187          <th class="th_units">Units</th>
16188          <th class="th_range">Range</th>
16189          <th class="th_tags">Tags</th>
16190        </tr>
16191      </thead>
16192
16193      <tbody>
16194
16195        
16196
16197        
16198
16199        
16200
16201        
16202
16203                
16204          <tr class="entry" id="controls_android.scaler.cropRegion">
16205            <td class="entry_name
16206             " rowspan="5">
16207              android.<wbr/>scaler.<wbr/>crop<wbr/>Region
16208            </td>
16209            <td class="entry_type">
16210                <span class="entry_type_name">int32</span>
16211                <span class="entry_type_container">x</span>
16212
16213                <span class="entry_type_array">
16214                  4
16215                </span>
16216              <span class="entry_type_visibility"> [public as rectangle]</span>
16217
16218
16219              <span class="entry_type_hwlevel">[legacy] </span>
16220
16221
16222
16223
16224            </td> <!-- entry_type -->
16225
16226            <td class="entry_description">
16227              <p>The desired region of the sensor to read out for this capture.<wbr/></p>
16228            </td>
16229
16230            <td class="entry_units">
16231              Pixel coordinates relative to
16232          android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
16233            </td>
16234
16235            <td class="entry_range">
16236            </td>
16237
16238            <td class="entry_tags">
16239              <ul class="entry_tags">
16240                  <li><a href="#tag_BC">BC</a></li>
16241              </ul>
16242            </td>
16243
16244          </tr>
16245          <tr class="entries_header">
16246            <th class="th_details" colspan="5">Details</th>
16247          </tr>
16248          <tr class="entry_cont">
16249            <td class="entry_details" colspan="5">
16250              <p>This control can be used to implement digital zoom.<wbr/></p>
16251<p>The crop region coordinate system is based off
16252<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
16253top-left corner of the sensor active array.<wbr/></p>
16254<p>Output streams use this rectangle to produce their output,<wbr/>
16255cropping to a smaller region if necessary to maintain the
16256stream's aspect ratio,<wbr/> then scaling the sensor input to
16257match the output's configured resolution.<wbr/></p>
16258<p>The crop region is applied after the RAW to other color
16259space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
16260(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
16261croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
16262<p>For non-raw streams,<wbr/> any additional per-stream cropping will
16263be done to maximize the final pixel area of the stream.<wbr/></p>
16264<p>For example,<wbr/> if the crop region is set to a 4:3 aspect
16265ratio,<wbr/> then 4:3 streams will use the exact crop
16266region.<wbr/> 16:9 streams will further crop vertically
16267(letterbox).<wbr/></p>
16268<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
16269outputs will crop horizontally (pillarbox),<wbr/> and 16:9
16270streams will match exactly.<wbr/> These additional crops will
16271be centered within the crop region.<wbr/></p>
16272<p>The width and height of the crop region cannot
16273be set to be smaller than
16274<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
16275<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>
16276<p>The camera device may adjust the crop region to account
16277for rounding and other hardware requirements; the final
16278crop region used will be included in the output capture
16279result.<wbr/></p>
16280            </td>
16281          </tr>
16282
16283          <tr class="entries_header">
16284            <th class="th_details" colspan="5">HAL Implementation Details</th>
16285          </tr>
16286          <tr class="entry_cont">
16287            <td class="entry_details" colspan="5">
16288              <p>The output streams must maintain square pixels at all
16289times,<wbr/> no matter what the relative aspect ratios of the
16290crop region and the stream are.<wbr/>  Negative values for
16291corner are allowed for raw output if full pixel array is
16292larger than active pixel array.<wbr/> Width and height may be
16293rounded to nearest larger supportable width,<wbr/> especially
16294for raw output,<wbr/> where only a few fixed scales may be
16295possible.<wbr/></p>
16296<p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
16297size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
16298<ul>
16299<li>
16300<p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
16301array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
16302<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>
16303<ol>
16304<li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
16305cropped pixel area by (tx,<wbr/> ty),<wbr/>
16306where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
16307and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
16308(sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
16309<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
16310<li>Scale the width and height of requested cropRegion with scaling factor of
16311sensor<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
16312respectively.<wbr/>
16313Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
16314with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
16315follow the general cropping rule for this new cropRegion and effective active
16316array size.<wbr/></li>
16317</ol>
16318</li>
16319<li>
16320<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/>
16321The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
16322The reported cropRegion may be slightly different with the requested cropRegion since
16323the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
16324hardware limitations.<wbr/></p>
16325</li>
16326</ul>
16327<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
16328            </td>
16329          </tr>
16330
16331          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16332           <!-- end of entry -->
16333        
16334        
16335
16336      <!-- end of kind -->
16337      </tbody>
16338      <tr><td colspan="6" class="kind">static</td></tr>
16339
16340      <thead class="entries_header">
16341        <tr>
16342          <th class="th_name">Property Name</th>
16343          <th class="th_type">Type</th>
16344          <th class="th_description">Description</th>
16345          <th class="th_units">Units</th>
16346          <th class="th_range">Range</th>
16347          <th class="th_tags">Tags</th>
16348        </tr>
16349      </thead>
16350
16351      <tbody>
16352
16353        
16354
16355        
16356
16357        
16358
16359        
16360
16361                
16362          <tr class="entry" id="static_android.scaler.availableFormats">
16363            <td class="entry_name
16364                entry_name_deprecated
16365             " rowspan="5">
16366              android.<wbr/>scaler.<wbr/>available<wbr/>Formats
16367            </td>
16368            <td class="entry_type">
16369                <span class="entry_type_name entry_type_name_enum">int32</span>
16370                <span class="entry_type_container">x</span>
16371
16372                <span class="entry_type_array">
16373                  n
16374                </span>
16375              <span class="entry_type_visibility"> [hidden as imageFormat]</span>
16376
16377
16378
16379              <span class="entry_type_deprecated">[deprecated] </span>
16380
16381
16382                <ul class="entry_type_enum">
16383                  <li>
16384                    <span class="entry_type_enum_name">RAW16</span>
16385                    <span class="entry_type_enum_optional">[optional]</span>
16386                    <span class="entry_type_enum_value">0x20</span>
16387                    <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
16388buffers with 16-bit pixels.<wbr/></p>
16389<p>Buffers of this format are typically expected to have a
16390Bayer Color Filter Array (CFA) layout,<wbr/> which is given in
16391<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
16392CFAs that are not representable by a format in
16393<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
16394use this format.<wbr/></p>
16395<p>Buffers of this format will also follow the constraints given for
16396RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
16397<p>This format is intended to give users access to the full contents
16398of the buffers coming directly from the image sensor prior to any
16399cropping or scaling operations,<wbr/> and all coordinate systems for
16400metadata used for this format are relative to the size of the
16401active region of the image sensor before any geometric distortion
16402correction has been applied (i.<wbr/>e.<wbr/>
16403<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
16404dimensions for this format are limited to the full dimensions of
16405the 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
16406<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
16407only supported output size).<wbr/></p>
16408<p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
16409the full set of performance guarantees.<wbr/></p></span>
16410                  </li>
16411                  <li>
16412                    <span class="entry_type_enum_name">RAW_OPAQUE</span>
16413                    <span class="entry_type_enum_optional">[optional]</span>
16414                    <span class="entry_type_enum_value">0x24</span>
16415                    <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE is a format for raw image buffers coming from an
16416image sensor.<wbr/></p>
16417<p>The actual structure of buffers of this format is
16418platform-specific,<wbr/> but must follow several constraints:</p>
16419<ol>
16420<li>No image post-processing operations may have been applied to
16421buffers of this type.<wbr/> These buffers contain raw image data coming
16422directly from the image sensor.<wbr/></li>
16423<li>If a buffer of this format is passed to the camera device for
16424reprocessing,<wbr/> the resulting images will be identical to the images
16425produced if the buffer had come directly from the sensor and was
16426processed with the same settings.<wbr/></li>
16427</ol>
16428<p>The intended use for this format is to allow access to the native
16429raw format buffers coming directly from the camera sensor without
16430any additional conversions or decrease in framerate.<wbr/></p>
16431<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
16432performance guarantees.<wbr/></p></span>
16433                  </li>
16434                  <li>
16435                    <span class="entry_type_enum_name">YV12</span>
16436                    <span class="entry_type_enum_optional">[optional]</span>
16437                    <span class="entry_type_enum_value">0x32315659</span>
16438                    <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
16439                  </li>
16440                  <li>
16441                    <span class="entry_type_enum_name">YCrCb_420_SP</span>
16442                    <span class="entry_type_enum_optional">[optional]</span>
16443                    <span class="entry_type_enum_value">0x11</span>
16444                    <span class="entry_type_enum_notes"><p>NV21</p></span>
16445                  </li>
16446                  <li>
16447                    <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span>
16448                    <span class="entry_type_enum_value">0x22</span>
16449                    <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
16450                  </li>
16451                  <li>
16452                    <span class="entry_type_enum_name">YCbCr_420_888</span>
16453                    <span class="entry_type_enum_value">0x23</span>
16454                    <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
16455                  </li>
16456                  <li>
16457                    <span class="entry_type_enum_name">BLOB</span>
16458                    <span class="entry_type_enum_value">0x21</span>
16459                    <span class="entry_type_enum_notes"><p>JPEG format</p></span>
16460                  </li>
16461                </ul>
16462
16463            </td> <!-- entry_type -->
16464
16465            <td class="entry_description">
16466              <p>The list of image formats that are supported by this
16467camera device for output streams.<wbr/></p>
16468            </td>
16469
16470            <td class="entry_units">
16471            </td>
16472
16473            <td class="entry_range">
16474              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16475            </td>
16476
16477            <td class="entry_tags">
16478              <ul class="entry_tags">
16479                  <li><a href="#tag_BC">BC</a></li>
16480              </ul>
16481            </td>
16482
16483          </tr>
16484          <tr class="entries_header">
16485            <th class="th_details" colspan="5">Details</th>
16486          </tr>
16487          <tr class="entry_cont">
16488            <td class="entry_details" colspan="5">
16489              <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
16490<p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
16491            </td>
16492          </tr>
16493
16494          <tr class="entries_header">
16495            <th class="th_details" colspan="5">HAL Implementation Details</th>
16496          </tr>
16497          <tr class="entry_cont">
16498            <td class="entry_details" colspan="5">
16499              <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
16500system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
16501<p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
16502gralloc module will select a format based on the usage flags provided
16503by the camera HAL device and the other endpoint of the stream.<wbr/> It is
16504usually used by preview and recording streams,<wbr/> where the application doesn't
16505need access the image data.<wbr/></p>
16506<p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
16507needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
16508<p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
16509<p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
16510recommended that any information used by the camera device when
16511processing images is fully expressed by the result metadata
16512for that image buffer.<wbr/></p>
16513            </td>
16514          </tr>
16515
16516          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16517           <!-- end of entry -->
16518        
16519                
16520          <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
16521            <td class="entry_name
16522                entry_name_deprecated
16523             " rowspan="3">
16524              android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
16525            </td>
16526            <td class="entry_type">
16527                <span class="entry_type_name">int64</span>
16528                <span class="entry_type_container">x</span>
16529
16530                <span class="entry_type_array">
16531                  n
16532                </span>
16533              <span class="entry_type_visibility"> [hidden]</span>
16534
16535
16536
16537              <span class="entry_type_deprecated">[deprecated] </span>
16538
16539
16540
16541            </td> <!-- entry_type -->
16542
16543            <td class="entry_description">
16544              <p>The minimum frame duration that is supported
16545for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
16546            </td>
16547
16548            <td class="entry_units">
16549              Nanoseconds
16550            </td>
16551
16552            <td class="entry_range">
16553              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16554              <p>TODO: Remove property.<wbr/></p>
16555            </td>
16556
16557            <td class="entry_tags">
16558              <ul class="entry_tags">
16559                  <li><a href="#tag_BC">BC</a></li>
16560              </ul>
16561            </td>
16562
16563          </tr>
16564          <tr class="entries_header">
16565            <th class="th_details" colspan="5">Details</th>
16566          </tr>
16567          <tr class="entry_cont">
16568            <td class="entry_details" colspan="5">
16569              <p>This corresponds to the minimum steady-state frame duration when only
16570that JPEG stream is active and captured in a burst,<wbr/> with all
16571processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
16572<p>When multiple streams are configured,<wbr/> the minimum
16573frame duration will be &gt;= max(individual stream min
16574durations)</p>
16575            </td>
16576          </tr>
16577
16578
16579          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16580           <!-- end of entry -->
16581        
16582                
16583          <tr class="entry" id="static_android.scaler.availableJpegSizes">
16584            <td class="entry_name
16585                entry_name_deprecated
16586             " rowspan="5">
16587              android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
16588            </td>
16589            <td class="entry_type">
16590                <span class="entry_type_name">int32</span>
16591                <span class="entry_type_container">x</span>
16592
16593                <span class="entry_type_array">
16594                  n x 2
16595                </span>
16596              <span class="entry_type_visibility"> [hidden as size]</span>
16597
16598
16599
16600              <span class="entry_type_deprecated">[deprecated] </span>
16601
16602
16603
16604            </td> <!-- entry_type -->
16605
16606            <td class="entry_description">
16607              <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
16608            </td>
16609
16610            <td class="entry_units">
16611            </td>
16612
16613            <td class="entry_range">
16614              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16615              <p>TODO: Remove property.<wbr/></p>
16616            </td>
16617
16618            <td class="entry_tags">
16619              <ul class="entry_tags">
16620                  <li><a href="#tag_BC">BC</a></li>
16621              </ul>
16622            </td>
16623
16624          </tr>
16625          <tr class="entries_header">
16626            <th class="th_details" colspan="5">Details</th>
16627          </tr>
16628          <tr class="entry_cont">
16629            <td class="entry_details" colspan="5">
16630              <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
16631sensor 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>
16632            </td>
16633          </tr>
16634
16635          <tr class="entries_header">
16636            <th class="th_details" colspan="5">HAL Implementation Details</th>
16637          </tr>
16638          <tr class="entry_cont">
16639            <td class="entry_details" colspan="5">
16640              <p>The HAL must include sensor maximum resolution
16641(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
16642and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
16643            </td>
16644          </tr>
16645
16646          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16647           <!-- end of entry -->
16648        
16649                
16650          <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
16651            <td class="entry_name
16652             " rowspan="3">
16653              android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
16654            </td>
16655            <td class="entry_type">
16656                <span class="entry_type_name">float</span>
16657
16658              <span class="entry_type_visibility"> [public]</span>
16659
16660
16661              <span class="entry_type_hwlevel">[legacy] </span>
16662
16663
16664
16665
16666            </td> <!-- entry_type -->
16667
16668            <td class="entry_description">
16669              <p>The maximum ratio between both active area width
16670and crop region width,<wbr/> and active area height and
16671crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
16672            </td>
16673
16674            <td class="entry_units">
16675              Zoom scale factor
16676            </td>
16677
16678            <td class="entry_range">
16679              <p>&gt;=1</p>
16680            </td>
16681
16682            <td class="entry_tags">
16683              <ul class="entry_tags">
16684                  <li><a href="#tag_BC">BC</a></li>
16685              </ul>
16686            </td>
16687
16688          </tr>
16689          <tr class="entries_header">
16690            <th class="th_details" colspan="5">Details</th>
16691          </tr>
16692          <tr class="entry_cont">
16693            <td class="entry_details" colspan="5">
16694              <p>This represents the maximum amount of zooming possible by
16695the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
16696window size.<wbr/></p>
16697<p>Crop regions that have a width or height that is smaller
16698than this ratio allows will be rounded up to the minimum
16699allowed size by the camera device.<wbr/></p>
16700            </td>
16701          </tr>
16702
16703
16704          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16705           <!-- end of entry -->
16706        
16707                
16708          <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
16709            <td class="entry_name
16710                entry_name_deprecated
16711             " rowspan="3">
16712              android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
16713            </td>
16714            <td class="entry_type">
16715                <span class="entry_type_name">int64</span>
16716                <span class="entry_type_container">x</span>
16717
16718                <span class="entry_type_array">
16719                  n
16720                </span>
16721              <span class="entry_type_visibility"> [hidden]</span>
16722
16723
16724
16725              <span class="entry_type_deprecated">[deprecated] </span>
16726
16727
16728
16729            </td> <!-- entry_type -->
16730
16731            <td class="entry_description">
16732              <p>For each available processed output size (defined in
16733<a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
16734minimum supportable frame duration for that size.<wbr/></p>
16735            </td>
16736
16737            <td class="entry_units">
16738              Nanoseconds
16739            </td>
16740
16741            <td class="entry_range">
16742              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16743            </td>
16744
16745            <td class="entry_tags">
16746              <ul class="entry_tags">
16747                  <li><a href="#tag_BC">BC</a></li>
16748              </ul>
16749            </td>
16750
16751          </tr>
16752          <tr class="entries_header">
16753            <th class="th_details" colspan="5">Details</th>
16754          </tr>
16755          <tr class="entry_cont">
16756            <td class="entry_details" colspan="5">
16757              <p>This should correspond to the frame duration when only that processed
16758stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
16759set to FAST.<wbr/></p>
16760<p>When multiple streams are configured,<wbr/> the minimum frame duration will
16761be &gt;= max(individual stream min durations).<wbr/></p>
16762            </td>
16763          </tr>
16764
16765
16766          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16767           <!-- end of entry -->
16768        
16769                
16770          <tr class="entry" id="static_android.scaler.availableProcessedSizes">
16771            <td class="entry_name
16772                entry_name_deprecated
16773             " rowspan="5">
16774              android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
16775            </td>
16776            <td class="entry_type">
16777                <span class="entry_type_name">int32</span>
16778                <span class="entry_type_container">x</span>
16779
16780                <span class="entry_type_array">
16781                  n x 2
16782                </span>
16783              <span class="entry_type_visibility"> [hidden as size]</span>
16784
16785
16786
16787              <span class="entry_type_deprecated">[deprecated] </span>
16788
16789
16790
16791            </td> <!-- entry_type -->
16792
16793            <td class="entry_description">
16794              <p>The resolutions available for use with
16795processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
16796platform opaque YUV/<wbr/>RGB streams to the GPU or video
16797encoders.<wbr/></p>
16798            </td>
16799
16800            <td class="entry_units">
16801            </td>
16802
16803            <td class="entry_range">
16804              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16805            </td>
16806
16807            <td class="entry_tags">
16808              <ul class="entry_tags">
16809                  <li><a href="#tag_BC">BC</a></li>
16810              </ul>
16811            </td>
16812
16813          </tr>
16814          <tr class="entries_header">
16815            <th class="th_details" colspan="5">Details</th>
16816          </tr>
16817          <tr class="entry_cont">
16818            <td class="entry_details" colspan="5">
16819              <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
16820<p>For a given use case,<wbr/> the actual maximum supported resolution
16821may be lower than what is listed here,<wbr/> depending on the destination
16822Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
16823the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
16824smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
16825can provide.<wbr/></p>
16826<p>Please reference the documentation for the image data destination to
16827check if it limits the maximum size for image data.<wbr/></p>
16828            </td>
16829          </tr>
16830
16831          <tr class="entries_header">
16832            <th class="th_details" colspan="5">HAL Implementation Details</th>
16833          </tr>
16834          <tr class="entry_cont">
16835            <td class="entry_details" colspan="5">
16836              <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/>
16837the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>
16838and each below resolution if it is smaller than or equal to the sensor
16839maximum resolution (if they are not listed in JPEG sizes already):</p>
16840<ul>
16841<li>240p (320 x 240)</li>
16842<li>480p (640 x 480)</li>
16843<li>720p (1280 x 720)</li>
16844<li>1080p (1920 x 1080)</li>
16845</ul>
16846<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/>
16847the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
16848            </td>
16849          </tr>
16850
16851          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16852           <!-- end of entry -->
16853        
16854                
16855          <tr class="entry" id="static_android.scaler.availableRawMinDurations">
16856            <td class="entry_name
16857                entry_name_deprecated
16858             " rowspan="3">
16859              android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
16860            </td>
16861            <td class="entry_type">
16862                <span class="entry_type_name">int64</span>
16863                <span class="entry_type_container">x</span>
16864
16865                <span class="entry_type_array">
16866                  n
16867                </span>
16868              <span class="entry_type_visibility"> [system]</span>
16869
16870
16871
16872              <span class="entry_type_deprecated">[deprecated] </span>
16873
16874
16875
16876            </td> <!-- entry_type -->
16877
16878            <td class="entry_description">
16879              <p>For each available raw output size (defined in
16880<a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
16881supportable frame duration for that size.<wbr/></p>
16882            </td>
16883
16884            <td class="entry_units">
16885              Nanoseconds
16886            </td>
16887
16888            <td class="entry_range">
16889              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16890            </td>
16891
16892            <td class="entry_tags">
16893              <ul class="entry_tags">
16894                  <li><a href="#tag_BC">BC</a></li>
16895              </ul>
16896            </td>
16897
16898          </tr>
16899          <tr class="entries_header">
16900            <th class="th_details" colspan="5">Details</th>
16901          </tr>
16902          <tr class="entry_cont">
16903            <td class="entry_details" colspan="5">
16904              <p>Should correspond to the frame duration when only the raw stream is
16905active.<wbr/></p>
16906<p>When multiple streams are configured,<wbr/> the minimum
16907frame duration will be &gt;= max(individual stream min
16908durations)</p>
16909            </td>
16910          </tr>
16911
16912
16913          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16914           <!-- end of entry -->
16915        
16916                
16917          <tr class="entry" id="static_android.scaler.availableRawSizes">
16918            <td class="entry_name
16919                entry_name_deprecated
16920             " rowspan="1">
16921              android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
16922            </td>
16923            <td class="entry_type">
16924                <span class="entry_type_name">int32</span>
16925                <span class="entry_type_container">x</span>
16926
16927                <span class="entry_type_array">
16928                  n x 2
16929                </span>
16930              <span class="entry_type_visibility"> [system as size]</span>
16931
16932
16933
16934              <span class="entry_type_deprecated">[deprecated] </span>
16935
16936
16937
16938            </td> <!-- entry_type -->
16939
16940            <td class="entry_description">
16941              <p>The resolutions available for use with raw
16942sensor output streams,<wbr/> listed as width,<wbr/>
16943height</p>
16944            </td>
16945
16946            <td class="entry_units">
16947            </td>
16948
16949            <td class="entry_range">
16950              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16951            </td>
16952
16953            <td class="entry_tags">
16954            </td>
16955
16956          </tr>
16957
16958
16959          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16960           <!-- end of entry -->
16961        
16962                
16963          <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
16964            <td class="entry_name
16965             " rowspan="5">
16966              android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
16967            </td>
16968            <td class="entry_type">
16969                <span class="entry_type_name">int32</span>
16970
16971              <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
16972
16973
16974
16975
16976
16977
16978            </td> <!-- entry_type -->
16979
16980            <td class="entry_description">
16981              <p>The mapping of image formats that are supported by this
16982camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
16983            </td>
16984
16985            <td class="entry_units">
16986            </td>
16987
16988            <td class="entry_range">
16989            </td>
16990
16991            <td class="entry_tags">
16992              <ul class="entry_tags">
16993                  <li><a href="#tag_REPROC">REPROC</a></li>
16994              </ul>
16995            </td>
16996
16997          </tr>
16998          <tr class="entries_header">
16999            <th class="th_details" colspan="5">Details</th>
17000          </tr>
17001          <tr class="entry_cont">
17002            <td class="entry_details" colspan="5">
17003              <p>All camera devices with at least 1
17004<a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
17005available input format.<wbr/></p>
17006<p>The camera device will support the following map of formats,<wbr/>
17007if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
17008<table>
17009<thead>
17010<tr>
17011<th align="left">Input Format</th>
17012<th align="left">Output Format</th>
17013<th align="left">Capability</th>
17014</tr>
17015</thead>
17016<tbody>
17017<tr>
17018<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
17019<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17020<td align="left">PRIVATE_<wbr/>REPROCESSING</td>
17021</tr>
17022<tr>
17023<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
17024<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>
17025<td align="left">PRIVATE_<wbr/>REPROCESSING</td>
17026</tr>
17027<tr>
17028<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>
17029<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17030<td align="left">YUV_<wbr/>REPROCESSING</td>
17031</tr>
17032<tr>
17033<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>
17034<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>
17035<td align="left">YUV_<wbr/>REPROCESSING</td>
17036</tr>
17037</tbody>
17038</table>
17039<p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/>  A
17040PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
17041with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
17042<p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
17043or 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>
17044<p>Attempting to configure an input stream with output streams not
17045listed as available in this map is not valid.<wbr/></p>
17046            </td>
17047          </tr>
17048
17049          <tr class="entries_header">
17050            <th class="th_details" colspan="5">HAL Implementation Details</th>
17051          </tr>
17052          <tr class="entry_cont">
17053            <td class="entry_details" colspan="5">
17054              <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
17055of the image format enumerations.<wbr/> The PRIVATE format refers to the
17056HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
17057the actual format by using the gralloc usage flags.<wbr/>
17058For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
17059processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
17060See camera3.<wbr/>h for more details.<wbr/></p>
17061<p>This value is encoded as a variable-size array-of-arrays.<wbr/>
17062The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
17063<code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
17064inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
17065<p>A code sample to read/<wbr/>write this encoding (with a device that
17066supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
17067and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
17068<pre><code>//<wbr/> reading
17069int32_<wbr/>t* contents = &amp;entry.<wbr/>i32[0];
17070for (size_<wbr/>t i = 0; i &lt; entry.<wbr/>count; ) {
17071    int32_<wbr/>t format = contents[i++];
17072    int32_<wbr/>t length = contents[i++];
17073    int32_<wbr/>t output_<wbr/>formats[length];
17074    memcpy(&amp;output_<wbr/>formats[0],<wbr/> &amp;contents[i],<wbr/>
17075           length * sizeof(int32_<wbr/>t));
17076    i += length;
17077}
17078
17079//<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
17080int32_<wbr/>t[] contents = {
17081  IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
17082  YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
17083};
17084update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &amp;contents[0],<wbr/>
17085      sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &amp;updated_<wbr/>entry);
17086</code></pre>
17087<p>If the HAL claims to support any of the capabilities listed in the
17088above details,<wbr/> then it must also support all the input-output
17089combinations listed for that capability.<wbr/> It can optionally support
17090additional formats if it so chooses.<wbr/></p>
17091            </td>
17092          </tr>
17093
17094          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17095           <!-- end of entry -->
17096        
17097                
17098          <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
17099            <td class="entry_name
17100             " rowspan="5">
17101              android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
17102            </td>
17103            <td class="entry_type">
17104                <span class="entry_type_name entry_type_name_enum">int32</span>
17105                <span class="entry_type_container">x</span>
17106
17107                <span class="entry_type_array">
17108                  n x 4
17109                </span>
17110              <span class="entry_type_visibility"> [hidden as streamConfiguration]</span>
17111
17112
17113              <span class="entry_type_hwlevel">[legacy] </span>
17114
17115
17116
17117                <ul class="entry_type_enum">
17118                  <li>
17119                    <span class="entry_type_enum_name">OUTPUT</span>
17120                  </li>
17121                  <li>
17122                    <span class="entry_type_enum_name">INPUT</span>
17123                  </li>
17124                </ul>
17125
17126            </td> <!-- entry_type -->
17127
17128            <td class="entry_description">
17129              <p>The available stream configurations that this
17130camera device supports
17131(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
17132            </td>
17133
17134            <td class="entry_units">
17135            </td>
17136
17137            <td class="entry_range">
17138            </td>
17139
17140            <td class="entry_tags">
17141            </td>
17142
17143          </tr>
17144          <tr class="entries_header">
17145            <th class="th_details" colspan="5">Details</th>
17146          </tr>
17147          <tr class="entry_cont">
17148            <td class="entry_details" colspan="5">
17149              <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
17150tuples.<wbr/></p>
17151<p>For a given use case,<wbr/> the actual maximum supported resolution
17152may be lower than what is listed here,<wbr/> depending on the destination
17153Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
17154the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
17155smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
17156can provide.<wbr/></p>
17157<p>Please reference the documentation for the image data destination to
17158check if it limits the maximum size for image data.<wbr/></p>
17159<p>Not all output formats may be supported in a configuration with
17160an input stream of a particular format.<wbr/> For more details,<wbr/> see
17161<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
17162<p>The following table describes the minimum required output stream
17163configurations based on the hardware level
17164(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
17165<table>
17166<thead>
17167<tr>
17168<th align="center">Format</th>
17169<th align="center">Size</th>
17170<th align="center">Hardware Level</th>
17171<th align="center">Notes</th>
17172</tr>
17173</thead>
17174<tbody>
17175<tr>
17176<td align="center">JPEG</td>
17177<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
17178<td align="center">Any</td>
17179<td align="center"></td>
17180</tr>
17181<tr>
17182<td align="center">JPEG</td>
17183<td align="center">1920x1080 (1080p)</td>
17184<td align="center">Any</td>
17185<td align="center">if 1080p &lt;= activeArraySize</td>
17186</tr>
17187<tr>
17188<td align="center">JPEG</td>
17189<td align="center">1280x720 (720)</td>
17190<td align="center">Any</td>
17191<td align="center">if 720p &lt;= activeArraySize</td>
17192</tr>
17193<tr>
17194<td align="center">JPEG</td>
17195<td align="center">640x480 (480p)</td>
17196<td align="center">Any</td>
17197<td align="center">if 480p &lt;= activeArraySize</td>
17198</tr>
17199<tr>
17200<td align="center">JPEG</td>
17201<td align="center">320x240 (240p)</td>
17202<td align="center">Any</td>
17203<td align="center">if 240p &lt;= activeArraySize</td>
17204</tr>
17205<tr>
17206<td align="center">YUV_<wbr/>420_<wbr/>888</td>
17207<td align="center">all output sizes available for JPEG</td>
17208<td align="center">FULL</td>
17209<td align="center"></td>
17210</tr>
17211<tr>
17212<td align="center">YUV_<wbr/>420_<wbr/>888</td>
17213<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
17214<td align="center">LIMITED</td>
17215<td align="center"></td>
17216</tr>
17217<tr>
17218<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
17219<td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
17220<td align="center">Any</td>
17221<td align="center"></td>
17222</tr>
17223</tbody>
17224</table>
17225<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
17226mandatory stream configurations on a per-capability basis.<wbr/></p>
17227            </td>
17228          </tr>
17229
17230          <tr class="entries_header">
17231            <th class="th_details" colspan="5">HAL Implementation Details</th>
17232          </tr>
17233          <tr class="entry_cont">
17234            <td class="entry_details" colspan="5">
17235              <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
17236of sensor maximum resolution for JPEG formats (regardless of hardware
17237level).<wbr/></p>
17238<p>(The following is a rewording of the above required table):</p>
17239<p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
17240<ul>
17241<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
17242(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
17243(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/>
17244it does not have to be included in the supported JPEG sizes.<wbr/></li>
17245<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
17246the dimensions being a multiple of 16.<wbr/></li>
17247</ul>
17248<p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
17249However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
17250resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
17251additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
17252if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
17253ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
172543264x2448.<wbr/></p>
17255<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/>
17256the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
17257here as output streams.<wbr/></p>
17258<p>It must also include each below resolution if it is smaller than or
17259equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
17260formats),<wbr/> as output streams:</p>
17261<ul>
17262<li>240p (320 x 240)</li>
17263<li>480p (640 x 480)</li>
17264<li>720p (1280 x 720)</li>
17265<li>1080p (1920 x 1080)</li>
17266</ul>
17267<p>For LIMITED capability devices
17268(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
17269the HAL only has to list up to the maximum video size
17270supported by the device.<wbr/></p>
17271<p>Regardless of hardware level,<wbr/> every output resolution available for
17272YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
17273<p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
17274<ul>
17275<li>availableFormats</li>
17276<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
17277</ul>
17278            </td>
17279          </tr>
17280
17281          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17282           <!-- end of entry -->
17283        
17284                
17285          <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
17286            <td class="entry_name
17287             " rowspan="3">
17288              android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
17289            </td>
17290            <td class="entry_type">
17291                <span class="entry_type_name">int64</span>
17292                <span class="entry_type_container">x</span>
17293
17294                <span class="entry_type_array">
17295                  4 x n
17296                </span>
17297              <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
17298
17299
17300              <span class="entry_type_hwlevel">[legacy] </span>
17301
17302
17303
17304
17305            </td> <!-- entry_type -->
17306
17307            <td class="entry_description">
17308              <p>This lists the minimum frame duration for each
17309format/<wbr/>size combination.<wbr/></p>
17310            </td>
17311
17312            <td class="entry_units">
17313              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
17314            </td>
17315
17316            <td class="entry_range">
17317            </td>
17318
17319            <td class="entry_tags">
17320              <ul class="entry_tags">
17321                  <li><a href="#tag_V1">V1</a></li>
17322              </ul>
17323            </td>
17324
17325          </tr>
17326          <tr class="entries_header">
17327            <th class="th_details" colspan="5">Details</th>
17328          </tr>
17329          <tr class="entry_cont">
17330            <td class="entry_details" colspan="5">
17331              <p>This should correspond to the frame duration when only that
17332stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
17333set to either OFF or FAST.<wbr/></p>
17334<p>When multiple streams are used in a request,<wbr/> the minimum frame
17335duration will be max(individual stream min durations).<wbr/></p>
17336<p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
17337is the same regardless of whether the stream is input or output.<wbr/></p>
17338<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
17339<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
17340calculating the max frame rate.<wbr/></p>
17341<p>(Keep in sync with
17342<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p>
17343            </td>
17344          </tr>
17345
17346
17347          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17348           <!-- end of entry -->
17349        
17350                
17351          <tr class="entry" id="static_android.scaler.availableStallDurations">
17352            <td class="entry_name
17353             " rowspan="5">
17354              android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
17355            </td>
17356            <td class="entry_type">
17357                <span class="entry_type_name">int64</span>
17358                <span class="entry_type_container">x</span>
17359
17360                <span class="entry_type_array">
17361                  4 x n
17362                </span>
17363              <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
17364
17365
17366              <span class="entry_type_hwlevel">[legacy] </span>
17367
17368
17369
17370
17371            </td> <!-- entry_type -->
17372
17373            <td class="entry_description">
17374              <p>This lists the maximum stall duration for each
17375output format/<wbr/>size combination.<wbr/></p>
17376            </td>
17377
17378            <td class="entry_units">
17379              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
17380            </td>
17381
17382            <td class="entry_range">
17383            </td>
17384
17385            <td class="entry_tags">
17386              <ul class="entry_tags">
17387                  <li><a href="#tag_V1">V1</a></li>
17388              </ul>
17389            </td>
17390
17391          </tr>
17392          <tr class="entries_header">
17393            <th class="th_details" colspan="5">Details</th>
17394          </tr>
17395          <tr class="entry_cont">
17396            <td class="entry_details" colspan="5">
17397              <p>A stall duration is how much extra time would get added
17398to the normal minimum frame duration for a repeating request
17399that has streams with non-zero stall.<wbr/></p>
17400<p>For example,<wbr/> consider JPEG captures which have the following
17401characteristics:</p>
17402<ul>
17403<li>JPEG streams act like processed YUV streams in requests for which
17404they are not included; in requests in which they are directly
17405referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
17406JPEG stream requires the underlying YUV data to always be ready for
17407use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
17408frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
17409<li>The JPEG processor can run concurrently to the rest of the camera
17410pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
17411</ul>
17412<p>In other words,<wbr/> using a repeating YUV request would result
17413in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
17414JPEG request is submitted periodically,<wbr/> the frame rate will stay
17415at 30 FPS (as long as we wait for the previous JPEG to return each
17416time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
17417the frame rate will drop from 30 FPS.<wbr/></p>
17418<p>In general,<wbr/> submitting a new request with a non-0 stall time
17419stream will <em>not</em> cause a frame rate drop unless there are still
17420outstanding buffers for that stream from previous requests.<wbr/></p>
17421<p>Submitting a repeating request with streams (call this <code>S</code>)
17422is the same as setting the minimum frame duration from
17423the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
17424the maximum stall duration for <code>S</code>.<wbr/></p>
17425<p>If interleaving requests with and without a stall duration,<wbr/>
17426a request will stall by the maximum of the remaining times
17427for each can-stall stream with outstanding buffers.<wbr/></p>
17428<p>This means that a stalling request will not have an exposure start
17429until the stall has completed.<wbr/></p>
17430<p>This should correspond to the stall duration when only that stream is
17431active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
17432or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
17433effectively results in an indeterminate stall duration for all
17434streams in a request (the regular stall calculation rules are
17435ignored).<wbr/></p>
17436<p>The following formats may always have a stall duration:</p>
17437<ul>
17438<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
17439<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
17440</ul>
17441<p>The following formats will never have a stall duration:</p>
17442<ul>
17443<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>
17444<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
17445</ul>
17446<p>All other formats may or may not have an allowed stall duration on
17447a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
17448for more details.<wbr/></p>
17449<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
17450calculating the max frame rate (absent stalls).<wbr/></p>
17451<p>(Keep up to date with
17452<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> )</p>
17453            </td>
17454          </tr>
17455
17456          <tr class="entries_header">
17457            <th class="th_details" colspan="5">HAL Implementation Details</th>
17458          </tr>
17459          <tr class="entry_cont">
17460            <td class="entry_details" colspan="5">
17461              <p>If possible,<wbr/> it is recommended that all non-JPEG formats
17462(such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
17463and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
17464            </td>
17465          </tr>
17466
17467          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17468           <!-- end of entry -->
17469        
17470                
17471          <tr class="entry" id="static_android.scaler.streamConfigurationMap">
17472            <td class="entry_name
17473             " rowspan="5">
17474              android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
17475            </td>
17476            <td class="entry_type">
17477                <span class="entry_type_name">int32</span>
17478
17479              <span class="entry_type_visibility"> [public as streamConfigurationMap]</span>
17480
17481              <span class="entry_type_synthetic">[synthetic] </span>
17482
17483              <span class="entry_type_hwlevel">[legacy] </span>
17484
17485
17486
17487
17488            </td> <!-- entry_type -->
17489
17490            <td class="entry_description">
17491              <p>The available stream configurations that this
17492camera device supports; also includes the minimum frame durations
17493and the stall durations for each format/<wbr/>size combination.<wbr/></p>
17494            </td>
17495
17496            <td class="entry_units">
17497            </td>
17498
17499            <td class="entry_range">
17500            </td>
17501
17502            <td class="entry_tags">
17503            </td>
17504
17505          </tr>
17506          <tr class="entries_header">
17507            <th class="th_details" colspan="5">Details</th>
17508          </tr>
17509          <tr class="entry_cont">
17510            <td class="entry_details" colspan="5">
17511              <p>All camera devices will support sensor maximum resolution (defined by
17512<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>
17513<p>For a given use case,<wbr/> the actual maximum supported resolution
17514may be lower than what is listed here,<wbr/> depending on the destination
17515Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
17516the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
17517smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
17518can provide.<wbr/></p>
17519<p>Please reference the documentation for the image data destination to
17520check if it limits the maximum size for image data.<wbr/></p>
17521<p>The following table describes the minimum required output stream
17522configurations based on the hardware level
17523(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
17524<table>
17525<thead>
17526<tr>
17527<th align="center">Format</th>
17528<th align="center">Size</th>
17529<th align="center">Hardware Level</th>
17530<th align="center">Notes</th>
17531</tr>
17532</thead>
17533<tbody>
17534<tr>
17535<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17536<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
17537<td align="center">Any</td>
17538<td align="center"></td>
17539</tr>
17540<tr>
17541<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17542<td align="center">1920x1080 (1080p)</td>
17543<td align="center">Any</td>
17544<td align="center">if 1080p &lt;= activeArraySize</td>
17545</tr>
17546<tr>
17547<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17548<td align="center">1280x720 (720p)</td>
17549<td align="center">Any</td>
17550<td align="center">if 720p &lt;= activeArraySize</td>
17551</tr>
17552<tr>
17553<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17554<td align="center">640x480 (480p)</td>
17555<td align="center">Any</td>
17556<td align="center">if 480p &lt;= activeArraySize</td>
17557</tr>
17558<tr>
17559<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17560<td align="center">320x240 (240p)</td>
17561<td align="center">Any</td>
17562<td align="center">if 240p &lt;= activeArraySize</td>
17563</tr>
17564<tr>
17565<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>
17566<td align="center">all output sizes available for JPEG</td>
17567<td align="center">FULL</td>
17568<td align="center"></td>
17569</tr>
17570<tr>
17571<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>
17572<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
17573<td align="center">LIMITED</td>
17574<td align="center"></td>
17575</tr>
17576<tr>
17577<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
17578<td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
17579<td align="center">Any</td>
17580<td align="center"></td>
17581</tr>
17582</tbody>
17583</table>
17584<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
17585stream configurations on a per-capability basis.<wbr/></p>
17586<p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
17587<ul>
17588<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
17589(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
17590(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/>
17591it does not have to be included in the supported JPEG sizes.<wbr/></li>
17592<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
17593the dimensions being a multiple of 16.<wbr/>
17594Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
17595However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
17596resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
17597additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
17598if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
17599ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
176003264x2448.<wbr/></li>
17601</ul>
17602            </td>
17603          </tr>
17604
17605          <tr class="entries_header">
17606            <th class="th_details" colspan="5">HAL Implementation Details</th>
17607          </tr>
17608          <tr class="entry_cont">
17609            <td class="entry_details" colspan="5">
17610              <p>Do not set this property directly
17611(it is synthetic and will not be available at the HAL layer);
17612set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
17613<p>Not all output formats may be supported in a configuration with
17614an input stream of a particular format.<wbr/> For more details,<wbr/> see
17615<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
17616<p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
17617of sensor maximum resolution for JPEG formats (regardless of hardware
17618level).<wbr/></p>
17619<p>(The following is a rewording of the above required table):</p>
17620<p>The HAL must include sensor maximum resolution (defined by
17621<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
17622<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/>
17623the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
17624here as output streams.<wbr/></p>
17625<p>It must also include each below resolution if it is smaller than or
17626equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
17627formats),<wbr/> as output streams:</p>
17628<ul>
17629<li>240p (320 x 240)</li>
17630<li>480p (640 x 480)</li>
17631<li>720p (1280 x 720)</li>
17632<li>1080p (1920 x 1080)</li>
17633</ul>
17634<p>For LIMITED capability devices
17635(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
17636the HAL only has to list up to the maximum video size
17637supported by the device.<wbr/></p>
17638<p>Regardless of hardware level,<wbr/> every output resolution available for
17639YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
17640<p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
17641<ul>
17642<li>availableFormats</li>
17643<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
17644</ul>
17645            </td>
17646          </tr>
17647
17648          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17649           <!-- end of entry -->
17650        
17651                
17652          <tr class="entry" id="static_android.scaler.croppingType">
17653            <td class="entry_name
17654             " rowspan="3">
17655              android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
17656            </td>
17657            <td class="entry_type">
17658                <span class="entry_type_name entry_type_name_enum">byte</span>
17659
17660              <span class="entry_type_visibility"> [public]</span>
17661
17662
17663              <span class="entry_type_hwlevel">[legacy] </span>
17664
17665
17666
17667                <ul class="entry_type_enum">
17668                  <li>
17669                    <span class="entry_type_enum_name">CENTER_ONLY</span>
17670                    <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
17671                  </li>
17672                  <li>
17673                    <span class="entry_type_enum_name">FREEFORM</span>
17674                    <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
17675                  </li>
17676                </ul>
17677
17678            </td> <!-- entry_type -->
17679
17680            <td class="entry_description">
17681              <p>The crop type that this camera device supports.<wbr/></p>
17682            </td>
17683
17684            <td class="entry_units">
17685            </td>
17686
17687            <td class="entry_range">
17688            </td>
17689
17690            <td class="entry_tags">
17691            </td>
17692
17693          </tr>
17694          <tr class="entries_header">
17695            <th class="th_details" colspan="5">Details</th>
17696          </tr>
17697          <tr class="entry_cont">
17698            <td class="entry_details" colspan="5">
17699              <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
17700device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
17701crop 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>)
17702and keep the crop region width and height unchanged.<wbr/> The camera device will return the
17703final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
17704<p>Camera devices that support FREEFORM cropping will support any crop region that
17705is inside of the active array.<wbr/> The camera device will apply the same crop region and
17706return 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>
17707<p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
17708            </td>
17709          </tr>
17710
17711
17712          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17713           <!-- end of entry -->
17714        
17715        
17716
17717      <!-- end of kind -->
17718      </tbody>
17719      <tr><td colspan="6" class="kind">dynamic</td></tr>
17720
17721      <thead class="entries_header">
17722        <tr>
17723          <th class="th_name">Property Name</th>
17724          <th class="th_type">Type</th>
17725          <th class="th_description">Description</th>
17726          <th class="th_units">Units</th>
17727          <th class="th_range">Range</th>
17728          <th class="th_tags">Tags</th>
17729        </tr>
17730      </thead>
17731
17732      <tbody>
17733
17734        
17735
17736        
17737
17738        
17739
17740        
17741
17742                
17743          <tr class="entry" id="dynamic_android.scaler.cropRegion">
17744            <td class="entry_name
17745             " rowspan="5">
17746              android.<wbr/>scaler.<wbr/>crop<wbr/>Region
17747            </td>
17748            <td class="entry_type">
17749                <span class="entry_type_name">int32</span>
17750                <span class="entry_type_container">x</span>
17751
17752                <span class="entry_type_array">
17753                  4
17754                </span>
17755              <span class="entry_type_visibility"> [public as rectangle]</span>
17756
17757
17758              <span class="entry_type_hwlevel">[legacy] </span>
17759
17760
17761
17762
17763            </td> <!-- entry_type -->
17764
17765            <td class="entry_description">
17766              <p>The desired region of the sensor to read out for this capture.<wbr/></p>
17767            </td>
17768
17769            <td class="entry_units">
17770              Pixel coordinates relative to
17771          android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
17772            </td>
17773
17774            <td class="entry_range">
17775            </td>
17776
17777            <td class="entry_tags">
17778              <ul class="entry_tags">
17779                  <li><a href="#tag_BC">BC</a></li>
17780              </ul>
17781            </td>
17782
17783          </tr>
17784          <tr class="entries_header">
17785            <th class="th_details" colspan="5">Details</th>
17786          </tr>
17787          <tr class="entry_cont">
17788            <td class="entry_details" colspan="5">
17789              <p>This control can be used to implement digital zoom.<wbr/></p>
17790<p>The crop region coordinate system is based off
17791<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
17792top-left corner of the sensor active array.<wbr/></p>
17793<p>Output streams use this rectangle to produce their output,<wbr/>
17794cropping to a smaller region if necessary to maintain the
17795stream's aspect ratio,<wbr/> then scaling the sensor input to
17796match the output's configured resolution.<wbr/></p>
17797<p>The crop region is applied after the RAW to other color
17798space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
17799(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
17800croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
17801<p>For non-raw streams,<wbr/> any additional per-stream cropping will
17802be done to maximize the final pixel area of the stream.<wbr/></p>
17803<p>For example,<wbr/> if the crop region is set to a 4:3 aspect
17804ratio,<wbr/> then 4:3 streams will use the exact crop
17805region.<wbr/> 16:9 streams will further crop vertically
17806(letterbox).<wbr/></p>
17807<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
17808outputs will crop horizontally (pillarbox),<wbr/> and 16:9
17809streams will match exactly.<wbr/> These additional crops will
17810be centered within the crop region.<wbr/></p>
17811<p>The width and height of the crop region cannot
17812be set to be smaller than
17813<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
17814<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>
17815<p>The camera device may adjust the crop region to account
17816for rounding and other hardware requirements; the final
17817crop region used will be included in the output capture
17818result.<wbr/></p>
17819            </td>
17820          </tr>
17821
17822          <tr class="entries_header">
17823            <th class="th_details" colspan="5">HAL Implementation Details</th>
17824          </tr>
17825          <tr class="entry_cont">
17826            <td class="entry_details" colspan="5">
17827              <p>The output streams must maintain square pixels at all
17828times,<wbr/> no matter what the relative aspect ratios of the
17829crop region and the stream are.<wbr/>  Negative values for
17830corner are allowed for raw output if full pixel array is
17831larger than active pixel array.<wbr/> Width and height may be
17832rounded to nearest larger supportable width,<wbr/> especially
17833for raw output,<wbr/> where only a few fixed scales may be
17834possible.<wbr/></p>
17835<p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
17836size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
17837<ul>
17838<li>
17839<p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
17840array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
17841<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>
17842<ol>
17843<li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
17844cropped pixel area by (tx,<wbr/> ty),<wbr/>
17845where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
17846and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
17847(sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
17848<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
17849<li>Scale the width and height of requested cropRegion with scaling factor of
17850sensor<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
17851respectively.<wbr/>
17852Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
17853with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
17854follow the general cropping rule for this new cropRegion and effective active
17855array size.<wbr/></li>
17856</ol>
17857</li>
17858<li>
17859<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/>
17860The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
17861The reported cropRegion may be slightly different with the requested cropRegion since
17862the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
17863hardware limitations.<wbr/></p>
17864</li>
17865</ul>
17866<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
17867            </td>
17868          </tr>
17869
17870          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17871           <!-- end of entry -->
17872        
17873        
17874
17875      <!-- end of kind -->
17876      </tbody>
17877
17878  <!-- end of section -->
17879  <tr><td colspan="6" id="section_sensor" class="section">sensor</td></tr>
17880
17881
17882      <tr><td colspan="6" class="kind">controls</td></tr>
17883
17884      <thead class="entries_header">
17885        <tr>
17886          <th class="th_name">Property Name</th>
17887          <th class="th_type">Type</th>
17888          <th class="th_description">Description</th>
17889          <th class="th_units">Units</th>
17890          <th class="th_range">Range</th>
17891          <th class="th_tags">Tags</th>
17892        </tr>
17893      </thead>
17894
17895      <tbody>
17896
17897        
17898
17899        
17900
17901        
17902
17903        
17904
17905                
17906          <tr class="entry" id="controls_android.sensor.exposureTime">
17907            <td class="entry_name
17908             " rowspan="3">
17909              android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
17910            </td>
17911            <td class="entry_type">
17912                <span class="entry_type_name">int64</span>
17913
17914              <span class="entry_type_visibility"> [public]</span>
17915
17916
17917              <span class="entry_type_hwlevel">[full] </span>
17918
17919
17920
17921
17922            </td> <!-- entry_type -->
17923
17924            <td class="entry_description">
17925              <p>Duration each pixel is exposed to
17926light.<wbr/></p>
17927            </td>
17928
17929            <td class="entry_units">
17930              Nanoseconds
17931            </td>
17932
17933            <td class="entry_range">
17934              <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
17935            </td>
17936
17937            <td class="entry_tags">
17938              <ul class="entry_tags">
17939                  <li><a href="#tag_V1">V1</a></li>
17940              </ul>
17941            </td>
17942
17943          </tr>
17944          <tr class="entries_header">
17945            <th class="th_details" colspan="5">Details</th>
17946          </tr>
17947          <tr class="entry_cont">
17948            <td class="entry_details" colspan="5">
17949              <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
17950duration exposed to the nearest possible value (rather than expose longer).<wbr/>
17951The final exposure time used will be available in the output capture result.<wbr/></p>
17952<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
17953OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
17954            </td>
17955          </tr>
17956
17957
17958          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17959           <!-- end of entry -->
17960        
17961                
17962          <tr class="entry" id="controls_android.sensor.frameDuration">
17963            <td class="entry_name
17964             " rowspan="5">
17965              android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
17966            </td>
17967            <td class="entry_type">
17968                <span class="entry_type_name">int64</span>
17969
17970              <span class="entry_type_visibility"> [public]</span>
17971
17972
17973              <span class="entry_type_hwlevel">[full] </span>
17974
17975
17976
17977
17978            </td> <!-- entry_type -->
17979
17980            <td class="entry_description">
17981              <p>Duration from start of frame exposure to
17982start of next frame exposure.<wbr/></p>
17983            </td>
17984
17985            <td class="entry_units">
17986              Nanoseconds
17987            </td>
17988
17989            <td class="entry_range">
17990              <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
17991<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
17992is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
17993            </td>
17994
17995            <td class="entry_tags">
17996              <ul class="entry_tags">
17997                  <li><a href="#tag_V1">V1</a></li>
17998              </ul>
17999            </td>
18000
18001          </tr>
18002          <tr class="entries_header">
18003            <th class="th_details" colspan="5">Details</th>
18004          </tr>
18005          <tr class="entry_cont">
18006            <td class="entry_details" colspan="5">
18007              <p>The maximum frame rate that can be supported by a camera subsystem is
18008a function of many factors:</p>
18009<ul>
18010<li>Requested resolutions of output image streams</li>
18011<li>Availability of binning /<wbr/> skipping modes on the imager</li>
18012<li>The bandwidth of the imager interface</li>
18013<li>The bandwidth of the various ISP processing blocks</li>
18014</ul>
18015<p>Since these factors can vary greatly between different ISPs and
18016sensors,<wbr/> the camera abstraction tries to represent the bandwidth
18017restrictions with as simple a model as possible.<wbr/></p>
18018<p>The model presented has the following characteristics:</p>
18019<ul>
18020<li>The image sensor is always configured to output the smallest
18021resolution possible given the application's requested output stream
18022sizes.<wbr/>  The smallest resolution is defined as being at least as large
18023as the largest requested output stream size; the camera pipeline must
18024never digitally upsample sensor data when the crop region covers the
18025whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
18026resolutions are configured,<wbr/> the sensor can provide a higher frame
18027rate.<wbr/></li>
18028<li>Since any request may use any or all the currently configured
18029output streams,<wbr/> the sensor and ISP must be configured to support
18030scaling a single capture to all the streams at the same time.<wbr/>  This
18031means the camera pipeline must be ready to produce the largest
18032requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
18033frame rate of a given configured stream set is governed only by the
18034largest requested stream resolution.<wbr/></li>
18035<li>Using more than one output stream in a request does not affect the
18036frame duration.<wbr/></li>
18037<li>Certain format-streams may need to do additional background processing
18038before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
18039can run concurrently to the rest of the camera pipeline,<wbr/> but
18040cannot process more than 1 capture at a time.<wbr/></li>
18041</ul>
18042<p>The necessary information for the application,<wbr/> given the model above,<wbr/>
18043is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using
18044<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
18045These are used to determine the maximum frame rate /<wbr/> minimum frame
18046duration that is possible for a given stream configuration.<wbr/></p>
18047<p>Specifically,<wbr/> the application can use the following rules to
18048determine the minimum frame duration it can request from the camera
18049device:</p>
18050<ol>
18051<li>Let the set of currently configured input/<wbr/>output streams
18052be called <code>S</code>.<wbr/></li>
18053<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking
18054it 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>
18055(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be
18056called <code>F</code>.<wbr/></li>
18057<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
18058for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
18059used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
18060</ol>
18061<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>
18062using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code>
18063determines the steady state frame rate that the application will get
18064if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of
18065request be called <code>Rsimple</code>.<wbr/></p>
18066<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
18067by a single capture of a new request <code>Rstall</code> (which has at least
18068one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
18069same minimum frame duration this will not cause a frame rate loss
18070if all buffers from the previous <code>Rstall</code> have already been
18071delivered.<wbr/></p>
18072<p>For more details about stalling,<wbr/> see
18073<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
18074<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
18075OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
18076            </td>
18077          </tr>
18078
18079          <tr class="entries_header">
18080            <th class="th_details" colspan="5">HAL Implementation Details</th>
18081          </tr>
18082          <tr class="entry_cont">
18083            <td class="entry_details" colspan="5">
18084              <p>For more details about stalling,<wbr/> see
18085<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
18086            </td>
18087          </tr>
18088
18089          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18090           <!-- end of entry -->
18091        
18092                
18093          <tr class="entry" id="controls_android.sensor.sensitivity">
18094            <td class="entry_name
18095             " rowspan="5">
18096              android.<wbr/>sensor.<wbr/>sensitivity
18097            </td>
18098            <td class="entry_type">
18099                <span class="entry_type_name">int32</span>
18100
18101              <span class="entry_type_visibility"> [public]</span>
18102
18103
18104              <span class="entry_type_hwlevel">[full] </span>
18105
18106
18107
18108
18109            </td> <!-- entry_type -->
18110
18111            <td class="entry_description">
18112              <p>The amount of gain applied to sensor data
18113before processing.<wbr/></p>
18114            </td>
18115
18116            <td class="entry_units">
18117              ISO arithmetic units
18118            </td>
18119
18120            <td class="entry_range">
18121              <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
18122            </td>
18123
18124            <td class="entry_tags">
18125              <ul class="entry_tags">
18126                  <li><a href="#tag_V1">V1</a></li>
18127              </ul>
18128            </td>
18129
18130          </tr>
18131          <tr class="entries_header">
18132            <th class="th_details" colspan="5">Details</th>
18133          </tr>
18134          <tr class="entry_cont">
18135            <td class="entry_details" colspan="5">
18136              <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
18137as defined in ISO 12232:2006.<wbr/></p>
18138<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
18139if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
18140is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
18141<p>If the camera device cannot apply the exact sensitivity
18142requested,<wbr/> it will reduce the gain to the nearest supported
18143value.<wbr/> The final sensitivity used will be available in the
18144output capture result.<wbr/></p>
18145            </td>
18146          </tr>
18147
18148          <tr class="entries_header">
18149            <th class="th_details" colspan="5">HAL Implementation Details</th>
18150          </tr>
18151          <tr class="entry_cont">
18152            <td class="entry_details" colspan="5">
18153              <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
18154            </td>
18155          </tr>
18156
18157          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18158           <!-- end of entry -->
18159        
18160                
18161          <tr class="entry" id="controls_android.sensor.testPatternData">
18162            <td class="entry_name
18163             " rowspan="5">
18164              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
18165            </td>
18166            <td class="entry_type">
18167                <span class="entry_type_name">int32</span>
18168                <span class="entry_type_container">x</span>
18169
18170                <span class="entry_type_array">
18171                  4
18172                </span>
18173              <span class="entry_type_visibility"> [public]</span>
18174
18175
18176
18177
18178
18179
18180            </td> <!-- entry_type -->
18181
18182            <td class="entry_description">
18183              <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
18184when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
18185            </td>
18186
18187            <td class="entry_units">
18188            </td>
18189
18190            <td class="entry_range">
18191            </td>
18192
18193            <td class="entry_tags">
18194            </td>
18195
18196          </tr>
18197          <tr class="entries_header">
18198            <th class="th_details" colspan="5">Details</th>
18199          </tr>
18200          <tr class="entry_cont">
18201            <td class="entry_details" colspan="5">
18202              <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
18203The camera device then uses the most significant X bits
18204that correspond to how many bits are in its Bayer raw sensor
18205output.<wbr/></p>
18206<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
1820710 most significant bits from each color channel.<wbr/></p>
18208            </td>
18209          </tr>
18210
18211          <tr class="entries_header">
18212            <th class="th_details" colspan="5">HAL Implementation Details</th>
18213          </tr>
18214          <tr class="entry_cont">
18215            <td class="entry_details" colspan="5">
18216              
18217            </td>
18218          </tr>
18219
18220          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18221           <!-- end of entry -->
18222        
18223                
18224          <tr class="entry" id="controls_android.sensor.testPatternMode">
18225            <td class="entry_name
18226             " rowspan="5">
18227              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
18228            </td>
18229            <td class="entry_type">
18230                <span class="entry_type_name entry_type_name_enum">int32</span>
18231
18232              <span class="entry_type_visibility"> [public]</span>
18233
18234
18235
18236
18237
18238                <ul class="entry_type_enum">
18239                  <li>
18240                    <span class="entry_type_enum_name">OFF</span>
18241                    <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
18242device returns captures from the image sensor.<wbr/></p>
18243<p>This is the default if the key is not set.<wbr/></p></span>
18244                  </li>
18245                  <li>
18246                    <span class="entry_type_enum_name">SOLID_COLOR</span>
18247                    <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
18248respective color channel provided in
18249<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
18250<p>For example:</p>
18251<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
18252</code></pre>
18253<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
18254<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
18255</code></pre>
18256<p>All red pixels are 100% red.<wbr/> Only the odd green pixels
18257are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
18258                  </li>
18259                  <li>
18260                    <span class="entry_type_enum_name">COLOR_BARS</span>
18261                    <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
18262<p>The vertical bars (left-to-right) are as follows:</p>
18263<ul>
18264<li>100% white</li>
18265<li>yellow</li>
18266<li>cyan</li>
18267<li>green</li>
18268<li>magenta</li>
18269<li>red</li>
18270<li>blue</li>
18271<li>black</li>
18272</ul>
18273<p>In general the image would look like the following:</p>
18274<pre><code>W Y C G M R B K
18275W Y C G M R B K
18276W Y C G M R B K
18277W Y C G M R B K
18278W Y C G M R B K
18279.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
18280.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
18281.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
18282
18283(B = Blue,<wbr/> K = Black)
18284</code></pre>
18285<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
18286When this is not possible,<wbr/> the bar size should be rounded
18287down to the nearest integer and the pattern can repeat
18288on the right side.<wbr/></p>
18289<p>Each bar's height must always take up the full sensor
18290pixel array height.<wbr/></p>
18291<p>Each pixel in this test pattern must be set to either
182920% intensity or 100% intensity.<wbr/></p></span>
18293                  </li>
18294                  <li>
18295                    <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
18296                    <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
18297each bar should start at its specified color at the top,<wbr/>
18298and fade to gray at the bottom.<wbr/></p>
18299<p>Furthermore each bar is further subdivided into a left and
18300right half.<wbr/> The left half should have a smooth gradient,<wbr/>
18301and the right half should have a quantized gradient.<wbr/></p>
18302<p>In particular,<wbr/> the right half's should consist of blocks of the
18303same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
18304<p>The least significant bits in the quantized gradient should
18305be copied from the most significant bits of the smooth gradient.<wbr/></p>
18306<p>The height of each bar should always be a multiple of 128.<wbr/>
18307When this is not the case,<wbr/> the pattern should repeat at the bottom
18308of the image.<wbr/></p></span>
18309                  </li>
18310                  <li>
18311                    <span class="entry_type_enum_name">PN9</span>
18312                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
18313generated from a PN9 512-bit sequence (typically implemented
18314in hardware with a linear feedback shift register).<wbr/></p>
18315<p>The generator should be reset at the beginning of each frame,<wbr/>
18316and thus each subsequent raw frame with this test pattern should
18317be exactly the same as the last.<wbr/></p></span>
18318                  </li>
18319                  <li>
18320                    <span class="entry_type_enum_name">CUSTOM1</span>
18321                    <span class="entry_type_enum_value">256</span>
18322                    <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
18323available only on this camera device are at least this numeric
18324value.<wbr/></p>
18325<p>All of the custom test patterns will be static
18326(that is the raw image must not vary from frame to frame).<wbr/></p></span>
18327                  </li>
18328                </ul>
18329
18330            </td> <!-- entry_type -->
18331
18332            <td class="entry_description">
18333              <p>When enabled,<wbr/> the sensor sends a test pattern instead of
18334doing a real exposure from the camera.<wbr/></p>
18335            </td>
18336
18337            <td class="entry_units">
18338            </td>
18339
18340            <td class="entry_range">
18341              <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
18342            </td>
18343
18344            <td class="entry_tags">
18345            </td>
18346
18347          </tr>
18348          <tr class="entries_header">
18349            <th class="th_details" colspan="5">Details</th>
18350          </tr>
18351          <tr class="entry_cont">
18352            <td class="entry_details" colspan="5">
18353              <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
18354by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
18355work as normal.<wbr/></p>
18356<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
18357occur (and that the test pattern remain unmodified,<wbr/> since the flash
18358would not actually affect it).<wbr/></p>
18359<p>Defaults to OFF.<wbr/></p>
18360            </td>
18361          </tr>
18362
18363          <tr class="entries_header">
18364            <th class="th_details" colspan="5">HAL Implementation Details</th>
18365          </tr>
18366          <tr class="entry_cont">
18367            <td class="entry_details" colspan="5">
18368              <p>All test patterns are specified in the Bayer domain.<wbr/></p>
18369<p>The HAL may choose to substitute test patterns from the sensor
18370with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
18371indistinguishable to the ISP whether the data came from the
18372sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
18373            </td>
18374          </tr>
18375
18376          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18377           <!-- end of entry -->
18378        
18379        
18380
18381      <!-- end of kind -->
18382      </tbody>
18383      <tr><td colspan="6" class="kind">static</td></tr>
18384
18385      <thead class="entries_header">
18386        <tr>
18387          <th class="th_name">Property Name</th>
18388          <th class="th_type">Type</th>
18389          <th class="th_description">Description</th>
18390          <th class="th_units">Units</th>
18391          <th class="th_range">Range</th>
18392          <th class="th_tags">Tags</th>
18393        </tr>
18394      </thead>
18395
18396      <tbody>
18397
18398        
18399
18400        
18401
18402        
18403
18404        
18405                
18406            
18407
18408                
18409          <tr class="entry" id="static_android.sensor.info.activeArraySize">
18410            <td class="entry_name
18411             " rowspan="5">
18412              android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
18413            </td>
18414            <td class="entry_type">
18415                <span class="entry_type_name">int32</span>
18416                <span class="entry_type_container">x</span>
18417
18418                <span class="entry_type_array">
18419                  4
18420                </span>
18421              <span class="entry_type_visibility"> [public as rectangle]</span>
18422
18423
18424              <span class="entry_type_hwlevel">[legacy] </span>
18425
18426
18427                <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
18428
18429
18430            </td> <!-- entry_type -->
18431
18432            <td class="entry_description">
18433              <p>The area of the image sensor which corresponds to active pixels after any geometric
18434distortion correction has been applied.<wbr/></p>
18435            </td>
18436
18437            <td class="entry_units">
18438              Pixel coordinates on the image sensor
18439            </td>
18440
18441            <td class="entry_range">
18442            </td>
18443
18444            <td class="entry_tags">
18445              <ul class="entry_tags">
18446                  <li><a href="#tag_RAW">RAW</a></li>
18447              </ul>
18448            </td>
18449
18450          </tr>
18451          <tr class="entries_header">
18452            <th class="th_details" colspan="5">Details</th>
18453          </tr>
18454          <tr class="entry_cont">
18455            <td class="entry_details" colspan="5">
18456              <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
18457the region that actually receives light from the scene) after any geometric correction
18458has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
18459image output formats aside from the raw formats.<wbr/></p>
18460<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
18461the full pixel array,<wbr/> and the size of the full pixel array is given by
18462<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
18463<p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
18464<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
18465this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
18466<p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
18467include black calibration pixels or other inactive regions,<wbr/> and geometric correction
18468resulting in scaling or cropping may have been applied.<wbr/></p>
18469            </td>
18470          </tr>
18471
18472          <tr class="entries_header">
18473            <th class="th_details" colspan="5">HAL Implementation Details</th>
18474          </tr>
18475          <tr class="entry_cont">
18476            <td class="entry_details" colspan="5">
18477              <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
18478&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
18479The <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>
18480            </td>
18481          </tr>
18482
18483          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18484           <!-- end of entry -->
18485        
18486                
18487          <tr class="entry" id="static_android.sensor.info.sensitivityRange">
18488            <td class="entry_name
18489             " rowspan="3">
18490              android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
18491            </td>
18492            <td class="entry_type">
18493                <span class="entry_type_name">int32</span>
18494                <span class="entry_type_container">x</span>
18495
18496                <span class="entry_type_array">
18497                  2
18498                </span>
18499              <span class="entry_type_visibility"> [public as rangeInt]</span>
18500
18501
18502              <span class="entry_type_hwlevel">[full] </span>
18503
18504
18505                <div class="entry_type_notes">Range of supported sensitivities</div>
18506
18507
18508            </td> <!-- entry_type -->
18509
18510            <td class="entry_description">
18511              <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
18512camera device.<wbr/></p>
18513            </td>
18514
18515            <td class="entry_units">
18516            </td>
18517
18518            <td class="entry_range">
18519              <p>Min &lt;= 100,<wbr/> Max &gt;= 800</p>
18520            </td>
18521
18522            <td class="entry_tags">
18523              <ul class="entry_tags">
18524                  <li><a href="#tag_BC">BC</a></li>
18525                  <li><a href="#tag_V1">V1</a></li>
18526              </ul>
18527            </td>
18528
18529          </tr>
18530          <tr class="entries_header">
18531            <th class="th_details" colspan="5">Details</th>
18532          </tr>
18533          <tr class="entry_cont">
18534            <td class="entry_details" colspan="5">
18535              <p>The values are the standard ISO sensitivity values,<wbr/>
18536as defined in ISO 12232:2006.<wbr/></p>
18537            </td>
18538          </tr>
18539
18540
18541          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18542           <!-- end of entry -->
18543        
18544                
18545          <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
18546            <td class="entry_name
18547             " rowspan="1">
18548              android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
18549            </td>
18550            <td class="entry_type">
18551                <span class="entry_type_name entry_type_name_enum">byte</span>
18552
18553              <span class="entry_type_visibility"> [public]</span>
18554
18555
18556              <span class="entry_type_hwlevel">[full] </span>
18557
18558
18559
18560                <ul class="entry_type_enum">
18561                  <li>
18562                    <span class="entry_type_enum_name">RGGB</span>
18563                  </li>
18564                  <li>
18565                    <span class="entry_type_enum_name">GRBG</span>
18566                  </li>
18567                  <li>
18568                    <span class="entry_type_enum_name">GBRG</span>
18569                  </li>
18570                  <li>
18571                    <span class="entry_type_enum_name">BGGR</span>
18572                  </li>
18573                  <li>
18574                    <span class="entry_type_enum_name">RGB</span>
18575                    <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
18576values for each pixel,<wbr/> instead of just 1 16-bit value
18577per pixel.<wbr/></p></span>
18578                  </li>
18579                </ul>
18580
18581            </td> <!-- entry_type -->
18582
18583            <td class="entry_description">
18584              <p>The arrangement of color filters on sensor;
18585represents the colors in the top-left 2x2 section of
18586the sensor,<wbr/> in reading order.<wbr/></p>
18587            </td>
18588
18589            <td class="entry_units">
18590            </td>
18591
18592            <td class="entry_range">
18593            </td>
18594
18595            <td class="entry_tags">
18596              <ul class="entry_tags">
18597                  <li><a href="#tag_RAW">RAW</a></li>
18598              </ul>
18599            </td>
18600
18601          </tr>
18602
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="static_android.sensor.info.exposureTimeRange">
18609            <td class="entry_name
18610             " rowspan="3">
18611              android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
18612            </td>
18613            <td class="entry_type">
18614                <span class="entry_type_name">int64</span>
18615                <span class="entry_type_container">x</span>
18616
18617                <span class="entry_type_array">
18618                  2
18619                </span>
18620              <span class="entry_type_visibility"> [public as rangeLong]</span>
18621
18622
18623              <span class="entry_type_hwlevel">[full] </span>
18624
18625
18626                <div class="entry_type_notes">nanoseconds</div>
18627
18628
18629            </td> <!-- entry_type -->
18630
18631            <td class="entry_description">
18632              <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
18633by this camera device.<wbr/></p>
18634            </td>
18635
18636            <td class="entry_units">
18637              Nanoseconds
18638            </td>
18639
18640            <td class="entry_range">
18641              <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
18642capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
18643the maximum exposure time will be greater than 100ms.<wbr/></p>
18644            </td>
18645
18646            <td class="entry_tags">
18647              <ul class="entry_tags">
18648                  <li><a href="#tag_V1">V1</a></li>
18649              </ul>
18650            </td>
18651
18652          </tr>
18653
18654          <tr class="entries_header">
18655            <th class="th_details" colspan="5">HAL Implementation Details</th>
18656          </tr>
18657          <tr class="entry_cont">
18658            <td class="entry_details" colspan="5">
18659              <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
18660The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
18661100ms.<wbr/></p>
18662            </td>
18663          </tr>
18664
18665          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18666           <!-- end of entry -->
18667        
18668                
18669          <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
18670            <td class="entry_name
18671             " rowspan="5">
18672              android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
18673            </td>
18674            <td class="entry_type">
18675                <span class="entry_type_name">int64</span>
18676
18677              <span class="entry_type_visibility"> [public]</span>
18678
18679
18680              <span class="entry_type_hwlevel">[full] </span>
18681
18682
18683
18684
18685            </td> <!-- entry_type -->
18686
18687            <td class="entry_description">
18688              <p>The maximum possible frame duration (minimum frame rate) for
18689<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
18690            </td>
18691
18692            <td class="entry_units">
18693              Nanoseconds
18694            </td>
18695
18696            <td class="entry_range">
18697              <p>For FULL capability devices
18698(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
18699            </td>
18700
18701            <td class="entry_tags">
18702              <ul class="entry_tags">
18703                  <li><a href="#tag_V1">V1</a></li>
18704              </ul>
18705            </td>
18706
18707          </tr>
18708          <tr class="entries_header">
18709            <th class="th_details" colspan="5">Details</th>
18710          </tr>
18711          <tr class="entry_cont">
18712            <td class="entry_details" colspan="5">
18713              <p>Attempting to use frame durations beyond the maximum will result in the frame
18714duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
18715durations.<wbr/></p>
18716<p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
18717for the minimum frame duration values.<wbr/></p>
18718            </td>
18719          </tr>
18720
18721          <tr class="entries_header">
18722            <th class="th_details" colspan="5">HAL Implementation Details</th>
18723          </tr>
18724          <tr class="entry_cont">
18725            <td class="entry_details" colspan="5">
18726              <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
18727The maximum of the range SHOULD be at least
187281 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
18729<p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
18730equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
18731value (since exposure time overrides frame duration).<wbr/></p>
18732<p>Available minimum frame durations for JPEG must be no greater
18733than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
18734minimum frame durations (for that respective size).<wbr/></p>
18735<p>Since JPEG processing is considered offline and can take longer than
18736a single uncompressed capture,<wbr/> refer to
18737<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
18738for details about encoding this scenario.<wbr/></p>
18739            </td>
18740          </tr>
18741
18742          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18743           <!-- end of entry -->
18744        
18745                
18746          <tr class="entry" id="static_android.sensor.info.physicalSize">
18747            <td class="entry_name
18748             " rowspan="5">
18749              android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
18750            </td>
18751            <td class="entry_type">
18752                <span class="entry_type_name">float</span>
18753                <span class="entry_type_container">x</span>
18754
18755                <span class="entry_type_array">
18756                  2
18757                </span>
18758              <span class="entry_type_visibility"> [public as sizeF]</span>
18759
18760
18761              <span class="entry_type_hwlevel">[legacy] </span>
18762
18763
18764                <div class="entry_type_notes">width x height</div>
18765
18766
18767            </td> <!-- entry_type -->
18768
18769            <td class="entry_description">
18770              <p>The physical dimensions of the full pixel
18771array.<wbr/></p>
18772            </td>
18773
18774            <td class="entry_units">
18775              Millimeters
18776            </td>
18777
18778            <td class="entry_range">
18779            </td>
18780
18781            <td class="entry_tags">
18782              <ul class="entry_tags">
18783                  <li><a href="#tag_V1">V1</a></li>
18784                  <li><a href="#tag_BC">BC</a></li>
18785              </ul>
18786            </td>
18787
18788          </tr>
18789          <tr class="entries_header">
18790            <th class="th_details" colspan="5">Details</th>
18791          </tr>
18792          <tr class="entry_cont">
18793            <td class="entry_details" colspan="5">
18794              <p>This is the physical size of the sensor pixel
18795array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
18796            </td>
18797          </tr>
18798
18799          <tr class="entries_header">
18800            <th class="th_details" colspan="5">HAL Implementation Details</th>
18801          </tr>
18802          <tr class="entry_cont">
18803            <td class="entry_details" colspan="5">
18804              <p>Needed for FOV calculation for old API</p>
18805            </td>
18806          </tr>
18807
18808          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18809           <!-- end of entry -->
18810        
18811                
18812          <tr class="entry" id="static_android.sensor.info.pixelArraySize">
18813            <td class="entry_name
18814             " rowspan="3">
18815              android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
18816            </td>
18817            <td class="entry_type">
18818                <span class="entry_type_name">int32</span>
18819                <span class="entry_type_container">x</span>
18820
18821                <span class="entry_type_array">
18822                  2
18823                </span>
18824              <span class="entry_type_visibility"> [public as size]</span>
18825
18826
18827              <span class="entry_type_hwlevel">[legacy] </span>
18828
18829
18830
18831
18832            </td> <!-- entry_type -->
18833
18834            <td class="entry_description">
18835              <p>Dimensions of the full pixel array,<wbr/> possibly
18836including black calibration pixels.<wbr/></p>
18837            </td>
18838
18839            <td class="entry_units">
18840              Pixels
18841            </td>
18842
18843            <td class="entry_range">
18844            </td>
18845
18846            <td class="entry_tags">
18847              <ul class="entry_tags">
18848                  <li><a href="#tag_RAW">RAW</a></li>
18849                  <li><a href="#tag_BC">BC</a></li>
18850              </ul>
18851            </td>
18852
18853          </tr>
18854          <tr class="entries_header">
18855            <th class="th_details" colspan="5">Details</th>
18856          </tr>
18857          <tr class="entry_cont">
18858            <td class="entry_details" colspan="5">
18859              <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
18860<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
18861the raw buffers produced by this sensor.<wbr/></p>
18862<p>If a camera device supports raw sensor formats,<wbr/> either this or
18863<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
18864output formats listed in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> (this depends on
18865whether or not the image sensor returns buffers containing pixels that are not
18866part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
18867<p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
18868or 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
18869defines the rectangle of active pixels that will be included in processed image
18870formats.<wbr/></p>
18871            </td>
18872          </tr>
18873
18874
18875          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18876           <!-- end of entry -->
18877        
18878                
18879          <tr class="entry" id="static_android.sensor.info.whiteLevel">
18880            <td class="entry_name
18881             " rowspan="5">
18882              android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
18883            </td>
18884            <td class="entry_type">
18885                <span class="entry_type_name">int32</span>
18886
18887              <span class="entry_type_visibility"> [public]</span>
18888
18889
18890
18891
18892
18893
18894            </td> <!-- entry_type -->
18895
18896            <td class="entry_description">
18897              <p>Maximum raw value output by sensor.<wbr/></p>
18898            </td>
18899
18900            <td class="entry_units">
18901            </td>
18902
18903            <td class="entry_range">
18904              <p>&gt; 255 (8-bit output)</p>
18905            </td>
18906
18907            <td class="entry_tags">
18908              <ul class="entry_tags">
18909                  <li><a href="#tag_RAW">RAW</a></li>
18910              </ul>
18911            </td>
18912
18913          </tr>
18914          <tr class="entries_header">
18915            <th class="th_details" colspan="5">Details</th>
18916          </tr>
18917          <tr class="entry_cont">
18918            <td class="entry_details" colspan="5">
18919              <p>This specifies the fully-saturated encoding level for the raw
18920sample values from the sensor.<wbr/>  This is typically caused by the
18921sensor becoming highly non-linear or clipping.<wbr/> The minimum for
18922each channel is specified by the offset in the
18923<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
18924<p>The white level is typically determined either by sensor bit depth
18925(8-14 bits is expected),<wbr/> or by the point where the sensor response
18926becomes too non-linear to be useful.<wbr/>  The default value for this is
18927maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
18928            </td>
18929          </tr>
18930
18931          <tr class="entries_header">
18932            <th class="th_details" colspan="5">HAL Implementation Details</th>
18933          </tr>
18934          <tr class="entry_cont">
18935            <td class="entry_details" colspan="5">
18936              <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
18937so the value for linear sensors should not be significantly lower
18938than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
18939            </td>
18940          </tr>
18941
18942          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18943           <!-- end of entry -->
18944        
18945                
18946          <tr class="entry" id="static_android.sensor.info.timestampSource">
18947            <td class="entry_name
18948             " rowspan="3">
18949              android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
18950            </td>
18951            <td class="entry_type">
18952                <span class="entry_type_name entry_type_name_enum">byte</span>
18953
18954              <span class="entry_type_visibility"> [public]</span>
18955
18956
18957              <span class="entry_type_hwlevel">[legacy] </span>
18958
18959
18960
18961                <ul class="entry_type_enum">
18962                  <li>
18963                    <span class="entry_type_enum_name">UNKNOWN</span>
18964                    <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/>
18965but can not be compared to timestamps from other subsystems
18966(e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
18967camera devices in the same system.<wbr/> Timestamps between streams and results for
18968a single camera instance are comparable,<wbr/> and the timestamps for all buffers
18969and the result metadata generated by a single capture are identical.<wbr/></p></span>
18970                  </li>
18971                  <li>
18972                    <span class="entry_type_enum_name">REALTIME</span>
18973                    <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
18974<a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
18975and they can be compared to other timestamps using that base.<wbr/></p></span>
18976                  </li>
18977                </ul>
18978
18979            </td> <!-- entry_type -->
18980
18981            <td class="entry_description">
18982              <p>The time base source for sensor capture start timestamps.<wbr/></p>
18983            </td>
18984
18985            <td class="entry_units">
18986            </td>
18987
18988            <td class="entry_range">
18989            </td>
18990
18991            <td class="entry_tags">
18992              <ul class="entry_tags">
18993                  <li><a href="#tag_V1">V1</a></li>
18994              </ul>
18995            </td>
18996
18997          </tr>
18998          <tr class="entries_header">
18999            <th class="th_details" colspan="5">Details</th>
19000          </tr>
19001          <tr class="entry_cont">
19002            <td class="entry_details" colspan="5">
19003              <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
19004may not based on a time source that can be compared to other system time sources.<wbr/></p>
19005<p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
19006can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
19007            </td>
19008          </tr>
19009
19010
19011          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19012           <!-- end of entry -->
19013        
19014                
19015          <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
19016            <td class="entry_name
19017             " rowspan="3">
19018              android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
19019            </td>
19020            <td class="entry_type">
19021                <span class="entry_type_name entry_type_name_enum">byte</span>
19022
19023              <span class="entry_type_visibility"> [public as boolean]</span>
19024
19025
19026
19027
19028
19029                <ul class="entry_type_enum">
19030                  <li>
19031                    <span class="entry_type_enum_name">FALSE</span>
19032                  </li>
19033                  <li>
19034                    <span class="entry_type_enum_name">TRUE</span>
19035                  </li>
19036                </ul>
19037
19038            </td> <!-- entry_type -->
19039
19040            <td class="entry_description">
19041              <p>Whether the RAW images output from this camera device are subject to
19042lens shading correction.<wbr/></p>
19043            </td>
19044
19045            <td class="entry_units">
19046            </td>
19047
19048            <td class="entry_range">
19049            </td>
19050
19051            <td class="entry_tags">
19052            </td>
19053
19054          </tr>
19055          <tr class="entries_header">
19056            <th class="th_details" colspan="5">Details</th>
19057          </tr>
19058          <tr class="entry_cont">
19059            <td class="entry_details" colspan="5">
19060              <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
19061have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
19062not be adjusted for lens shading correction.<wbr/>
19063See <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>
19064<p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
19065Devices with RAW capability will always report this information in this key.<wbr/></p>
19066            </td>
19067          </tr>
19068
19069
19070          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19071           <!-- end of entry -->
19072        
19073                
19074          <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
19075            <td class="entry_name
19076             " rowspan="5">
19077              android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
19078            </td>
19079            <td class="entry_type">
19080                <span class="entry_type_name">int32</span>
19081                <span class="entry_type_container">x</span>
19082
19083                <span class="entry_type_array">
19084                  4
19085                </span>
19086              <span class="entry_type_visibility"> [public as rectangle]</span>
19087
19088
19089              <span class="entry_type_hwlevel">[legacy] </span>
19090
19091
19092                <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
19093
19094
19095            </td> <!-- entry_type -->
19096
19097            <td class="entry_description">
19098              <p>The area of the image sensor which corresponds to active pixels prior to the
19099application of any geometric distortion correction.<wbr/></p>
19100            </td>
19101
19102            <td class="entry_units">
19103              Pixel coordinates on the image sensor
19104            </td>
19105
19106            <td class="entry_range">
19107            </td>
19108
19109            <td class="entry_tags">
19110              <ul class="entry_tags">
19111                  <li><a href="#tag_RAW">RAW</a></li>
19112              </ul>
19113            </td>
19114
19115          </tr>
19116          <tr class="entries_header">
19117            <th class="th_details" colspan="5">Details</th>
19118          </tr>
19119          <tr class="entry_cont">
19120            <td class="entry_details" colspan="5">
19121              <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
19122the region that actually receives light from the scene) before any geometric correction
19123has been applied,<wbr/> and should be treated as the active region rectangle for any of the
19124raw formats.<wbr/>  All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
19125correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
19126the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
19127<p>The size of this region determines the maximum field of view and the maximum number of
19128pixels that an image from this sensor can contain,<wbr/> prior to the application of
19129geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
19130post-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>
19131field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
19132can be calculated by applying the geometric distortion correction fields to this
19133rectangle,<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>
19134<p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
19135dimensions 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/>
19136(x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in
19137<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
19138<ol>
19139<li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
19140<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
19141to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
19142<li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
19143(x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
19144buffers is defined relative to the top,<wbr/> left of the
19145<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>
19146<li>If the resulting corrected pixel coordinate is within the region given in
19147<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
19148processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
19149when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
19150</ol>
19151<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>
19152is (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/>
19153<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
19154correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
19155pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
19156with 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)
19157relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
19158<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19159<p>The currently supported fields that correct for geometric distortion are:</p>
19160<ol>
19161<li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>.<wbr/></li>
19162</ol>
19163<p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same
19164as the post-distortion-corrected rectangle given in
19165<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19166<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
19167the full pixel array,<wbr/> and the size of the full pixel array is given by
19168<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19169<p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
19170full array may include black calibration pixels or other inactive regions.<wbr/></p>
19171            </td>
19172          </tr>
19173
19174          <tr class="entries_header">
19175            <th class="th_details" colspan="5">HAL Implementation Details</th>
19176          </tr>
19177          <tr class="entry_cont">
19178            <td class="entry_details" colspan="5">
19179              <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
19180&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
19181The <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>
19182<p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
19183the same as the post-correction active array region given in
19184<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19185            </td>
19186          </tr>
19187
19188          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19189           <!-- end of entry -->
19190        
19191        
19192        
19193
19194                
19195          <tr class="entry" id="static_android.sensor.referenceIlluminant1">
19196            <td class="entry_name
19197             " rowspan="5">
19198              android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
19199            </td>
19200            <td class="entry_type">
19201                <span class="entry_type_name entry_type_name_enum">byte</span>
19202
19203              <span class="entry_type_visibility"> [public]</span>
19204
19205
19206
19207
19208
19209                <ul class="entry_type_enum">
19210                  <li>
19211                    <span class="entry_type_enum_name">DAYLIGHT</span>
19212                    <span class="entry_type_enum_value">1</span>
19213                  </li>
19214                  <li>
19215                    <span class="entry_type_enum_name">FLUORESCENT</span>
19216                    <span class="entry_type_enum_value">2</span>
19217                  </li>
19218                  <li>
19219                    <span class="entry_type_enum_name">TUNGSTEN</span>
19220                    <span class="entry_type_enum_value">3</span>
19221                    <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
19222                  </li>
19223                  <li>
19224                    <span class="entry_type_enum_name">FLASH</span>
19225                    <span class="entry_type_enum_value">4</span>
19226                  </li>
19227                  <li>
19228                    <span class="entry_type_enum_name">FINE_WEATHER</span>
19229                    <span class="entry_type_enum_value">9</span>
19230                  </li>
19231                  <li>
19232                    <span class="entry_type_enum_name">CLOUDY_WEATHER</span>
19233                    <span class="entry_type_enum_value">10</span>
19234                  </li>
19235                  <li>
19236                    <span class="entry_type_enum_name">SHADE</span>
19237                    <span class="entry_type_enum_value">11</span>
19238                  </li>
19239                  <li>
19240                    <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span>
19241                    <span class="entry_type_enum_value">12</span>
19242                    <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
19243                  </li>
19244                  <li>
19245                    <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span>
19246                    <span class="entry_type_enum_value">13</span>
19247                    <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
19248                  </li>
19249                  <li>
19250                    <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span>
19251                    <span class="entry_type_enum_value">14</span>
19252                    <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
19253                  </li>
19254                  <li>
19255                    <span class="entry_type_enum_name">WHITE_FLUORESCENT</span>
19256                    <span class="entry_type_enum_value">15</span>
19257                    <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
19258                  </li>
19259                  <li>
19260                    <span class="entry_type_enum_name">STANDARD_A</span>
19261                    <span class="entry_type_enum_value">17</span>
19262                  </li>
19263                  <li>
19264                    <span class="entry_type_enum_name">STANDARD_B</span>
19265                    <span class="entry_type_enum_value">18</span>
19266                  </li>
19267                  <li>
19268                    <span class="entry_type_enum_name">STANDARD_C</span>
19269                    <span class="entry_type_enum_value">19</span>
19270                  </li>
19271                  <li>
19272                    <span class="entry_type_enum_name">D55</span>
19273                    <span class="entry_type_enum_value">20</span>
19274                  </li>
19275                  <li>
19276                    <span class="entry_type_enum_name">D65</span>
19277                    <span class="entry_type_enum_value">21</span>
19278                  </li>
19279                  <li>
19280                    <span class="entry_type_enum_name">D75</span>
19281                    <span class="entry_type_enum_value">22</span>
19282                  </li>
19283                  <li>
19284                    <span class="entry_type_enum_name">D50</span>
19285                    <span class="entry_type_enum_value">23</span>
19286                  </li>
19287                  <li>
19288                    <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span>
19289                    <span class="entry_type_enum_value">24</span>
19290                  </li>
19291                </ul>
19292
19293            </td> <!-- entry_type -->
19294
19295            <td class="entry_description">
19296              <p>The standard reference illuminant used as the scene light source when
19297calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
19298<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
19299<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
19300            </td>
19301
19302            <td class="entry_units">
19303            </td>
19304
19305            <td class="entry_range">
19306            </td>
19307
19308            <td class="entry_tags">
19309              <ul class="entry_tags">
19310                  <li><a href="#tag_RAW">RAW</a></li>
19311              </ul>
19312            </td>
19313
19314          </tr>
19315          <tr class="entries_header">
19316            <th class="th_details" colspan="5">Details</th>
19317          </tr>
19318          <tr class="entry_cont">
19319            <td class="entry_details" colspan="5">
19320              <p>The values in this key correspond to the values defined for the
19321EXIF LightSource tag.<wbr/> These illuminants are standard light sources
19322that are often used calibrating camera devices.<wbr/></p>
19323<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
19324<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
19325<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
19326<p>Some devices may choose to provide a second set of calibration
19327information for improved quality,<wbr/> including
19328<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
19329            </td>
19330          </tr>
19331
19332          <tr class="entries_header">
19333            <th class="th_details" colspan="5">HAL Implementation Details</th>
19334          </tr>
19335          <tr class="entry_cont">
19336            <td class="entry_details" colspan="5">
19337              <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
19338and corresponding matrices must be present to support the RAW capability
19339and DNG output.<wbr/></p>
19340<p>When producing raw images with a color profile that has only been
19341calibrated against a single light source,<wbr/> it is valid to omit
19342<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
19343<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/>
19344and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
19345<p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
19346chosen so that it is representative of typical scene lighting.<wbr/>  In
19347general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
19348<p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
19349<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
19350chosen to represent the typical range of scene lighting conditions.<wbr/>
19351In general,<wbr/> low color temperature illuminant such as Standard-A will
19352be chosen for the first reference illuminant and a higher color
19353temperature illuminant such as D65 will be chosen for the second
19354reference illuminant.<wbr/></p>
19355            </td>
19356          </tr>
19357
19358          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19359           <!-- end of entry -->
19360        
19361                
19362          <tr class="entry" id="static_android.sensor.referenceIlluminant2">
19363            <td class="entry_name
19364             " rowspan="3">
19365              android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
19366            </td>
19367            <td class="entry_type">
19368                <span class="entry_type_name">byte</span>
19369
19370              <span class="entry_type_visibility"> [public]</span>
19371
19372
19373
19374
19375
19376
19377            </td> <!-- entry_type -->
19378
19379            <td class="entry_description">
19380              <p>The standard reference illuminant used as the scene light source when
19381calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
19382<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
19383<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
19384            </td>
19385
19386            <td class="entry_units">
19387            </td>
19388
19389            <td class="entry_range">
19390              <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
19391            </td>
19392
19393            <td class="entry_tags">
19394              <ul class="entry_tags">
19395                  <li><a href="#tag_RAW">RAW</a></li>
19396              </ul>
19397            </td>
19398
19399          </tr>
19400          <tr class="entries_header">
19401            <th class="th_details" colspan="5">Details</th>
19402          </tr>
19403          <tr class="entry_cont">
19404            <td class="entry_details" colspan="5">
19405              <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
19406<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
19407<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
19408<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
19409            </td>
19410          </tr>
19411
19412
19413          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19414           <!-- end of entry -->
19415        
19416                
19417          <tr class="entry" id="static_android.sensor.calibrationTransform1">
19418            <td class="entry_name
19419             " rowspan="3">
19420              android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
19421            </td>
19422            <td class="entry_type">
19423                <span class="entry_type_name">rational</span>
19424                <span class="entry_type_container">x</span>
19425
19426                <span class="entry_type_array">
19427                  3 x 3
19428                </span>
19429              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19430
19431
19432
19433
19434                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19435
19436
19437            </td> <!-- entry_type -->
19438
19439            <td class="entry_description">
19440              <p>A per-device calibration transform matrix that maps from the
19441reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
19442            </td>
19443
19444            <td class="entry_units">
19445            </td>
19446
19447            <td class="entry_range">
19448            </td>
19449
19450            <td class="entry_tags">
19451              <ul class="entry_tags">
19452                  <li><a href="#tag_RAW">RAW</a></li>
19453              </ul>
19454            </td>
19455
19456          </tr>
19457          <tr class="entries_header">
19458            <th class="th_details" colspan="5">Details</th>
19459          </tr>
19460          <tr class="entry_cont">
19461            <td class="entry_details" colspan="5">
19462              <p>This matrix is used to correct for per-device variations in the
19463sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
19464<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
19465contains a per-device calibration transform that maps colors
19466from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
19467colorspace) into this camera device's native sensor color
19468space under the first reference illuminant
19469(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
19470            </td>
19471          </tr>
19472
19473
19474          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19475           <!-- end of entry -->
19476        
19477                
19478          <tr class="entry" id="static_android.sensor.calibrationTransform2">
19479            <td class="entry_name
19480             " rowspan="3">
19481              android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
19482            </td>
19483            <td class="entry_type">
19484                <span class="entry_type_name">rational</span>
19485                <span class="entry_type_container">x</span>
19486
19487                <span class="entry_type_array">
19488                  3 x 3
19489                </span>
19490              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19491
19492
19493
19494
19495                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19496
19497
19498            </td> <!-- entry_type -->
19499
19500            <td class="entry_description">
19501              <p>A per-device calibration transform matrix that maps from the
19502reference sensor colorspace to the actual device sensor colorspace
19503(this is the colorspace of the raw buffer data).<wbr/></p>
19504            </td>
19505
19506            <td class="entry_units">
19507            </td>
19508
19509            <td class="entry_range">
19510            </td>
19511
19512            <td class="entry_tags">
19513              <ul class="entry_tags">
19514                  <li><a href="#tag_RAW">RAW</a></li>
19515              </ul>
19516            </td>
19517
19518          </tr>
19519          <tr class="entries_header">
19520            <th class="th_details" colspan="5">Details</th>
19521          </tr>
19522          <tr class="entry_cont">
19523            <td class="entry_details" colspan="5">
19524              <p>This matrix is used to correct for per-device variations in the
19525sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
19526<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
19527contains a per-device calibration transform that maps colors
19528from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
19529colorspace) into this camera device's native sensor color
19530space under the second reference illuminant
19531(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
19532<p>This matrix will only be present if the second reference
19533illuminant is present.<wbr/></p>
19534            </td>
19535          </tr>
19536
19537
19538          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19539           <!-- end of entry -->
19540        
19541                
19542          <tr class="entry" id="static_android.sensor.colorTransform1">
19543            <td class="entry_name
19544             " rowspan="3">
19545              android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
19546            </td>
19547            <td class="entry_type">
19548                <span class="entry_type_name">rational</span>
19549                <span class="entry_type_container">x</span>
19550
19551                <span class="entry_type_array">
19552                  3 x 3
19553                </span>
19554              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19555
19556
19557
19558
19559                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19560
19561
19562            </td> <!-- entry_type -->
19563
19564            <td class="entry_description">
19565              <p>A matrix that transforms color values from CIE XYZ color space to
19566reference sensor color space.<wbr/></p>
19567            </td>
19568
19569            <td class="entry_units">
19570            </td>
19571
19572            <td class="entry_range">
19573            </td>
19574
19575            <td class="entry_tags">
19576              <ul class="entry_tags">
19577                  <li><a href="#tag_RAW">RAW</a></li>
19578              </ul>
19579            </td>
19580
19581          </tr>
19582          <tr class="entries_header">
19583            <th class="th_details" colspan="5">Details</th>
19584          </tr>
19585          <tr class="entry_cont">
19586            <td class="entry_details" colspan="5">
19587              <p>This matrix is used to convert from the standard CIE XYZ color
19588space to the reference sensor colorspace,<wbr/> and is used when processing
19589raw buffer data.<wbr/></p>
19590<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
19591contains a color transform matrix that maps colors from the CIE
19592XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
19593"golden module" colorspace) under the first reference illuminant
19594(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
19595<p>The white points chosen in both the reference sensor color space
19596and the CIE XYZ colorspace when calculating this transform will
19597match the standard white point for the first reference illuminant
19598(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
19599            </td>
19600          </tr>
19601
19602
19603          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19604           <!-- end of entry -->
19605        
19606                
19607          <tr class="entry" id="static_android.sensor.colorTransform2">
19608            <td class="entry_name
19609             " rowspan="3">
19610              android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
19611            </td>
19612            <td class="entry_type">
19613                <span class="entry_type_name">rational</span>
19614                <span class="entry_type_container">x</span>
19615
19616                <span class="entry_type_array">
19617                  3 x 3
19618                </span>
19619              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19620
19621
19622
19623
19624                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19625
19626
19627            </td> <!-- entry_type -->
19628
19629            <td class="entry_description">
19630              <p>A matrix that transforms color values from CIE XYZ color space to
19631reference sensor color space.<wbr/></p>
19632            </td>
19633
19634            <td class="entry_units">
19635            </td>
19636
19637            <td class="entry_range">
19638            </td>
19639
19640            <td class="entry_tags">
19641              <ul class="entry_tags">
19642                  <li><a href="#tag_RAW">RAW</a></li>
19643              </ul>
19644            </td>
19645
19646          </tr>
19647          <tr class="entries_header">
19648            <th class="th_details" colspan="5">Details</th>
19649          </tr>
19650          <tr class="entry_cont">
19651            <td class="entry_details" colspan="5">
19652              <p>This matrix is used to convert from the standard CIE XYZ color
19653space to the reference sensor colorspace,<wbr/> and is used when processing
19654raw buffer data.<wbr/></p>
19655<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
19656contains a color transform matrix that maps colors from the CIE
19657XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
19658"golden module" colorspace) under the second reference illuminant
19659(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
19660<p>The white points chosen in both the reference sensor color space
19661and the CIE XYZ colorspace when calculating this transform will
19662match the standard white point for the second reference illuminant
19663(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
19664<p>This matrix will only be present if the second reference
19665illuminant is present.<wbr/></p>
19666            </td>
19667          </tr>
19668
19669
19670          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19671           <!-- end of entry -->
19672        
19673                
19674          <tr class="entry" id="static_android.sensor.forwardMatrix1">
19675            <td class="entry_name
19676             " rowspan="3">
19677              android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
19678            </td>
19679            <td class="entry_type">
19680                <span class="entry_type_name">rational</span>
19681                <span class="entry_type_container">x</span>
19682
19683                <span class="entry_type_array">
19684                  3 x 3
19685                </span>
19686              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19687
19688
19689
19690
19691                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19692
19693
19694            </td> <!-- entry_type -->
19695
19696            <td class="entry_description">
19697              <p>A matrix that transforms white balanced camera colors from the reference
19698sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
19699            </td>
19700
19701            <td class="entry_units">
19702            </td>
19703
19704            <td class="entry_range">
19705            </td>
19706
19707            <td class="entry_tags">
19708              <ul class="entry_tags">
19709                  <li><a href="#tag_RAW">RAW</a></li>
19710              </ul>
19711            </td>
19712
19713          </tr>
19714          <tr class="entries_header">
19715            <th class="th_details" colspan="5">Details</th>
19716          </tr>
19717          <tr class="entry_cont">
19718            <td class="entry_details" colspan="5">
19719              <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
19720is used when processing raw buffer data.<wbr/></p>
19721<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
19722a color transform matrix that maps white balanced colors from the
19723reference sensor color space to the CIE XYZ color space with a D50 white
19724point.<wbr/></p>
19725<p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
19726this matrix is chosen so that the standard white point for this reference
19727illuminant in the reference sensor colorspace is mapped to D50 in the
19728CIE XYZ colorspace.<wbr/></p>
19729            </td>
19730          </tr>
19731
19732
19733          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19734           <!-- end of entry -->
19735        
19736                
19737          <tr class="entry" id="static_android.sensor.forwardMatrix2">
19738            <td class="entry_name
19739             " rowspan="3">
19740              android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
19741            </td>
19742            <td class="entry_type">
19743                <span class="entry_type_name">rational</span>
19744                <span class="entry_type_container">x</span>
19745
19746                <span class="entry_type_array">
19747                  3 x 3
19748                </span>
19749              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19750
19751
19752
19753
19754                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19755
19756
19757            </td> <!-- entry_type -->
19758
19759            <td class="entry_description">
19760              <p>A matrix that transforms white balanced camera colors from the reference
19761sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
19762            </td>
19763
19764            <td class="entry_units">
19765            </td>
19766
19767            <td class="entry_range">
19768            </td>
19769
19770            <td class="entry_tags">
19771              <ul class="entry_tags">
19772                  <li><a href="#tag_RAW">RAW</a></li>
19773              </ul>
19774            </td>
19775
19776          </tr>
19777          <tr class="entries_header">
19778            <th class="th_details" colspan="5">Details</th>
19779          </tr>
19780          <tr class="entry_cont">
19781            <td class="entry_details" colspan="5">
19782              <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
19783is used when processing raw buffer data.<wbr/></p>
19784<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
19785a color transform matrix that maps white balanced colors from the
19786reference sensor color space to the CIE XYZ color space with a D50 white
19787point.<wbr/></p>
19788<p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
19789this matrix is chosen so that the standard white point for this reference
19790illuminant in the reference sensor colorspace is mapped to D50 in the
19791CIE XYZ colorspace.<wbr/></p>
19792<p>This matrix will only be present if the second reference
19793illuminant is present.<wbr/></p>
19794            </td>
19795          </tr>
19796
19797
19798          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19799           <!-- end of entry -->
19800        
19801                
19802          <tr class="entry" id="static_android.sensor.baseGainFactor">
19803            <td class="entry_name
19804             " rowspan="1">
19805              android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
19806            </td>
19807            <td class="entry_type">
19808                <span class="entry_type_name">rational</span>
19809
19810              <span class="entry_type_visibility"> [system]</span>
19811
19812
19813
19814
19815
19816
19817            </td> <!-- entry_type -->
19818
19819            <td class="entry_description">
19820              <p>Gain factor from electrons to raw units when
19821ISO=100</p>
19822            </td>
19823
19824            <td class="entry_units">
19825            </td>
19826
19827            <td class="entry_range">
19828            </td>
19829
19830            <td class="entry_tags">
19831              <ul class="entry_tags">
19832                  <li><a href="#tag_FUTURE">FUTURE</a></li>
19833              </ul>
19834            </td>
19835
19836          </tr>
19837
19838
19839          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19840           <!-- end of entry -->
19841        
19842                
19843          <tr class="entry" id="static_android.sensor.blackLevelPattern">
19844            <td class="entry_name
19845             " rowspan="5">
19846              android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
19847            </td>
19848            <td class="entry_type">
19849                <span class="entry_type_name">int32</span>
19850                <span class="entry_type_container">x</span>
19851
19852                <span class="entry_type_array">
19853                  4
19854                </span>
19855              <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
19856
19857
19858
19859
19860                <div class="entry_type_notes">2x2 raw count block</div>
19861
19862
19863            </td> <!-- entry_type -->
19864
19865            <td class="entry_description">
19866              <p>A fixed black level offset for each of the color filter arrangement
19867(CFA) mosaic channels.<wbr/></p>
19868            </td>
19869
19870            <td class="entry_units">
19871            </td>
19872
19873            <td class="entry_range">
19874              <p>&gt;= 0 for each.<wbr/></p>
19875            </td>
19876
19877            <td class="entry_tags">
19878              <ul class="entry_tags">
19879                  <li><a href="#tag_RAW">RAW</a></li>
19880              </ul>
19881            </td>
19882
19883          </tr>
19884          <tr class="entries_header">
19885            <th class="th_details" colspan="5">Details</th>
19886          </tr>
19887          <tr class="entry_cont">
19888            <td class="entry_details" colspan="5">
19889              <p>This key specifies the zero light value for each of the CFA mosaic
19890channels in the camera sensor.<wbr/>  The maximal value output by the
19891sensor 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>
19892<p>The values are given in the same order as channels listed for the CFA
19893layout 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
19894nth value given corresponds to the black level offset for the nth
19895color channel listed in the CFA.<wbr/></p>
19896            </td>
19897          </tr>
19898
19899          <tr class="entries_header">
19900            <th class="th_details" colspan="5">HAL Implementation Details</th>
19901          </tr>
19902          <tr class="entry_cont">
19903            <td class="entry_details" colspan="5">
19904              <p>The values are given in row-column scan order,<wbr/> with the first value
19905corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
19906            </td>
19907          </tr>
19908
19909          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19910           <!-- end of entry -->
19911        
19912                
19913          <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
19914            <td class="entry_name
19915             " rowspan="3">
19916              android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
19917            </td>
19918            <td class="entry_type">
19919                <span class="entry_type_name">int32</span>
19920
19921              <span class="entry_type_visibility"> [public]</span>
19922
19923
19924              <span class="entry_type_hwlevel">[full] </span>
19925
19926
19927
19928
19929            </td> <!-- entry_type -->
19930
19931            <td class="entry_description">
19932              <p>Maximum sensitivity that is implemented
19933purely through analog gain.<wbr/></p>
19934            </td>
19935
19936            <td class="entry_units">
19937            </td>
19938
19939            <td class="entry_range">
19940            </td>
19941
19942            <td class="entry_tags">
19943              <ul class="entry_tags">
19944                  <li><a href="#tag_V1">V1</a></li>
19945                  <li><a href="#tag_FULL">FULL</a></li>
19946              </ul>
19947            </td>
19948
19949          </tr>
19950          <tr class="entries_header">
19951            <th class="th_details" colspan="5">Details</th>
19952          </tr>
19953          <tr class="entry_cont">
19954            <td class="entry_details" colspan="5">
19955              <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
19956equal to this,<wbr/> all applied gain must be analog.<wbr/> For
19957values above this,<wbr/> the gain applied can be a mix of analog and
19958digital.<wbr/></p>
19959            </td>
19960          </tr>
19961
19962
19963          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19964           <!-- end of entry -->
19965        
19966                
19967          <tr class="entry" id="static_android.sensor.orientation">
19968            <td class="entry_name
19969             " rowspan="3">
19970              android.<wbr/>sensor.<wbr/>orientation
19971            </td>
19972            <td class="entry_type">
19973                <span class="entry_type_name">int32</span>
19974
19975              <span class="entry_type_visibility"> [public]</span>
19976
19977
19978              <span class="entry_type_hwlevel">[legacy] </span>
19979
19980
19981
19982
19983            </td> <!-- entry_type -->
19984
19985            <td class="entry_description">
19986              <p>Clockwise angle through which the output image needs to be rotated to be
19987upright on the device screen in its native orientation.<wbr/></p>
19988            </td>
19989
19990            <td class="entry_units">
19991              Degrees of clockwise rotation; always a multiple of
19992          90
19993            </td>
19994
19995            <td class="entry_range">
19996              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
19997            </td>
19998
19999            <td class="entry_tags">
20000              <ul class="entry_tags">
20001                  <li><a href="#tag_BC">BC</a></li>
20002              </ul>
20003            </td>
20004
20005          </tr>
20006          <tr class="entries_header">
20007            <th class="th_details" colspan="5">Details</th>
20008          </tr>
20009          <tr class="entry_cont">
20010            <td class="entry_details" colspan="5">
20011              <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
20012the sensor's coordinate system.<wbr/></p>
20013            </td>
20014          </tr>
20015
20016
20017          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20018           <!-- end of entry -->
20019        
20020                
20021          <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
20022            <td class="entry_name
20023             " rowspan="3">
20024              android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
20025            </td>
20026            <td class="entry_type">
20027                <span class="entry_type_name">int32</span>
20028                <span class="entry_type_container">x</span>
20029
20030                <span class="entry_type_array">
20031                  3
20032                </span>
20033              <span class="entry_type_visibility"> [system]</span>
20034
20035
20036
20037
20038                <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
20039
20040
20041            </td> <!-- entry_type -->
20042
20043            <td class="entry_description">
20044              <p>The number of input samples for each dimension of
20045<a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
20046            </td>
20047
20048            <td class="entry_units">
20049            </td>
20050
20051            <td class="entry_range">
20052              <p>Hue &gt;= 1,<wbr/>
20053Saturation &gt;= 2,<wbr/>
20054Value &gt;= 1</p>
20055            </td>
20056
20057            <td class="entry_tags">
20058              <ul class="entry_tags">
20059                  <li><a href="#tag_RAW">RAW</a></li>
20060              </ul>
20061            </td>
20062
20063          </tr>
20064          <tr class="entries_header">
20065            <th class="th_details" colspan="5">Details</th>
20066          </tr>
20067          <tr class="entry_cont">
20068            <td class="entry_details" colspan="5">
20069              <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
20070dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the
20071dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
20072element.<wbr/></p>
20073            </td>
20074          </tr>
20075
20076
20077          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20078           <!-- end of entry -->
20079        
20080                
20081          <tr class="entry" id="static_android.sensor.availableTestPatternModes">
20082            <td class="entry_name
20083             " rowspan="5">
20084              android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
20085            </td>
20086            <td class="entry_type">
20087                <span class="entry_type_name">int32</span>
20088                <span class="entry_type_container">x</span>
20089
20090                <span class="entry_type_array">
20091                  n
20092                </span>
20093              <span class="entry_type_visibility"> [public]</span>
20094
20095
20096
20097
20098                <div class="entry_type_notes">list of enums</div>
20099
20100
20101            </td> <!-- entry_type -->
20102
20103            <td class="entry_description">
20104              <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
20105supported by this camera device.<wbr/></p>
20106            </td>
20107
20108            <td class="entry_units">
20109            </td>
20110
20111            <td class="entry_range">
20112              <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
20113            </td>
20114
20115            <td class="entry_tags">
20116            </td>
20117
20118          </tr>
20119          <tr class="entries_header">
20120            <th class="th_details" colspan="5">Details</th>
20121          </tr>
20122          <tr class="entry_cont">
20123            <td class="entry_details" colspan="5">
20124              <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
20125            </td>
20126          </tr>
20127
20128          <tr class="entries_header">
20129            <th class="th_details" colspan="5">HAL Implementation Details</th>
20130          </tr>
20131          <tr class="entry_cont">
20132            <td class="entry_details" colspan="5">
20133              <p>All custom modes must be &gt;= CUSTOM1.<wbr/></p>
20134            </td>
20135          </tr>
20136
20137          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20138           <!-- end of entry -->
20139        
20140        
20141
20142      <!-- end of kind -->
20143      </tbody>
20144      <tr><td colspan="6" class="kind">dynamic</td></tr>
20145
20146      <thead class="entries_header">
20147        <tr>
20148          <th class="th_name">Property Name</th>
20149          <th class="th_type">Type</th>
20150          <th class="th_description">Description</th>
20151          <th class="th_units">Units</th>
20152          <th class="th_range">Range</th>
20153          <th class="th_tags">Tags</th>
20154        </tr>
20155      </thead>
20156
20157      <tbody>
20158
20159        
20160
20161        
20162
20163        
20164
20165        
20166
20167                
20168          <tr class="entry" id="dynamic_android.sensor.exposureTime">
20169            <td class="entry_name
20170             " rowspan="3">
20171              android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
20172            </td>
20173            <td class="entry_type">
20174                <span class="entry_type_name">int64</span>
20175
20176              <span class="entry_type_visibility"> [public]</span>
20177
20178
20179              <span class="entry_type_hwlevel">[full] </span>
20180
20181
20182
20183
20184            </td> <!-- entry_type -->
20185
20186            <td class="entry_description">
20187              <p>Duration each pixel is exposed to
20188light.<wbr/></p>
20189            </td>
20190
20191            <td class="entry_units">
20192              Nanoseconds
20193            </td>
20194
20195            <td class="entry_range">
20196              <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
20197            </td>
20198
20199            <td class="entry_tags">
20200              <ul class="entry_tags">
20201                  <li><a href="#tag_V1">V1</a></li>
20202              </ul>
20203            </td>
20204
20205          </tr>
20206          <tr class="entries_header">
20207            <th class="th_details" colspan="5">Details</th>
20208          </tr>
20209          <tr class="entry_cont">
20210            <td class="entry_details" colspan="5">
20211              <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
20212duration exposed to the nearest possible value (rather than expose longer).<wbr/>
20213The final exposure time used will be available in the output capture result.<wbr/></p>
20214<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
20215OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
20216            </td>
20217          </tr>
20218
20219
20220          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20221           <!-- end of entry -->
20222        
20223                
20224          <tr class="entry" id="dynamic_android.sensor.frameDuration">
20225            <td class="entry_name
20226             " rowspan="5">
20227              android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
20228            </td>
20229            <td class="entry_type">
20230                <span class="entry_type_name">int64</span>
20231
20232              <span class="entry_type_visibility"> [public]</span>
20233
20234
20235              <span class="entry_type_hwlevel">[full] </span>
20236
20237
20238
20239
20240            </td> <!-- entry_type -->
20241
20242            <td class="entry_description">
20243              <p>Duration from start of frame exposure to
20244start of next frame exposure.<wbr/></p>
20245            </td>
20246
20247            <td class="entry_units">
20248              Nanoseconds
20249            </td>
20250
20251            <td class="entry_range">
20252              <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
20253<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
20254is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
20255            </td>
20256
20257            <td class="entry_tags">
20258              <ul class="entry_tags">
20259                  <li><a href="#tag_V1">V1</a></li>
20260              </ul>
20261            </td>
20262
20263          </tr>
20264          <tr class="entries_header">
20265            <th class="th_details" colspan="5">Details</th>
20266          </tr>
20267          <tr class="entry_cont">
20268            <td class="entry_details" colspan="5">
20269              <p>The maximum frame rate that can be supported by a camera subsystem is
20270a function of many factors:</p>
20271<ul>
20272<li>Requested resolutions of output image streams</li>
20273<li>Availability of binning /<wbr/> skipping modes on the imager</li>
20274<li>The bandwidth of the imager interface</li>
20275<li>The bandwidth of the various ISP processing blocks</li>
20276</ul>
20277<p>Since these factors can vary greatly between different ISPs and
20278sensors,<wbr/> the camera abstraction tries to represent the bandwidth
20279restrictions with as simple a model as possible.<wbr/></p>
20280<p>The model presented has the following characteristics:</p>
20281<ul>
20282<li>The image sensor is always configured to output the smallest
20283resolution possible given the application's requested output stream
20284sizes.<wbr/>  The smallest resolution is defined as being at least as large
20285as the largest requested output stream size; the camera pipeline must
20286never digitally upsample sensor data when the crop region covers the
20287whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
20288resolutions are configured,<wbr/> the sensor can provide a higher frame
20289rate.<wbr/></li>
20290<li>Since any request may use any or all the currently configured
20291output streams,<wbr/> the sensor and ISP must be configured to support
20292scaling a single capture to all the streams at the same time.<wbr/>  This
20293means the camera pipeline must be ready to produce the largest
20294requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
20295frame rate of a given configured stream set is governed only by the
20296largest requested stream resolution.<wbr/></li>
20297<li>Using more than one output stream in a request does not affect the
20298frame duration.<wbr/></li>
20299<li>Certain format-streams may need to do additional background processing
20300before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
20301can run concurrently to the rest of the camera pipeline,<wbr/> but
20302cannot process more than 1 capture at a time.<wbr/></li>
20303</ul>
20304<p>The necessary information for the application,<wbr/> given the model above,<wbr/>
20305is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using
20306<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
20307These are used to determine the maximum frame rate /<wbr/> minimum frame
20308duration that is possible for a given stream configuration.<wbr/></p>
20309<p>Specifically,<wbr/> the application can use the following rules to
20310determine the minimum frame duration it can request from the camera
20311device:</p>
20312<ol>
20313<li>Let the set of currently configured input/<wbr/>output streams
20314be called <code>S</code>.<wbr/></li>
20315<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking
20316it 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>
20317(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be
20318called <code>F</code>.<wbr/></li>
20319<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
20320for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
20321used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
20322</ol>
20323<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>
20324using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code>
20325determines the steady state frame rate that the application will get
20326if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of
20327request be called <code>Rsimple</code>.<wbr/></p>
20328<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
20329by a single capture of a new request <code>Rstall</code> (which has at least
20330one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
20331same minimum frame duration this will not cause a frame rate loss
20332if all buffers from the previous <code>Rstall</code> have already been
20333delivered.<wbr/></p>
20334<p>For more details about stalling,<wbr/> see
20335<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
20336<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
20337OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
20338            </td>
20339          </tr>
20340
20341          <tr class="entries_header">
20342            <th class="th_details" colspan="5">HAL Implementation Details</th>
20343          </tr>
20344          <tr class="entry_cont">
20345            <td class="entry_details" colspan="5">
20346              <p>For more details about stalling,<wbr/> see
20347<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
20348            </td>
20349          </tr>
20350
20351          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20352           <!-- end of entry -->
20353        
20354                
20355          <tr class="entry" id="dynamic_android.sensor.sensitivity">
20356            <td class="entry_name
20357             " rowspan="5">
20358              android.<wbr/>sensor.<wbr/>sensitivity
20359            </td>
20360            <td class="entry_type">
20361                <span class="entry_type_name">int32</span>
20362
20363              <span class="entry_type_visibility"> [public]</span>
20364
20365
20366              <span class="entry_type_hwlevel">[full] </span>
20367
20368
20369
20370
20371            </td> <!-- entry_type -->
20372
20373            <td class="entry_description">
20374              <p>The amount of gain applied to sensor data
20375before processing.<wbr/></p>
20376            </td>
20377
20378            <td class="entry_units">
20379              ISO arithmetic units
20380            </td>
20381
20382            <td class="entry_range">
20383              <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
20384            </td>
20385
20386            <td class="entry_tags">
20387              <ul class="entry_tags">
20388                  <li><a href="#tag_V1">V1</a></li>
20389              </ul>
20390            </td>
20391
20392          </tr>
20393          <tr class="entries_header">
20394            <th class="th_details" colspan="5">Details</th>
20395          </tr>
20396          <tr class="entry_cont">
20397            <td class="entry_details" colspan="5">
20398              <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
20399as defined in ISO 12232:2006.<wbr/></p>
20400<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
20401if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
20402is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
20403<p>If the camera device cannot apply the exact sensitivity
20404requested,<wbr/> it will reduce the gain to the nearest supported
20405value.<wbr/> The final sensitivity used will be available in the
20406output capture result.<wbr/></p>
20407            </td>
20408          </tr>
20409
20410          <tr class="entries_header">
20411            <th class="th_details" colspan="5">HAL Implementation Details</th>
20412          </tr>
20413          <tr class="entry_cont">
20414            <td class="entry_details" colspan="5">
20415              <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
20416            </td>
20417          </tr>
20418
20419          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20420           <!-- end of entry -->
20421        
20422                
20423          <tr class="entry" id="dynamic_android.sensor.timestamp">
20424            <td class="entry_name
20425             " rowspan="5">
20426              android.<wbr/>sensor.<wbr/>timestamp
20427            </td>
20428            <td class="entry_type">
20429                <span class="entry_type_name">int64</span>
20430
20431              <span class="entry_type_visibility"> [public]</span>
20432
20433
20434              <span class="entry_type_hwlevel">[legacy] </span>
20435
20436
20437
20438
20439            </td> <!-- entry_type -->
20440
20441            <td class="entry_description">
20442              <p>Time at start of exposure of first
20443row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
20444            </td>
20445
20446            <td class="entry_units">
20447              Nanoseconds
20448            </td>
20449
20450            <td class="entry_range">
20451              <p>&gt; 0</p>
20452            </td>
20453
20454            <td class="entry_tags">
20455              <ul class="entry_tags">
20456                  <li><a href="#tag_BC">BC</a></li>
20457              </ul>
20458            </td>
20459
20460          </tr>
20461          <tr class="entries_header">
20462            <th class="th_details" colspan="5">Details</th>
20463          </tr>
20464          <tr class="entry_cont">
20465            <td class="entry_details" colspan="5">
20466              <p>The timestamps are also included in all image
20467buffers produced for the same capture,<wbr/> and will be identical
20468on all the outputs.<wbr/></p>
20469<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
20470the timestamps measure time since an unspecified starting point,<wbr/>
20471and are monotonically increasing.<wbr/> They can be compared with the
20472timestamps for other captures from the same camera device,<wbr/> but are
20473not guaranteed to be comparable to any other time source.<wbr/></p>
20474<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
20475timestamps 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
20476be compared to other timestamps from other subsystems that
20477are using that base.<wbr/></p>
20478<p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
20479the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
20480timestamp</a> in the TotalCaptureResult that was used to create the
20481reprocess capture request.<wbr/></p>
20482            </td>
20483          </tr>
20484
20485          <tr class="entries_header">
20486            <th class="th_details" colspan="5">HAL Implementation Details</th>
20487          </tr>
20488          <tr class="entry_cont">
20489            <td class="entry_details" colspan="5">
20490              <p>All timestamps must be in reference to the kernel's
20491CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
20492time spent asleep.<wbr/> This allows for synchronization with
20493sensors that continue to operate while the system is
20494otherwise asleep.<wbr/></p>
20495<p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
20496The timestamp must be synchronized with the timestamps from other
20497sensor subsystems that are using the same timebase.<wbr/></p>
20498<p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
20499with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
20500capture request.<wbr/></p>
20501            </td>
20502          </tr>
20503
20504          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20505           <!-- end of entry -->
20506        
20507                
20508          <tr class="entry" id="dynamic_android.sensor.temperature">
20509            <td class="entry_name
20510             " rowspan="1">
20511              android.<wbr/>sensor.<wbr/>temperature
20512            </td>
20513            <td class="entry_type">
20514                <span class="entry_type_name">float</span>
20515
20516              <span class="entry_type_visibility"> [system]</span>
20517
20518
20519
20520
20521
20522
20523            </td> <!-- entry_type -->
20524
20525            <td class="entry_description">
20526              <p>The temperature of the sensor,<wbr/> sampled at the time
20527exposure began for this frame.<wbr/></p>
20528<p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
20529somewhere close to it.<wbr/></p>
20530            </td>
20531
20532            <td class="entry_units">
20533              Celsius
20534            </td>
20535
20536            <td class="entry_range">
20537              <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
20538            </td>
20539
20540            <td class="entry_tags">
20541              <ul class="entry_tags">
20542                  <li><a href="#tag_FUTURE">FUTURE</a></li>
20543              </ul>
20544            </td>
20545
20546          </tr>
20547
20548
20549          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20550           <!-- end of entry -->
20551        
20552                
20553          <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
20554            <td class="entry_name
20555             " rowspan="3">
20556              android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
20557            </td>
20558            <td class="entry_type">
20559                <span class="entry_type_name">rational</span>
20560                <span class="entry_type_container">x</span>
20561
20562                <span class="entry_type_array">
20563                  3
20564                </span>
20565              <span class="entry_type_visibility"> [public]</span>
20566
20567
20568
20569
20570
20571
20572            </td> <!-- entry_type -->
20573
20574            <td class="entry_description">
20575              <p>The estimated camera neutral color in the native sensor colorspace at
20576the time of capture.<wbr/></p>
20577            </td>
20578
20579            <td class="entry_units">
20580            </td>
20581
20582            <td class="entry_range">
20583            </td>
20584
20585            <td class="entry_tags">
20586              <ul class="entry_tags">
20587                  <li><a href="#tag_RAW">RAW</a></li>
20588              </ul>
20589            </td>
20590
20591          </tr>
20592          <tr class="entries_header">
20593            <th class="th_details" colspan="5">Details</th>
20594          </tr>
20595          <tr class="entry_cont">
20596            <td class="entry_details" colspan="5">
20597              <p>This value gives the neutral color point encoded as an RGB value in the
20598native sensor color space.<wbr/>  The neutral color point indicates the
20599currently estimated white point of the scene illumination.<wbr/>  It can be
20600used to interpolate between the provided color transforms when
20601processing raw sensor data.<wbr/></p>
20602<p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
20603            </td>
20604          </tr>
20605
20606
20607          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20608           <!-- end of entry -->
20609        
20610                
20611          <tr class="entry" id="dynamic_android.sensor.noiseProfile">
20612            <td class="entry_name
20613             " rowspan="5">
20614              android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
20615            </td>
20616            <td class="entry_type">
20617                <span class="entry_type_name">double</span>
20618                <span class="entry_type_container">x</span>
20619
20620                <span class="entry_type_array">
20621                  2 x CFA Channels
20622                </span>
20623              <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
20624
20625
20626
20627
20628                <div class="entry_type_notes">Pairs of noise model coefficients</div>
20629
20630
20631            </td> <!-- entry_type -->
20632
20633            <td class="entry_description">
20634              <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
20635            </td>
20636
20637            <td class="entry_units">
20638            </td>
20639
20640            <td class="entry_range">
20641            </td>
20642
20643            <td class="entry_tags">
20644              <ul class="entry_tags">
20645                  <li><a href="#tag_RAW">RAW</a></li>
20646              </ul>
20647            </td>
20648
20649          </tr>
20650          <tr class="entries_header">
20651            <th class="th_details" colspan="5">Details</th>
20652          </tr>
20653          <tr class="entry_cont">
20654            <td class="entry_details" colspan="5">
20655              <p>This key contains two noise model coefficients for each CFA channel
20656corresponding to the sensor amplification (S) and sensor readout
20657noise (O).<wbr/>  These are given as pairs of coefficients for each channel
20658in the same order as channels listed for the CFA layout key
20659(see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/>  This is
20660represented as an array of Pair&lt;Double,<wbr/> Double&gt;,<wbr/> where
20661the first member of the Pair at index n is the S coefficient and the
20662second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
20663<p>These coefficients are used in a two parameter noise model to describe
20664the amount of noise present in the image for each CFA channel.<wbr/>  The
20665noise model used here is:</p>
20666<p>N(x) = sqrt(Sx + O)</p>
20667<p>Where x represents the recorded signal of a CFA channel normalized to
20668the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
20669that channel.<wbr/></p>
20670<p>A more detailed description of the noise model can be found in the
20671Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
20672            </td>
20673          </tr>
20674
20675          <tr class="entries_header">
20676            <th class="th_details" colspan="5">HAL Implementation Details</th>
20677          </tr>
20678          <tr class="entry_cont">
20679            <td class="entry_details" colspan="5">
20680              <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
20681an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
20682for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
20683channel,<wbr/> etc.<wbr/></p>
20684            </td>
20685          </tr>
20686
20687          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20688           <!-- end of entry -->
20689        
20690                
20691          <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
20692            <td class="entry_name
20693             " rowspan="3">
20694              android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
20695            </td>
20696            <td class="entry_type">
20697                <span class="entry_type_name">float</span>
20698                <span class="entry_type_container">x</span>
20699
20700                <span class="entry_type_array">
20701                  hue_samples x saturation_samples x value_samples x 3
20702                </span>
20703              <span class="entry_type_visibility"> [system]</span>
20704
20705
20706
20707
20708                <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
20709
20710
20711            </td> <!-- entry_type -->
20712
20713            <td class="entry_description">
20714              <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
20715for each pixel.<wbr/></p>
20716            </td>
20717
20718            <td class="entry_units">
20719              
20720          The hue shift is given in degrees; saturation and value scale factors are
20721          unitless and are between 0 and 1 inclusive
20722          
20723            </td>
20724
20725            <td class="entry_range">
20726            </td>
20727
20728            <td class="entry_tags">
20729              <ul class="entry_tags">
20730                  <li><a href="#tag_RAW">RAW</a></li>
20731              </ul>
20732            </td>
20733
20734          </tr>
20735          <tr class="entries_header">
20736            <th class="th_details" colspan="5">Details</th>
20737          </tr>
20738          <tr class="entry_cont">
20739            <td class="entry_details" colspan="5">
20740              <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
20741<a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
20742<p>Each entry of this map contains three floats corresponding to the
20743hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
20744hue shift has the lowest index.<wbr/> The map entries are stored in the key
20745in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
20746hue divisions in the middle loop,<wbr/> and the saturation divisions in the
20747inner loop.<wbr/> All zero input saturation entries are required to have a
20748value scale factor of 1.<wbr/>0.<wbr/></p>
20749            </td>
20750          </tr>
20751
20752
20753          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20754           <!-- end of entry -->
20755        
20756                
20757          <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
20758            <td class="entry_name
20759             " rowspan="3">
20760              android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
20761            </td>
20762            <td class="entry_type">
20763                <span class="entry_type_name">float</span>
20764                <span class="entry_type_container">x</span>
20765
20766                <span class="entry_type_array">
20767                  samples x 2
20768                </span>
20769              <span class="entry_type_visibility"> [system]</span>
20770
20771
20772
20773
20774                <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
20775
20776
20777            </td> <!-- entry_type -->
20778
20779            <td class="entry_description">
20780              <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
20781            </td>
20782
20783            <td class="entry_units">
20784            </td>
20785
20786            <td class="entry_range">
20787              <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
20788<code>[0,<wbr/> 1]</code>.<wbr/>  The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
20789sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
20790            </td>
20791
20792            <td class="entry_tags">
20793              <ul class="entry_tags">
20794                  <li><a href="#tag_RAW">RAW</a></li>
20795              </ul>
20796            </td>
20797
20798          </tr>
20799          <tr class="entries_header">
20800            <th class="th_details" colspan="5">Details</th>
20801          </tr>
20802          <tr class="entry_cont">
20803            <td class="entry_details" colspan="5">
20804              <p>This key contains a default tone curve that can be applied while
20805processing the image as a starting point for user adjustments.<wbr/>
20806The curve is specified as a list of value pairs in linear gamma.<wbr/>
20807The curve is interpolated using a cubic spline.<wbr/></p>
20808            </td>
20809          </tr>
20810
20811
20812          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20813           <!-- end of entry -->
20814        
20815                
20816          <tr class="entry" id="dynamic_android.sensor.greenSplit">
20817            <td class="entry_name
20818             " rowspan="5">
20819              android.<wbr/>sensor.<wbr/>green<wbr/>Split
20820            </td>
20821            <td class="entry_type">
20822                <span class="entry_type_name">float</span>
20823
20824              <span class="entry_type_visibility"> [public]</span>
20825
20826
20827
20828
20829
20830
20831            </td> <!-- entry_type -->
20832
20833            <td class="entry_description">
20834              <p>The worst-case divergence between Bayer green channels.<wbr/></p>
20835            </td>
20836
20837            <td class="entry_units">
20838            </td>
20839
20840            <td class="entry_range">
20841              <p>&gt;= 0</p>
20842            </td>
20843
20844            <td class="entry_tags">
20845              <ul class="entry_tags">
20846                  <li><a href="#tag_RAW">RAW</a></li>
20847              </ul>
20848            </td>
20849
20850          </tr>
20851          <tr class="entries_header">
20852            <th class="th_details" colspan="5">Details</th>
20853          </tr>
20854          <tr class="entry_cont">
20855            <td class="entry_details" colspan="5">
20856              <p>This value is an estimate of the worst case split between the
20857Bayer green channels in the red and blue rows in the sensor color
20858filter array.<wbr/></p>
20859<p>The green split is calculated as follows:</p>
20860<ol>
20861<li>A 5x5 pixel (or larger) window W within the active sensor array is
20862chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
20863mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/>  The location and size of the window
20864chosen is implementation defined,<wbr/> and should be chosen to provide a
20865green split estimate that is both representative of the entire image
20866for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
20867<li>The arithmetic mean of the green channels from the red
20868rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
20869<li>The arithmetic mean of the green channels from the blue
20870rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
20871<li>The maximum ratio R of the two means is computed as follows:
20872<code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
20873</ol>
20874<p>The ratio R is the green split divergence reported for this property,<wbr/>
20875which represents how much the green channels differ in the mosaic
20876pattern.<wbr/>  This value is typically used to determine the treatment of
20877the green mosaic channels when demosaicing.<wbr/></p>
20878<p>The green split value can be roughly interpreted as follows:</p>
20879<ul>
20880<li>R &lt; 1.<wbr/>03 is a negligible split (&lt;3% divergence).<wbr/></li>
20881<li>1.<wbr/>20 &lt;= R &gt;= 1.<wbr/>03 will require some software
20882correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
20883<li>R &gt; 1.<wbr/>20 will require strong software correction to produce
20884a usuable image (&gt;20% divergence).<wbr/></li>
20885</ul>
20886            </td>
20887          </tr>
20888
20889          <tr class="entries_header">
20890            <th class="th_details" colspan="5">HAL Implementation Details</th>
20891          </tr>
20892          <tr class="entry_cont">
20893            <td class="entry_details" colspan="5">
20894              <p>The green split given may be a static value based on prior
20895characterization of the camera sensor using the green split
20896calculation method given here over a large,<wbr/> representative,<wbr/> sample
20897set of images.<wbr/>  Other methods of calculation that produce equivalent
20898results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
20899            </td>
20900          </tr>
20901
20902          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20903           <!-- end of entry -->
20904        
20905                
20906          <tr class="entry" id="dynamic_android.sensor.testPatternData">
20907            <td class="entry_name
20908             " rowspan="5">
20909              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
20910            </td>
20911            <td class="entry_type">
20912                <span class="entry_type_name">int32</span>
20913                <span class="entry_type_container">x</span>
20914
20915                <span class="entry_type_array">
20916                  4
20917                </span>
20918              <span class="entry_type_visibility"> [public]</span>
20919
20920
20921
20922
20923
20924
20925            </td> <!-- entry_type -->
20926
20927            <td class="entry_description">
20928              <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
20929when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
20930            </td>
20931
20932            <td class="entry_units">
20933            </td>
20934
20935            <td class="entry_range">
20936            </td>
20937
20938            <td class="entry_tags">
20939            </td>
20940
20941          </tr>
20942          <tr class="entries_header">
20943            <th class="th_details" colspan="5">Details</th>
20944          </tr>
20945          <tr class="entry_cont">
20946            <td class="entry_details" colspan="5">
20947              <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
20948The camera device then uses the most significant X bits
20949that correspond to how many bits are in its Bayer raw sensor
20950output.<wbr/></p>
20951<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
2095210 most significant bits from each color channel.<wbr/></p>
20953            </td>
20954          </tr>
20955
20956          <tr class="entries_header">
20957            <th class="th_details" colspan="5">HAL Implementation Details</th>
20958          </tr>
20959          <tr class="entry_cont">
20960            <td class="entry_details" colspan="5">
20961              
20962            </td>
20963          </tr>
20964
20965          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20966           <!-- end of entry -->
20967        
20968                
20969          <tr class="entry" id="dynamic_android.sensor.testPatternMode">
20970            <td class="entry_name
20971             " rowspan="5">
20972              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
20973            </td>
20974            <td class="entry_type">
20975                <span class="entry_type_name entry_type_name_enum">int32</span>
20976
20977              <span class="entry_type_visibility"> [public]</span>
20978
20979
20980
20981
20982
20983                <ul class="entry_type_enum">
20984                  <li>
20985                    <span class="entry_type_enum_name">OFF</span>
20986                    <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
20987device returns captures from the image sensor.<wbr/></p>
20988<p>This is the default if the key is not set.<wbr/></p></span>
20989                  </li>
20990                  <li>
20991                    <span class="entry_type_enum_name">SOLID_COLOR</span>
20992                    <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
20993respective color channel provided in
20994<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
20995<p>For example:</p>
20996<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
20997</code></pre>
20998<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
20999<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
21000</code></pre>
21001<p>All red pixels are 100% red.<wbr/> Only the odd green pixels
21002are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
21003                  </li>
21004                  <li>
21005                    <span class="entry_type_enum_name">COLOR_BARS</span>
21006                    <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
21007<p>The vertical bars (left-to-right) are as follows:</p>
21008<ul>
21009<li>100% white</li>
21010<li>yellow</li>
21011<li>cyan</li>
21012<li>green</li>
21013<li>magenta</li>
21014<li>red</li>
21015<li>blue</li>
21016<li>black</li>
21017</ul>
21018<p>In general the image would look like the following:</p>
21019<pre><code>W Y C G M R B K
21020W Y C G M R B K
21021W Y C G M R B K
21022W Y C G M R B K
21023W Y C G M R B K
21024.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
21025.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
21026.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
21027
21028(B = Blue,<wbr/> K = Black)
21029</code></pre>
21030<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
21031When this is not possible,<wbr/> the bar size should be rounded
21032down to the nearest integer and the pattern can repeat
21033on the right side.<wbr/></p>
21034<p>Each bar's height must always take up the full sensor
21035pixel array height.<wbr/></p>
21036<p>Each pixel in this test pattern must be set to either
210370% intensity or 100% intensity.<wbr/></p></span>
21038                  </li>
21039                  <li>
21040                    <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
21041                    <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
21042each bar should start at its specified color at the top,<wbr/>
21043and fade to gray at the bottom.<wbr/></p>
21044<p>Furthermore each bar is further subdivided into a left and
21045right half.<wbr/> The left half should have a smooth gradient,<wbr/>
21046and the right half should have a quantized gradient.<wbr/></p>
21047<p>In particular,<wbr/> the right half's should consist of blocks of the
21048same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
21049<p>The least significant bits in the quantized gradient should
21050be copied from the most significant bits of the smooth gradient.<wbr/></p>
21051<p>The height of each bar should always be a multiple of 128.<wbr/>
21052When this is not the case,<wbr/> the pattern should repeat at the bottom
21053of the image.<wbr/></p></span>
21054                  </li>
21055                  <li>
21056                    <span class="entry_type_enum_name">PN9</span>
21057                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
21058generated from a PN9 512-bit sequence (typically implemented
21059in hardware with a linear feedback shift register).<wbr/></p>
21060<p>The generator should be reset at the beginning of each frame,<wbr/>
21061and thus each subsequent raw frame with this test pattern should
21062be exactly the same as the last.<wbr/></p></span>
21063                  </li>
21064                  <li>
21065                    <span class="entry_type_enum_name">CUSTOM1</span>
21066                    <span class="entry_type_enum_value">256</span>
21067                    <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
21068available only on this camera device are at least this numeric
21069value.<wbr/></p>
21070<p>All of the custom test patterns will be static
21071(that is the raw image must not vary from frame to frame).<wbr/></p></span>
21072                  </li>
21073                </ul>
21074
21075            </td> <!-- entry_type -->
21076
21077            <td class="entry_description">
21078              <p>When enabled,<wbr/> the sensor sends a test pattern instead of
21079doing a real exposure from the camera.<wbr/></p>
21080            </td>
21081
21082            <td class="entry_units">
21083            </td>
21084
21085            <td class="entry_range">
21086              <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
21087            </td>
21088
21089            <td class="entry_tags">
21090            </td>
21091
21092          </tr>
21093          <tr class="entries_header">
21094            <th class="th_details" colspan="5">Details</th>
21095          </tr>
21096          <tr class="entry_cont">
21097            <td class="entry_details" colspan="5">
21098              <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
21099by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
21100work as normal.<wbr/></p>
21101<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
21102occur (and that the test pattern remain unmodified,<wbr/> since the flash
21103would not actually affect it).<wbr/></p>
21104<p>Defaults to OFF.<wbr/></p>
21105            </td>
21106          </tr>
21107
21108          <tr class="entries_header">
21109            <th class="th_details" colspan="5">HAL Implementation Details</th>
21110          </tr>
21111          <tr class="entry_cont">
21112            <td class="entry_details" colspan="5">
21113              <p>All test patterns are specified in the Bayer domain.<wbr/></p>
21114<p>The HAL may choose to substitute test patterns from the sensor
21115with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
21116indistinguishable to the ISP whether the data came from the
21117sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
21118            </td>
21119          </tr>
21120
21121          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21122           <!-- end of entry -->
21123        
21124                
21125          <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
21126            <td class="entry_name
21127             " rowspan="5">
21128              android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
21129            </td>
21130            <td class="entry_type">
21131                <span class="entry_type_name">int64</span>
21132
21133              <span class="entry_type_visibility"> [public]</span>
21134
21135
21136              <span class="entry_type_hwlevel">[limited] </span>
21137
21138
21139
21140
21141            </td> <!-- entry_type -->
21142
21143            <td class="entry_description">
21144              <p>Duration between the start of first row exposure
21145and the start of last row exposure.<wbr/></p>
21146            </td>
21147
21148            <td class="entry_units">
21149              Nanoseconds
21150            </td>
21151
21152            <td class="entry_range">
21153              <p>&gt;= 0 and &lt;
21154<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
21155            </td>
21156
21157            <td class="entry_tags">
21158              <ul class="entry_tags">
21159                  <li><a href="#tag_V1">V1</a></li>
21160              </ul>
21161            </td>
21162
21163          </tr>
21164          <tr class="entries_header">
21165            <th class="th_details" colspan="5">Details</th>
21166          </tr>
21167          <tr class="entry_cont">
21168            <td class="entry_details" colspan="5">
21169              <p>This is the exposure time skew between the first and last
21170row exposure start times.<wbr/> The first row and the last row are
21171the first and last rows inside of the
21172<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21173<p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
21174to the frame readout time.<wbr/></p>
21175            </td>
21176          </tr>
21177
21178          <tr class="entries_header">
21179            <th class="th_details" colspan="5">HAL Implementation Details</th>
21180          </tr>
21181          <tr class="entry_cont">
21182            <td class="entry_details" colspan="5">
21183              <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
21184exposure at the same time.<wbr/></p>
21185            </td>
21186          </tr>
21187
21188          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21189           <!-- end of entry -->
21190        
21191        
21192
21193      <!-- end of kind -->
21194      </tbody>
21195
21196  <!-- end of section -->
21197  <tr><td colspan="6" id="section_shading" class="section">shading</td></tr>
21198
21199
21200      <tr><td colspan="6" class="kind">controls</td></tr>
21201
21202      <thead class="entries_header">
21203        <tr>
21204          <th class="th_name">Property Name</th>
21205          <th class="th_type">Type</th>
21206          <th class="th_description">Description</th>
21207          <th class="th_units">Units</th>
21208          <th class="th_range">Range</th>
21209          <th class="th_tags">Tags</th>
21210        </tr>
21211      </thead>
21212
21213      <tbody>
21214
21215        
21216
21217        
21218
21219        
21220
21221        
21222
21223                
21224          <tr class="entry" id="controls_android.shading.mode">
21225            <td class="entry_name
21226             " rowspan="3">
21227              android.<wbr/>shading.<wbr/>mode
21228            </td>
21229            <td class="entry_type">
21230                <span class="entry_type_name entry_type_name_enum">byte</span>
21231
21232              <span class="entry_type_visibility"> [public]</span>
21233
21234
21235              <span class="entry_type_hwlevel">[full] </span>
21236
21237
21238
21239                <ul class="entry_type_enum">
21240                  <li>
21241                    <span class="entry_type_enum_name">OFF</span>
21242                    <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
21243                  </li>
21244                  <li>
21245                    <span class="entry_type_enum_name">FAST</span>
21246                    <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
21247frame rate relative to sensor raw output</p></span>
21248                  </li>
21249                  <li>
21250                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
21251                    <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
21252cost of possibly reduced frame rate.<wbr/></p></span>
21253                  </li>
21254                </ul>
21255
21256            </td> <!-- entry_type -->
21257
21258            <td class="entry_description">
21259              <p>Quality of lens shading correction applied
21260to the image data.<wbr/></p>
21261            </td>
21262
21263            <td class="entry_units">
21264            </td>
21265
21266            <td class="entry_range">
21267              <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
21268            </td>
21269
21270            <td class="entry_tags">
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>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
21280camera device,<wbr/> and an identity lens shading map data will be provided
21281if <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
21282shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
21283the 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
21284map shown below:</p>
21285<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/>
21286 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/>
21287 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/>
21288 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/>
21289 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/>
21290 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 ]
21291</code></pre>
21292<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
21293device.<wbr/> Applications can request lens shading map data by setting
21294<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
21295shading 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
21296data will be the one applied by the camera device for this capture request.<wbr/></p>
21297<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
21298the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
21299AWB 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>
21300OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
21301to be converged before using the returned shading map data.<wbr/></p>
21302            </td>
21303          </tr>
21304
21305
21306          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21307           <!-- end of entry -->
21308        
21309                
21310          <tr class="entry" id="controls_android.shading.strength">
21311            <td class="entry_name
21312             " rowspan="1">
21313              android.<wbr/>shading.<wbr/>strength
21314            </td>
21315            <td class="entry_type">
21316                <span class="entry_type_name">byte</span>
21317
21318              <span class="entry_type_visibility"> [system]</span>
21319
21320
21321
21322
21323
21324
21325            </td> <!-- entry_type -->
21326
21327            <td class="entry_description">
21328              <p>Control the amount of shading correction
21329applied to the images</p>
21330            </td>
21331
21332            <td class="entry_units">
21333              unitless: 1-10; 10 is full shading
21334          compensation
21335            </td>
21336
21337            <td class="entry_range">
21338            </td>
21339
21340            <td class="entry_tags">
21341              <ul class="entry_tags">
21342                  <li><a href="#tag_FUTURE">FUTURE</a></li>
21343              </ul>
21344            </td>
21345
21346          </tr>
21347
21348
21349          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21350           <!-- end of entry -->
21351        
21352        
21353
21354      <!-- end of kind -->
21355      </tbody>
21356      <tr><td colspan="6" class="kind">dynamic</td></tr>
21357
21358      <thead class="entries_header">
21359        <tr>
21360          <th class="th_name">Property Name</th>
21361          <th class="th_type">Type</th>
21362          <th class="th_description">Description</th>
21363          <th class="th_units">Units</th>
21364          <th class="th_range">Range</th>
21365          <th class="th_tags">Tags</th>
21366        </tr>
21367      </thead>
21368
21369      <tbody>
21370
21371        
21372
21373        
21374
21375        
21376
21377        
21378
21379                
21380          <tr class="entry" id="dynamic_android.shading.mode">
21381            <td class="entry_name
21382             " rowspan="3">
21383              android.<wbr/>shading.<wbr/>mode
21384            </td>
21385            <td class="entry_type">
21386                <span class="entry_type_name entry_type_name_enum">byte</span>
21387
21388              <span class="entry_type_visibility"> [public]</span>
21389
21390
21391              <span class="entry_type_hwlevel">[full] </span>
21392
21393
21394
21395                <ul class="entry_type_enum">
21396                  <li>
21397                    <span class="entry_type_enum_name">OFF</span>
21398                    <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
21399                  </li>
21400                  <li>
21401                    <span class="entry_type_enum_name">FAST</span>
21402                    <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
21403frame rate relative to sensor raw output</p></span>
21404                  </li>
21405                  <li>
21406                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
21407                    <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
21408cost of possibly reduced frame rate.<wbr/></p></span>
21409                  </li>
21410                </ul>
21411
21412            </td> <!-- entry_type -->
21413
21414            <td class="entry_description">
21415              <p>Quality of lens shading correction applied
21416to the image data.<wbr/></p>
21417            </td>
21418
21419            <td class="entry_units">
21420            </td>
21421
21422            <td class="entry_range">
21423              <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
21424            </td>
21425
21426            <td class="entry_tags">
21427            </td>
21428
21429          </tr>
21430          <tr class="entries_header">
21431            <th class="th_details" colspan="5">Details</th>
21432          </tr>
21433          <tr class="entry_cont">
21434            <td class="entry_details" colspan="5">
21435              <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
21436camera device,<wbr/> and an identity lens shading map data will be provided
21437if <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
21438shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
21439the 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
21440map shown below:</p>
21441<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/>
21442 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/>
21443 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/>
21444 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/>
21445 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/>
21446 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 ]
21447</code></pre>
21448<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
21449device.<wbr/> Applications can request lens shading map data by setting
21450<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
21451shading 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
21452data will be the one applied by the camera device for this capture request.<wbr/></p>
21453<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
21454the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
21455AWB 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>
21456OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
21457to be converged before using the returned shading map data.<wbr/></p>
21458            </td>
21459          </tr>
21460
21461
21462          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21463           <!-- end of entry -->
21464        
21465        
21466
21467      <!-- end of kind -->
21468      </tbody>
21469      <tr><td colspan="6" class="kind">static</td></tr>
21470
21471      <thead class="entries_header">
21472        <tr>
21473          <th class="th_name">Property Name</th>
21474          <th class="th_type">Type</th>
21475          <th class="th_description">Description</th>
21476          <th class="th_units">Units</th>
21477          <th class="th_range">Range</th>
21478          <th class="th_tags">Tags</th>
21479        </tr>
21480      </thead>
21481
21482      <tbody>
21483
21484        
21485
21486        
21487
21488        
21489
21490        
21491
21492                
21493          <tr class="entry" id="static_android.shading.availableModes">
21494            <td class="entry_name
21495             " rowspan="5">
21496              android.<wbr/>shading.<wbr/>available<wbr/>Modes
21497            </td>
21498            <td class="entry_type">
21499                <span class="entry_type_name">byte</span>
21500                <span class="entry_type_container">x</span>
21501
21502                <span class="entry_type_array">
21503                  n
21504                </span>
21505              <span class="entry_type_visibility"> [public as enumList]</span>
21506
21507
21508              <span class="entry_type_hwlevel">[legacy] </span>
21509
21510
21511                <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
21512
21513
21514            </td> <!-- entry_type -->
21515
21516            <td class="entry_description">
21517              <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>
21518            </td>
21519
21520            <td class="entry_units">
21521            </td>
21522
21523            <td class="entry_range">
21524              <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
21525            </td>
21526
21527            <td class="entry_tags">
21528            </td>
21529
21530          </tr>
21531          <tr class="entries_header">
21532            <th class="th_details" colspan="5">Details</th>
21533          </tr>
21534          <tr class="entry_cont">
21535            <td class="entry_details" colspan="5">
21536              <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
21537Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
21538list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
21539LEGACY devices will always only support FAST mode.<wbr/></p>
21540            </td>
21541          </tr>
21542
21543          <tr class="entries_header">
21544            <th class="th_details" colspan="5">HAL Implementation Details</th>
21545          </tr>
21546          <tr class="entry_cont">
21547            <td class="entry_details" colspan="5">
21548              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
21549available on the camera device,<wbr/> but the underlying implementation can be the same for
21550both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
21551slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
21552            </td>
21553          </tr>
21554
21555          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21556           <!-- end of entry -->
21557        
21558        
21559
21560      <!-- end of kind -->
21561      </tbody>
21562
21563  <!-- end of section -->
21564  <tr><td colspan="6" id="section_statistics" class="section">statistics</td></tr>
21565
21566
21567      <tr><td colspan="6" class="kind">controls</td></tr>
21568
21569      <thead class="entries_header">
21570        <tr>
21571          <th class="th_name">Property Name</th>
21572          <th class="th_type">Type</th>
21573          <th class="th_description">Description</th>
21574          <th class="th_units">Units</th>
21575          <th class="th_range">Range</th>
21576          <th class="th_tags">Tags</th>
21577        </tr>
21578      </thead>
21579
21580      <tbody>
21581
21582        
21583
21584        
21585
21586        
21587
21588        
21589
21590                
21591          <tr class="entry" id="controls_android.statistics.faceDetectMode">
21592            <td class="entry_name
21593             " rowspan="5">
21594              android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
21595            </td>
21596            <td class="entry_type">
21597                <span class="entry_type_name entry_type_name_enum">byte</span>
21598
21599              <span class="entry_type_visibility"> [public]</span>
21600
21601
21602              <span class="entry_type_hwlevel">[legacy] </span>
21603
21604
21605
21606                <ul class="entry_type_enum">
21607                  <li>
21608                    <span class="entry_type_enum_name">OFF</span>
21609                    <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
21610results.<wbr/></p></span>
21611                  </li>
21612                  <li>
21613                    <span class="entry_type_enum_name">SIMPLE</span>
21614                    <span class="entry_type_enum_optional">[optional]</span>
21615                    <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
21616                  </li>
21617                  <li>
21618                    <span class="entry_type_enum_name">FULL</span>
21619                    <span class="entry_type_enum_optional">[optional]</span>
21620                    <span class="entry_type_enum_notes"><p>Return all face
21621metadata.<wbr/></p>
21622<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
21623                  </li>
21624                </ul>
21625
21626            </td> <!-- entry_type -->
21627
21628            <td class="entry_description">
21629              <p>Operating mode for the face detector
21630unit.<wbr/></p>
21631            </td>
21632
21633            <td class="entry_units">
21634            </td>
21635
21636            <td class="entry_range">
21637              <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
21638            </td>
21639
21640            <td class="entry_tags">
21641              <ul class="entry_tags">
21642                  <li><a href="#tag_BC">BC</a></li>
21643              </ul>
21644            </td>
21645
21646          </tr>
21647          <tr class="entries_header">
21648            <th class="th_details" colspan="5">Details</th>
21649          </tr>
21650          <tr class="entry_cont">
21651            <td class="entry_details" colspan="5">
21652              <p>Whether face detection is enabled,<wbr/> and whether it
21653should output just the basic fields or the full set of
21654fields.<wbr/></p>
21655            </td>
21656          </tr>
21657
21658          <tr class="entries_header">
21659            <th class="th_details" colspan="5">HAL Implementation Details</th>
21660          </tr>
21661          <tr class="entry_cont">
21662            <td class="entry_details" colspan="5">
21663              <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
21664<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
21665FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
21666<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
21667            </td>
21668          </tr>
21669
21670          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21671           <!-- end of entry -->
21672        
21673                
21674          <tr class="entry" id="controls_android.statistics.histogramMode">
21675            <td class="entry_name
21676             " rowspan="1">
21677              android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
21678            </td>
21679            <td class="entry_type">
21680                <span class="entry_type_name entry_type_name_enum">byte</span>
21681
21682              <span class="entry_type_visibility"> [system as boolean]</span>
21683
21684
21685
21686
21687
21688                <ul class="entry_type_enum">
21689                  <li>
21690                    <span class="entry_type_enum_name">OFF</span>
21691                  </li>
21692                  <li>
21693                    <span class="entry_type_enum_name">ON</span>
21694                  </li>
21695                </ul>
21696
21697            </td> <!-- entry_type -->
21698
21699            <td class="entry_description">
21700              <p>Operating mode for histogram
21701generation</p>
21702            </td>
21703
21704            <td class="entry_units">
21705            </td>
21706
21707            <td class="entry_range">
21708            </td>
21709
21710            <td class="entry_tags">
21711              <ul class="entry_tags">
21712                  <li><a href="#tag_FUTURE">FUTURE</a></li>
21713              </ul>
21714            </td>
21715
21716          </tr>
21717
21718
21719          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21720           <!-- end of entry -->
21721        
21722                
21723          <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
21724            <td class="entry_name
21725             " rowspan="1">
21726              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
21727            </td>
21728            <td class="entry_type">
21729                <span class="entry_type_name entry_type_name_enum">byte</span>
21730
21731              <span class="entry_type_visibility"> [system as boolean]</span>
21732
21733
21734
21735
21736
21737                <ul class="entry_type_enum">
21738                  <li>
21739                    <span class="entry_type_enum_name">OFF</span>
21740                  </li>
21741                  <li>
21742                    <span class="entry_type_enum_name">ON</span>
21743                  </li>
21744                </ul>
21745
21746            </td> <!-- entry_type -->
21747
21748            <td class="entry_description">
21749              <p>Operating mode for sharpness map
21750generation</p>
21751            </td>
21752
21753            <td class="entry_units">
21754            </td>
21755
21756            <td class="entry_range">
21757            </td>
21758
21759            <td class="entry_tags">
21760              <ul class="entry_tags">
21761                  <li><a href="#tag_FUTURE">FUTURE</a></li>
21762              </ul>
21763            </td>
21764
21765          </tr>
21766
21767
21768          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21769           <!-- end of entry -->
21770        
21771                
21772          <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
21773            <td class="entry_name
21774             " rowspan="3">
21775              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
21776            </td>
21777            <td class="entry_type">
21778                <span class="entry_type_name entry_type_name_enum">byte</span>
21779
21780              <span class="entry_type_visibility"> [public as boolean]</span>
21781
21782
21783
21784
21785
21786                <ul class="entry_type_enum">
21787                  <li>
21788                    <span class="entry_type_enum_name">OFF</span>
21789                    <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
21790                  </li>
21791                  <li>
21792                    <span class="entry_type_enum_name">ON</span>
21793                    <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
21794                  </li>
21795                </ul>
21796
21797            </td> <!-- entry_type -->
21798
21799            <td class="entry_description">
21800              <p>Operating mode for hot pixel map generation.<wbr/></p>
21801            </td>
21802
21803            <td class="entry_units">
21804            </td>
21805
21806            <td class="entry_range">
21807              <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>
21808            </td>
21809
21810            <td class="entry_tags">
21811              <ul class="entry_tags">
21812                  <li><a href="#tag_V1">V1</a></li>
21813                  <li><a href="#tag_RAW">RAW</a></li>
21814              </ul>
21815            </td>
21816
21817          </tr>
21818          <tr class="entries_header">
21819            <th class="th_details" colspan="5">Details</th>
21820          </tr>
21821          <tr class="entry_cont">
21822            <td class="entry_details" colspan="5">
21823              <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/>
21824If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
21825            </td>
21826          </tr>
21827
21828
21829          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21830           <!-- end of entry -->
21831        
21832                
21833          <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
21834            <td class="entry_name
21835             " rowspan="3">
21836              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
21837            </td>
21838            <td class="entry_type">
21839                <span class="entry_type_name entry_type_name_enum">byte</span>
21840
21841              <span class="entry_type_visibility"> [public]</span>
21842
21843
21844              <span class="entry_type_hwlevel">[full] </span>
21845
21846
21847
21848                <ul class="entry_type_enum">
21849                  <li>
21850                    <span class="entry_type_enum_name">OFF</span>
21851                    <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
21852                  </li>
21853                  <li>
21854                    <span class="entry_type_enum_name">ON</span>
21855                    <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
21856                  </li>
21857                </ul>
21858
21859            </td> <!-- entry_type -->
21860
21861            <td class="entry_description">
21862              <p>Whether the camera device will output the lens
21863shading map in output result metadata.<wbr/></p>
21864            </td>
21865
21866            <td class="entry_units">
21867            </td>
21868
21869            <td class="entry_range">
21870              <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>
21871            </td>
21872
21873            <td class="entry_tags">
21874              <ul class="entry_tags">
21875                  <li><a href="#tag_RAW">RAW</a></li>
21876              </ul>
21877            </td>
21878
21879          </tr>
21880          <tr class="entries_header">
21881            <th class="th_details" colspan="5">Details</th>
21882          </tr>
21883          <tr class="entry_cont">
21884            <td class="entry_details" colspan="5">
21885              <p>When set to ON,<wbr/>
21886<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
21887the output result metadata.<wbr/></p>
21888<p>ON is always supported on devices with the RAW capability.<wbr/></p>
21889            </td>
21890          </tr>
21891
21892
21893          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21894           <!-- end of entry -->
21895        
21896        
21897
21898      <!-- end of kind -->
21899      </tbody>
21900      <tr><td colspan="6" class="kind">static</td></tr>
21901
21902      <thead class="entries_header">
21903        <tr>
21904          <th class="th_name">Property Name</th>
21905          <th class="th_type">Type</th>
21906          <th class="th_description">Description</th>
21907          <th class="th_units">Units</th>
21908          <th class="th_range">Range</th>
21909          <th class="th_tags">Tags</th>
21910        </tr>
21911      </thead>
21912
21913      <tbody>
21914
21915        
21916
21917        
21918
21919        
21920
21921        
21922                
21923            
21924
21925                
21926          <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
21927            <td class="entry_name
21928             " rowspan="3">
21929              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
21930            </td>
21931            <td class="entry_type">
21932                <span class="entry_type_name">byte</span>
21933                <span class="entry_type_container">x</span>
21934
21935                <span class="entry_type_array">
21936                  n
21937                </span>
21938              <span class="entry_type_visibility"> [public as enumList]</span>
21939
21940
21941              <span class="entry_type_hwlevel">[legacy] </span>
21942
21943
21944                <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
21945
21946
21947            </td> <!-- entry_type -->
21948
21949            <td class="entry_description">
21950              <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
21951supported by this camera device.<wbr/></p>
21952            </td>
21953
21954            <td class="entry_units">
21955            </td>
21956
21957            <td class="entry_range">
21958              <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
21959            </td>
21960
21961            <td class="entry_tags">
21962            </td>
21963
21964          </tr>
21965          <tr class="entries_header">
21966            <th class="th_details" colspan="5">Details</th>
21967          </tr>
21968          <tr class="entry_cont">
21969            <td class="entry_details" colspan="5">
21970              <p>OFF is always supported.<wbr/></p>
21971            </td>
21972          </tr>
21973
21974
21975          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21976           <!-- end of entry -->
21977        
21978                
21979          <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
21980            <td class="entry_name
21981             " rowspan="1">
21982              android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
21983            </td>
21984            <td class="entry_type">
21985                <span class="entry_type_name">int32</span>
21986
21987              <span class="entry_type_visibility"> [system]</span>
21988
21989
21990
21991
21992
21993
21994            </td> <!-- entry_type -->
21995
21996            <td class="entry_description">
21997              <p>Number of histogram buckets
21998supported</p>
21999            </td>
22000
22001            <td class="entry_units">
22002            </td>
22003
22004            <td class="entry_range">
22005              <p>&gt;= 64</p>
22006            </td>
22007
22008            <td class="entry_tags">
22009              <ul class="entry_tags">
22010                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22011              </ul>
22012            </td>
22013
22014          </tr>
22015
22016
22017          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22018           <!-- end of entry -->
22019        
22020                
22021          <tr class="entry" id="static_android.statistics.info.maxFaceCount">
22022            <td class="entry_name
22023             " rowspan="1">
22024              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
22025            </td>
22026            <td class="entry_type">
22027                <span class="entry_type_name">int32</span>
22028
22029              <span class="entry_type_visibility"> [public]</span>
22030
22031
22032              <span class="entry_type_hwlevel">[legacy] </span>
22033
22034
22035
22036
22037            </td> <!-- entry_type -->
22038
22039            <td class="entry_description">
22040              <p>The maximum number of simultaneously detectable
22041faces.<wbr/></p>
22042            </td>
22043
22044            <td class="entry_units">
22045            </td>
22046
22047            <td class="entry_range">
22048              <p>0 for cameras without available face detection; otherwise:
22049<code>&gt;=4</code> for LIMITED or FULL hwlevel devices or
22050<code>&gt;0</code> for LEGACY devices.<wbr/></p>
22051            </td>
22052
22053            <td class="entry_tags">
22054              <ul class="entry_tags">
22055                  <li><a href="#tag_BC">BC</a></li>
22056              </ul>
22057            </td>
22058
22059          </tr>
22060
22061
22062          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22063           <!-- end of entry -->
22064        
22065                
22066          <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
22067            <td class="entry_name
22068             " rowspan="1">
22069              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
22070            </td>
22071            <td class="entry_type">
22072                <span class="entry_type_name">int32</span>
22073
22074              <span class="entry_type_visibility"> [system]</span>
22075
22076
22077
22078
22079
22080
22081            </td> <!-- entry_type -->
22082
22083            <td class="entry_description">
22084              <p>Maximum value possible for a histogram
22085bucket</p>
22086            </td>
22087
22088            <td class="entry_units">
22089            </td>
22090
22091            <td class="entry_range">
22092            </td>
22093
22094            <td class="entry_tags">
22095              <ul class="entry_tags">
22096                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22097              </ul>
22098            </td>
22099
22100          </tr>
22101
22102
22103          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22104           <!-- end of entry -->
22105        
22106                
22107          <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
22108            <td class="entry_name
22109             " rowspan="1">
22110              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
22111            </td>
22112            <td class="entry_type">
22113                <span class="entry_type_name">int32</span>
22114
22115              <span class="entry_type_visibility"> [system]</span>
22116
22117
22118
22119
22120
22121
22122            </td> <!-- entry_type -->
22123
22124            <td class="entry_description">
22125              <p>Maximum value possible for a sharpness map
22126region.<wbr/></p>
22127            </td>
22128
22129            <td class="entry_units">
22130            </td>
22131
22132            <td class="entry_range">
22133            </td>
22134
22135            <td class="entry_tags">
22136              <ul class="entry_tags">
22137                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22138              </ul>
22139            </td>
22140
22141          </tr>
22142
22143
22144          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22145           <!-- end of entry -->
22146        
22147                
22148          <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
22149            <td class="entry_name
22150             " rowspan="1">
22151              android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
22152            </td>
22153            <td class="entry_type">
22154                <span class="entry_type_name">int32</span>
22155                <span class="entry_type_container">x</span>
22156
22157                <span class="entry_type_array">
22158                  2
22159                </span>
22160              <span class="entry_type_visibility"> [system as size]</span>
22161
22162
22163
22164
22165                <div class="entry_type_notes">width x height</div>
22166
22167
22168            </td> <!-- entry_type -->
22169
22170            <td class="entry_description">
22171              <p>Dimensions of the sharpness
22172map</p>
22173            </td>
22174
22175            <td class="entry_units">
22176            </td>
22177
22178            <td class="entry_range">
22179              <p>Must be at least 32 x 32</p>
22180            </td>
22181
22182            <td class="entry_tags">
22183              <ul class="entry_tags">
22184                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22185              </ul>
22186            </td>
22187
22188          </tr>
22189
22190
22191          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22192           <!-- end of entry -->
22193        
22194                
22195          <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
22196            <td class="entry_name
22197             " rowspan="3">
22198              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
22199            </td>
22200            <td class="entry_type">
22201                <span class="entry_type_name">byte</span>
22202                <span class="entry_type_container">x</span>
22203
22204                <span class="entry_type_array">
22205                  n
22206                </span>
22207              <span class="entry_type_visibility"> [public as boolean]</span>
22208
22209
22210
22211
22212                <div class="entry_type_notes">list of enums</div>
22213
22214
22215            </td> <!-- entry_type -->
22216
22217            <td class="entry_description">
22218              <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
22219supported by this camera device.<wbr/></p>
22220            </td>
22221
22222            <td class="entry_units">
22223            </td>
22224
22225            <td class="entry_range">
22226              <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
22227            </td>
22228
22229            <td class="entry_tags">
22230              <ul class="entry_tags">
22231                  <li><a href="#tag_V1">V1</a></li>
22232                  <li><a href="#tag_RAW">RAW</a></li>
22233              </ul>
22234            </td>
22235
22236          </tr>
22237          <tr class="entries_header">
22238            <th class="th_details" colspan="5">Details</th>
22239          </tr>
22240          <tr class="entry_cont">
22241            <td class="entry_details" colspan="5">
22242              <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
22243<code>false</code>.<wbr/></p>
22244<p>ON is always supported on devices with the RAW capability.<wbr/></p>
22245            </td>
22246          </tr>
22247
22248
22249          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22250           <!-- end of entry -->
22251        
22252                
22253          <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
22254            <td class="entry_name
22255             " rowspan="3">
22256              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
22257            </td>
22258            <td class="entry_type">
22259                <span class="entry_type_name">byte</span>
22260                <span class="entry_type_container">x</span>
22261
22262                <span class="entry_type_array">
22263                  n
22264                </span>
22265              <span class="entry_type_visibility"> [public as enumList]</span>
22266
22267
22268
22269
22270                <div class="entry_type_notes">list of enums</div>
22271
22272
22273            </td> <!-- entry_type -->
22274
22275            <td class="entry_description">
22276              <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
22277are supported by this camera device.<wbr/></p>
22278            </td>
22279
22280            <td class="entry_units">
22281            </td>
22282
22283            <td class="entry_range">
22284              <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
22285            </td>
22286
22287            <td class="entry_tags">
22288            </td>
22289
22290          </tr>
22291          <tr class="entries_header">
22292            <th class="th_details" colspan="5">Details</th>
22293          </tr>
22294          <tr class="entry_cont">
22295            <td class="entry_details" colspan="5">
22296              <p>If no lens shading map output is available for this camera device,<wbr/> this key will
22297contain only OFF.<wbr/></p>
22298<p>ON is always supported on devices with the RAW capability.<wbr/>
22299LEGACY mode devices will always only support OFF.<wbr/></p>
22300            </td>
22301          </tr>
22302
22303
22304          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22305           <!-- end of entry -->
22306        
22307        
22308        
22309
22310        
22311
22312      <!-- end of kind -->
22313      </tbody>
22314      <tr><td colspan="6" class="kind">dynamic</td></tr>
22315
22316      <thead class="entries_header">
22317        <tr>
22318          <th class="th_name">Property Name</th>
22319          <th class="th_type">Type</th>
22320          <th class="th_description">Description</th>
22321          <th class="th_units">Units</th>
22322          <th class="th_range">Range</th>
22323          <th class="th_tags">Tags</th>
22324        </tr>
22325      </thead>
22326
22327      <tbody>
22328
22329        
22330
22331        
22332
22333        
22334
22335        
22336
22337                
22338          <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
22339            <td class="entry_name
22340             " rowspan="5">
22341              android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
22342            </td>
22343            <td class="entry_type">
22344                <span class="entry_type_name entry_type_name_enum">byte</span>
22345
22346              <span class="entry_type_visibility"> [public]</span>
22347
22348
22349              <span class="entry_type_hwlevel">[legacy] </span>
22350
22351
22352
22353                <ul class="entry_type_enum">
22354                  <li>
22355                    <span class="entry_type_enum_name">OFF</span>
22356                    <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
22357results.<wbr/></p></span>
22358                  </li>
22359                  <li>
22360                    <span class="entry_type_enum_name">SIMPLE</span>
22361                    <span class="entry_type_enum_optional">[optional]</span>
22362                    <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
22363                  </li>
22364                  <li>
22365                    <span class="entry_type_enum_name">FULL</span>
22366                    <span class="entry_type_enum_optional">[optional]</span>
22367                    <span class="entry_type_enum_notes"><p>Return all face
22368metadata.<wbr/></p>
22369<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
22370                  </li>
22371                </ul>
22372
22373            </td> <!-- entry_type -->
22374
22375            <td class="entry_description">
22376              <p>Operating mode for the face detector
22377unit.<wbr/></p>
22378            </td>
22379
22380            <td class="entry_units">
22381            </td>
22382
22383            <td class="entry_range">
22384              <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
22385            </td>
22386
22387            <td class="entry_tags">
22388              <ul class="entry_tags">
22389                  <li><a href="#tag_BC">BC</a></li>
22390              </ul>
22391            </td>
22392
22393          </tr>
22394          <tr class="entries_header">
22395            <th class="th_details" colspan="5">Details</th>
22396          </tr>
22397          <tr class="entry_cont">
22398            <td class="entry_details" colspan="5">
22399              <p>Whether face detection is enabled,<wbr/> and whether it
22400should output just the basic fields or the full set of
22401fields.<wbr/></p>
22402            </td>
22403          </tr>
22404
22405          <tr class="entries_header">
22406            <th class="th_details" colspan="5">HAL Implementation Details</th>
22407          </tr>
22408          <tr class="entry_cont">
22409            <td class="entry_details" colspan="5">
22410              <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
22411<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
22412FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
22413<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
22414            </td>
22415          </tr>
22416
22417          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22418           <!-- end of entry -->
22419        
22420                
22421          <tr class="entry" id="dynamic_android.statistics.faceIds">
22422            <td class="entry_name
22423             " rowspan="3">
22424              android.<wbr/>statistics.<wbr/>face<wbr/>Ids
22425            </td>
22426            <td class="entry_type">
22427                <span class="entry_type_name">int32</span>
22428                <span class="entry_type_container">x</span>
22429
22430                <span class="entry_type_array">
22431                  n
22432                </span>
22433              <span class="entry_type_visibility"> [hidden]</span>
22434
22435
22436              <span class="entry_type_hwlevel">[legacy] </span>
22437
22438
22439
22440
22441            </td> <!-- entry_type -->
22442
22443            <td class="entry_description">
22444              <p>List of unique IDs for detected faces.<wbr/></p>
22445            </td>
22446
22447            <td class="entry_units">
22448            </td>
22449
22450            <td class="entry_range">
22451            </td>
22452
22453            <td class="entry_tags">
22454              <ul class="entry_tags">
22455                  <li><a href="#tag_BC">BC</a></li>
22456              </ul>
22457            </td>
22458
22459          </tr>
22460          <tr class="entries_header">
22461            <th class="th_details" colspan="5">Details</th>
22462          </tr>
22463          <tr class="entry_cont">
22464            <td class="entry_details" colspan="5">
22465              <p>Each detected face is given a unique ID that is valid for as long as the face is visible
22466to the camera device.<wbr/>  A face that leaves the field of view and later returns may be
22467assigned a new ID.<wbr/></p>
22468<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
22469            </td>
22470          </tr>
22471
22472
22473          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22474           <!-- end of entry -->
22475        
22476                
22477          <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
22478            <td class="entry_name
22479             " rowspan="3">
22480              android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
22481            </td>
22482            <td class="entry_type">
22483                <span class="entry_type_name">int32</span>
22484                <span class="entry_type_container">x</span>
22485
22486                <span class="entry_type_array">
22487                  n x 6
22488                </span>
22489              <span class="entry_type_visibility"> [hidden]</span>
22490
22491
22492              <span class="entry_type_hwlevel">[legacy] </span>
22493
22494
22495                <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
22496
22497
22498            </td> <!-- entry_type -->
22499
22500            <td class="entry_description">
22501              <p>List of landmarks for detected
22502faces.<wbr/></p>
22503            </td>
22504
22505            <td class="entry_units">
22506            </td>
22507
22508            <td class="entry_range">
22509            </td>
22510
22511            <td class="entry_tags">
22512              <ul class="entry_tags">
22513                  <li><a href="#tag_BC">BC</a></li>
22514              </ul>
22515            </td>
22516
22517          </tr>
22518          <tr class="entries_header">
22519            <th class="th_details" colspan="5">Details</th>
22520          </tr>
22521          <tr class="entry_cont">
22522            <td class="entry_details" colspan="5">
22523              <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
22524<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
22525<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
22526            </td>
22527          </tr>
22528
22529
22530          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22531           <!-- end of entry -->
22532        
22533                
22534          <tr class="entry" id="dynamic_android.statistics.faceRectangles">
22535            <td class="entry_name
22536             " rowspan="3">
22537              android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
22538            </td>
22539            <td class="entry_type">
22540                <span class="entry_type_name">int32</span>
22541                <span class="entry_type_container">x</span>
22542
22543                <span class="entry_type_array">
22544                  n x 4
22545                </span>
22546              <span class="entry_type_visibility"> [hidden as rectangle]</span>
22547
22548
22549              <span class="entry_type_hwlevel">[legacy] </span>
22550
22551
22552                <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
22553
22554
22555            </td> <!-- entry_type -->
22556
22557            <td class="entry_description">
22558              <p>List of the bounding rectangles for detected
22559faces.<wbr/></p>
22560            </td>
22561
22562            <td class="entry_units">
22563            </td>
22564
22565            <td class="entry_range">
22566            </td>
22567
22568            <td class="entry_tags">
22569              <ul class="entry_tags">
22570                  <li><a href="#tag_BC">BC</a></li>
22571              </ul>
22572            </td>
22573
22574          </tr>
22575          <tr class="entries_header">
22576            <th class="th_details" colspan="5">Details</th>
22577          </tr>
22578          <tr class="entry_cont">
22579            <td class="entry_details" colspan="5">
22580              <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
22581<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
22582<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
22583            </td>
22584          </tr>
22585
22586
22587          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22588           <!-- end of entry -->
22589        
22590                
22591          <tr class="entry" id="dynamic_android.statistics.faceScores">
22592            <td class="entry_name
22593             " rowspan="5">
22594              android.<wbr/>statistics.<wbr/>face<wbr/>Scores
22595            </td>
22596            <td class="entry_type">
22597                <span class="entry_type_name">byte</span>
22598                <span class="entry_type_container">x</span>
22599
22600                <span class="entry_type_array">
22601                  n
22602                </span>
22603              <span class="entry_type_visibility"> [hidden]</span>
22604
22605
22606              <span class="entry_type_hwlevel">[legacy] </span>
22607
22608
22609
22610
22611            </td> <!-- entry_type -->
22612
22613            <td class="entry_description">
22614              <p>List of the face confidence scores for
22615detected faces</p>
22616            </td>
22617
22618            <td class="entry_units">
22619            </td>
22620
22621            <td class="entry_range">
22622              <p>1-100</p>
22623            </td>
22624
22625            <td class="entry_tags">
22626              <ul class="entry_tags">
22627                  <li><a href="#tag_BC">BC</a></li>
22628              </ul>
22629            </td>
22630
22631          </tr>
22632          <tr class="entries_header">
22633            <th class="th_details" colspan="5">Details</th>
22634          </tr>
22635          <tr class="entry_cont">
22636            <td class="entry_details" colspan="5">
22637              <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
22638            </td>
22639          </tr>
22640
22641          <tr class="entries_header">
22642            <th class="th_details" colspan="5">HAL Implementation Details</th>
22643          </tr>
22644          <tr class="entry_cont">
22645            <td class="entry_details" colspan="5">
22646              <p>The value should be meaningful (for example,<wbr/> setting 100 at
22647all times is illegal).<wbr/></p>
22648            </td>
22649          </tr>
22650
22651          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22652           <!-- end of entry -->
22653        
22654                
22655          <tr class="entry" id="dynamic_android.statistics.faces">
22656            <td class="entry_name
22657             " rowspan="3">
22658              android.<wbr/>statistics.<wbr/>faces
22659            </td>
22660            <td class="entry_type">
22661                <span class="entry_type_name">int32</span>
22662                <span class="entry_type_container">x</span>
22663
22664                <span class="entry_type_array">
22665                  n
22666                </span>
22667              <span class="entry_type_visibility"> [public as face]</span>
22668
22669              <span class="entry_type_synthetic">[synthetic] </span>
22670
22671              <span class="entry_type_hwlevel">[legacy] </span>
22672
22673
22674
22675
22676            </td> <!-- entry_type -->
22677
22678            <td class="entry_description">
22679              <p>List of the faces detected through camera face detection
22680in this capture.<wbr/></p>
22681            </td>
22682
22683            <td class="entry_units">
22684            </td>
22685
22686            <td class="entry_range">
22687            </td>
22688
22689            <td class="entry_tags">
22690            </td>
22691
22692          </tr>
22693          <tr class="entries_header">
22694            <th class="th_details" colspan="5">Details</th>
22695          </tr>
22696          <tr class="entry_cont">
22697            <td class="entry_details" colspan="5">
22698              <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>
22699            </td>
22700          </tr>
22701
22702
22703          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22704           <!-- end of entry -->
22705        
22706                
22707          <tr class="entry" id="dynamic_android.statistics.histogram">
22708            <td class="entry_name
22709             " rowspan="3">
22710              android.<wbr/>statistics.<wbr/>histogram
22711            </td>
22712            <td class="entry_type">
22713                <span class="entry_type_name">int32</span>
22714                <span class="entry_type_container">x</span>
22715
22716                <span class="entry_type_array">
22717                  n x 3
22718                </span>
22719              <span class="entry_type_visibility"> [system]</span>
22720
22721
22722
22723
22724                <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>
22725
22726
22727            </td> <!-- entry_type -->
22728
22729            <td class="entry_description">
22730              <p>A 3-channel histogram based on the raw
22731sensor data</p>
22732            </td>
22733
22734            <td class="entry_units">
22735            </td>
22736
22737            <td class="entry_range">
22738            </td>
22739
22740            <td class="entry_tags">
22741              <ul class="entry_tags">
22742                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22743              </ul>
22744            </td>
22745
22746          </tr>
22747          <tr class="entries_header">
22748            <th class="th_details" colspan="5">Details</th>
22749          </tr>
22750          <tr class="entry_cont">
22751            <td class="entry_details" colspan="5">
22752              <p>The k'th bucket (0-based) covers the input range
22753(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/>
22754(k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
22755supported,<wbr/> all channels should have the same data</p>
22756            </td>
22757          </tr>
22758
22759
22760          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22761           <!-- end of entry -->
22762        
22763                
22764          <tr class="entry" id="dynamic_android.statistics.histogramMode">
22765            <td class="entry_name
22766             " rowspan="1">
22767              android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
22768            </td>
22769            <td class="entry_type">
22770                <span class="entry_type_name entry_type_name_enum">byte</span>
22771
22772              <span class="entry_type_visibility"> [system as boolean]</span>
22773
22774
22775
22776
22777
22778                <ul class="entry_type_enum">
22779                  <li>
22780                    <span class="entry_type_enum_name">OFF</span>
22781                  </li>
22782                  <li>
22783                    <span class="entry_type_enum_name">ON</span>
22784                  </li>
22785                </ul>
22786
22787            </td> <!-- entry_type -->
22788
22789            <td class="entry_description">
22790              <p>Operating mode for histogram
22791generation</p>
22792            </td>
22793
22794            <td class="entry_units">
22795            </td>
22796
22797            <td class="entry_range">
22798            </td>
22799
22800            <td class="entry_tags">
22801              <ul class="entry_tags">
22802                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22803              </ul>
22804            </td>
22805
22806          </tr>
22807
22808
22809          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22810           <!-- end of entry -->
22811        
22812                
22813          <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
22814            <td class="entry_name
22815             " rowspan="3">
22816              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
22817            </td>
22818            <td class="entry_type">
22819                <span class="entry_type_name">int32</span>
22820                <span class="entry_type_container">x</span>
22821
22822                <span class="entry_type_array">
22823                  n x m x 3
22824                </span>
22825              <span class="entry_type_visibility"> [system]</span>
22826
22827
22828
22829
22830                <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>
22831
22832
22833            </td> <!-- entry_type -->
22834
22835            <td class="entry_description">
22836              <p>A 3-channel sharpness map,<wbr/> based on the raw
22837sensor data</p>
22838            </td>
22839
22840            <td class="entry_units">
22841            </td>
22842
22843            <td class="entry_range">
22844            </td>
22845
22846            <td class="entry_tags">
22847              <ul class="entry_tags">
22848                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22849              </ul>
22850            </td>
22851
22852          </tr>
22853          <tr class="entries_header">
22854            <th class="th_details" colspan="5">Details</th>
22855          </tr>
22856          <tr class="entry_cont">
22857            <td class="entry_details" colspan="5">
22858              <p>If only a monochrome sharpness map is supported,<wbr/>
22859all channels should have the same data</p>
22860            </td>
22861          </tr>
22862
22863
22864          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22865           <!-- end of entry -->
22866        
22867                
22868          <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
22869            <td class="entry_name
22870             " rowspan="1">
22871              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
22872            </td>
22873            <td class="entry_type">
22874                <span class="entry_type_name entry_type_name_enum">byte</span>
22875
22876              <span class="entry_type_visibility"> [system as boolean]</span>
22877
22878
22879
22880
22881
22882                <ul class="entry_type_enum">
22883                  <li>
22884                    <span class="entry_type_enum_name">OFF</span>
22885                  </li>
22886                  <li>
22887                    <span class="entry_type_enum_name">ON</span>
22888                  </li>
22889                </ul>
22890
22891            </td> <!-- entry_type -->
22892
22893            <td class="entry_description">
22894              <p>Operating mode for sharpness map
22895generation</p>
22896            </td>
22897
22898            <td class="entry_units">
22899            </td>
22900
22901            <td class="entry_range">
22902            </td>
22903
22904            <td class="entry_tags">
22905              <ul class="entry_tags">
22906                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22907              </ul>
22908            </td>
22909
22910          </tr>
22911
22912
22913          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22914           <!-- end of entry -->
22915        
22916                
22917          <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
22918            <td class="entry_name
22919             " rowspan="3">
22920              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
22921            </td>
22922            <td class="entry_type">
22923                <span class="entry_type_name">byte</span>
22924
22925              <span class="entry_type_visibility"> [public as lensShadingMap]</span>
22926
22927
22928              <span class="entry_type_hwlevel">[full] </span>
22929
22930
22931
22932
22933            </td> <!-- entry_type -->
22934
22935            <td class="entry_description">
22936              <p>The shading map is a low-resolution floating-point map
22937that lists the coefficients used to correct for vignetting,<wbr/> for each
22938Bayer color channel.<wbr/></p>
22939            </td>
22940
22941            <td class="entry_units">
22942            </td>
22943
22944            <td class="entry_range">
22945              <p>Each gain factor is &gt;= 1</p>
22946            </td>
22947
22948            <td class="entry_tags">
22949            </td>
22950
22951          </tr>
22952          <tr class="entries_header">
22953            <th class="th_details" colspan="5">Details</th>
22954          </tr>
22955          <tr class="entry_cont">
22956            <td class="entry_details" colspan="5">
22957              <p>The least shaded section of the image should have a gain factor
22958of 1; all other sections should have gains above 1.<wbr/></p>
22959<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
22960must take into account the colorCorrection settings.<wbr/></p>
22961<p>The shading map is for the entire active pixel array,<wbr/> and is not
22962affected by the crop region specified in the request.<wbr/> Each shading map
22963entry is the value of the shading compensation map over a specific
22964pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
22965map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
22966(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
22967pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
22968The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
22969<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
22970channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
22971The shading map is stored in a fully interleaved format.<wbr/></p>
22972<p>The shading map should have on the order of 30-40 rows and columns,<wbr/>
22973and must be smaller than 64x64.<wbr/></p>
22974<p>As an example,<wbr/> given a very small map defined as:</p>
22975<pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
22976values =
22977[ 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/>
22978    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/>
22979  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/>
22980    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/>
22981  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/>
22982    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 ]
22983</code></pre>
22984<p>The low-resolution scaling map images for each channel are
22985(displayed using nearest-neighbor interpolation):</p>
22986<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
22987<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
22988<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
22989<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
22990<p>As a visualization only,<wbr/> inverting the full-color map to recover an
22991image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
22992<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
22993            </td>
22994          </tr>
22995
22996
22997          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22998           <!-- end of entry -->
22999        
23000                
23001          <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
23002            <td class="entry_name
23003             " rowspan="5">
23004              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
23005            </td>
23006            <td class="entry_type">
23007                <span class="entry_type_name">float</span>
23008                <span class="entry_type_container">x</span>
23009
23010                <span class="entry_type_array">
23011                  4 x n x m
23012                </span>
23013              <span class="entry_type_visibility"> [hidden]</span>
23014
23015
23016              <span class="entry_type_hwlevel">[full] </span>
23017
23018
23019                <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
23020
23021
23022            </td> <!-- entry_type -->
23023
23024            <td class="entry_description">
23025              <p>The shading map is a low-resolution floating-point map
23026that lists the coefficients used to correct for vignetting,<wbr/> for each
23027Bayer color channel of RAW image data.<wbr/></p>
23028            </td>
23029
23030            <td class="entry_units">
23031            </td>
23032
23033            <td class="entry_range">
23034              <p>Each gain factor is &gt;= 1</p>
23035            </td>
23036
23037            <td class="entry_tags">
23038            </td>
23039
23040          </tr>
23041          <tr class="entries_header">
23042            <th class="th_details" colspan="5">Details</th>
23043          </tr>
23044          <tr class="entry_cont">
23045            <td class="entry_details" colspan="5">
23046              <p>The least shaded section of the image should have a gain factor
23047of 1; all other sections should have gains above 1.<wbr/></p>
23048<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
23049must take into account the colorCorrection settings.<wbr/></p>
23050<p>The shading map is for the entire active pixel array,<wbr/> and is not
23051affected by the crop region specified in the request.<wbr/> Each shading map
23052entry is the value of the shading compensation map over a specific
23053pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
23054map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
23055(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
23056pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
23057The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
23058<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
23059channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
23060The shading map is stored in a fully interleaved format,<wbr/> and its size
23061is 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>
23062<p>The shading map should have on the order of 30-40 rows and columns,<wbr/>
23063and must be smaller than 64x64.<wbr/></p>
23064<p>As an example,<wbr/> given a very small map defined as:</p>
23065<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
23066<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
23067[ 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/>
23068    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/>
23069  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/>
23070    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/>
23071  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/>
23072    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 ]
23073</code></pre>
23074<p>The low-resolution scaling map images for each channel are
23075(displayed using nearest-neighbor interpolation):</p>
23076<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
23077<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
23078<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
23079<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
23080<p>As a visualization only,<wbr/> inverting the full-color map to recover an
23081image of a gray wall (using bicubic interpolation for visual quality)
23082as captured by the sensor gives:</p>
23083<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
23084<p>Note that the RAW image data might be subject to lens shading
23085correction not reported on this map.<wbr/> Query
23086<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
23087to lens shading correction.<wbr/> If <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a>
23088is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
23089correction.<wbr/> In the case full lens shading correction is applied to RAW
23090images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
23091In other words,<wbr/> the map reported in this key is the remaining lens shading
23092that needs to be applied on the RAW image to get images without lens shading
23093artifacts.<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
23094formats.<wbr/></p>
23095            </td>
23096          </tr>
23097
23098          <tr class="entries_header">
23099            <th class="th_details" colspan="5">HAL Implementation Details</th>
23100          </tr>
23101          <tr class="entry_cont">
23102            <td class="entry_details" colspan="5">
23103              <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
23104When AE and AWB are in AUTO modes
23105(<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
23106may have all the information it need to generate most accurate lens shading map.<wbr/> When
23107AE or AWB are in manual mode
23108(<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
23109may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
23110generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
23111the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
23112            </td>
23113          </tr>
23114
23115          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23116           <!-- end of entry -->
23117        
23118                
23119          <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
23120            <td class="entry_name
23121                entry_name_deprecated
23122             " rowspan="3">
23123              android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
23124            </td>
23125            <td class="entry_type">
23126                <span class="entry_type_name">float</span>
23127                <span class="entry_type_container">x</span>
23128
23129                <span class="entry_type_array">
23130                  4
23131                </span>
23132              <span class="entry_type_visibility"> [hidden]</span>
23133
23134
23135
23136              <span class="entry_type_deprecated">[deprecated] </span>
23137
23138                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
23139
23140
23141            </td> <!-- entry_type -->
23142
23143            <td class="entry_description">
23144              <p>The best-fit color channel gains calculated
23145by the camera device's statistics units for the current output frame.<wbr/></p>
23146            </td>
23147
23148            <td class="entry_units">
23149            </td>
23150
23151            <td class="entry_range">
23152              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
23153            </td>
23154
23155            <td class="entry_tags">
23156            </td>
23157
23158          </tr>
23159          <tr class="entries_header">
23160            <th class="th_details" colspan="5">Details</th>
23161          </tr>
23162          <tr class="entry_cont">
23163            <td class="entry_details" colspan="5">
23164              <p>This may be different than the gains used for this frame,<wbr/>
23165since statistics processing on data from a new frame
23166typically completes after the transform has already been
23167applied to that frame.<wbr/></p>
23168<p>The 4 channel gains are defined in Bayer domain,<wbr/>
23169see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
23170<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
23171regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
23172            </td>
23173          </tr>
23174
23175
23176          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23177           <!-- end of entry -->
23178        
23179                
23180          <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
23181            <td class="entry_name
23182                entry_name_deprecated
23183             " rowspan="3">
23184              android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
23185            </td>
23186            <td class="entry_type">
23187                <span class="entry_type_name">rational</span>
23188                <span class="entry_type_container">x</span>
23189
23190                <span class="entry_type_array">
23191                  3 x 3
23192                </span>
23193              <span class="entry_type_visibility"> [hidden]</span>
23194
23195
23196
23197              <span class="entry_type_deprecated">[deprecated] </span>
23198
23199                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
23200
23201
23202            </td> <!-- entry_type -->
23203
23204            <td class="entry_description">
23205              <p>The best-fit color transform matrix estimate
23206calculated by the camera device's statistics units for the current
23207output frame.<wbr/></p>
23208            </td>
23209
23210            <td class="entry_units">
23211            </td>
23212
23213            <td class="entry_range">
23214              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
23215            </td>
23216
23217            <td class="entry_tags">
23218            </td>
23219
23220          </tr>
23221          <tr class="entries_header">
23222            <th class="th_details" colspan="5">Details</th>
23223          </tr>
23224          <tr class="entry_cont">
23225            <td class="entry_details" colspan="5">
23226              <p>The camera device will provide the estimate from its
23227statistics unit on the white balance transforms to use
23228for the next frame.<wbr/> These are the values the camera device believes
23229are the best fit for the current output frame.<wbr/> This may
23230be different than the transform used for this frame,<wbr/> since
23231statistics processing on data from a new frame typically
23232completes after the transform has already been applied to
23233that frame.<wbr/></p>
23234<p>These estimates must be provided for all frames,<wbr/> even if
23235capture settings and color transforms are set by the application.<wbr/></p>
23236<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
23237regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
23238            </td>
23239          </tr>
23240
23241
23242          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23243           <!-- end of entry -->
23244        
23245                
23246          <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
23247            <td class="entry_name
23248             " rowspan="3">
23249              android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
23250            </td>
23251            <td class="entry_type">
23252                <span class="entry_type_name entry_type_name_enum">byte</span>
23253
23254              <span class="entry_type_visibility"> [public]</span>
23255
23256
23257              <span class="entry_type_hwlevel">[full] </span>
23258
23259
23260
23261                <ul class="entry_type_enum">
23262                  <li>
23263                    <span class="entry_type_enum_name">NONE</span>
23264                    <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
23265in the current scene.<wbr/></p></span>
23266                  </li>
23267                  <li>
23268                    <span class="entry_type_enum_name">50HZ</span>
23269                    <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
23270in the current scene.<wbr/></p></span>
23271                  </li>
23272                  <li>
23273                    <span class="entry_type_enum_name">60HZ</span>
23274                    <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
23275in the current scene.<wbr/></p></span>
23276                  </li>
23277                </ul>
23278
23279            </td> <!-- entry_type -->
23280
23281            <td class="entry_description">
23282              <p>The camera device estimated scene illumination lighting
23283frequency.<wbr/></p>
23284            </td>
23285
23286            <td class="entry_units">
23287            </td>
23288
23289            <td class="entry_range">
23290            </td>
23291
23292            <td class="entry_tags">
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>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
23302that depends on the local utility power standards.<wbr/> This flicker must be
23303accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
23304The camera device uses this entry to tell the application what the scene
23305illuminant frequency is.<wbr/></p>
23306<p>When manual exposure control is enabled
23307(<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> ==
23308OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
23309antibanding,<wbr/> and the application can ensure it selects
23310exposure times that do not cause banding issues by looking
23311into this metadata field.<wbr/> See
23312<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
23313<p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
23314            </td>
23315          </tr>
23316
23317
23318          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23319           <!-- end of entry -->
23320        
23321                
23322          <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
23323            <td class="entry_name
23324             " rowspan="3">
23325              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
23326            </td>
23327            <td class="entry_type">
23328                <span class="entry_type_name entry_type_name_enum">byte</span>
23329
23330              <span class="entry_type_visibility"> [public as boolean]</span>
23331
23332
23333
23334
23335
23336                <ul class="entry_type_enum">
23337                  <li>
23338                    <span class="entry_type_enum_name">OFF</span>
23339                    <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
23340                  </li>
23341                  <li>
23342                    <span class="entry_type_enum_name">ON</span>
23343                    <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
23344                  </li>
23345                </ul>
23346
23347            </td> <!-- entry_type -->
23348
23349            <td class="entry_description">
23350              <p>Operating mode for hot pixel map generation.<wbr/></p>
23351            </td>
23352
23353            <td class="entry_units">
23354            </td>
23355
23356            <td class="entry_range">
23357              <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>
23358            </td>
23359
23360            <td class="entry_tags">
23361              <ul class="entry_tags">
23362                  <li><a href="#tag_V1">V1</a></li>
23363                  <li><a href="#tag_RAW">RAW</a></li>
23364              </ul>
23365            </td>
23366
23367          </tr>
23368          <tr class="entries_header">
23369            <th class="th_details" colspan="5">Details</th>
23370          </tr>
23371          <tr class="entry_cont">
23372            <td class="entry_details" colspan="5">
23373              <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/>
23374If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
23375            </td>
23376          </tr>
23377
23378
23379          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23380           <!-- end of entry -->
23381        
23382                
23383          <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
23384            <td class="entry_name
23385             " rowspan="5">
23386              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
23387            </td>
23388            <td class="entry_type">
23389                <span class="entry_type_name">int32</span>
23390                <span class="entry_type_container">x</span>
23391
23392                <span class="entry_type_array">
23393                  2 x n
23394                </span>
23395              <span class="entry_type_visibility"> [public as point]</span>
23396
23397
23398
23399
23400                <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
23401
23402
23403            </td> <!-- entry_type -->
23404
23405            <td class="entry_description">
23406              <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
23407            </td>
23408
23409            <td class="entry_units">
23410            </td>
23411
23412            <td class="entry_range">
23413              <p>n &lt;= number of pixels on the sensor.<wbr/>
23414The <code>(x,<wbr/> y)</code> coordinates must be bounded by
23415<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
23416            </td>
23417
23418            <td class="entry_tags">
23419              <ul class="entry_tags">
23420                  <li><a href="#tag_V1">V1</a></li>
23421                  <li><a href="#tag_RAW">RAW</a></li>
23422              </ul>
23423            </td>
23424
23425          </tr>
23426          <tr class="entries_header">
23427            <th class="th_details" colspan="5">Details</th>
23428          </tr>
23429          <tr class="entry_cont">
23430            <td class="entry_details" colspan="5">
23431              <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
23432<code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
23433bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
23434height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/>
23435This may include hot pixels that lie outside of the active array
23436bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
23437            </td>
23438          </tr>
23439
23440          <tr class="entries_header">
23441            <th class="th_details" colspan="5">HAL Implementation Details</th>
23442          </tr>
23443          <tr class="entry_cont">
23444            <td class="entry_details" colspan="5">
23445              <p>A hotpixel map contains the coordinates of pixels on the camera
23446sensor that do report valid values (usually due to defects in
23447the camera sensor).<wbr/> This includes pixels that are stuck at certain
23448values,<wbr/> or have a response that does not accuractly encode the
23449incoming light from the scene.<wbr/></p>
23450<p>To avoid performance issues,<wbr/> there should be significantly fewer hot
23451pixels than actual pixels on the camera sensor.<wbr/></p>
23452            </td>
23453          </tr>
23454
23455          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23456           <!-- end of entry -->
23457        
23458                
23459          <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
23460            <td class="entry_name
23461             " rowspan="3">
23462              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
23463            </td>
23464            <td class="entry_type">
23465                <span class="entry_type_name entry_type_name_enum">byte</span>
23466
23467              <span class="entry_type_visibility"> [public]</span>
23468
23469
23470              <span class="entry_type_hwlevel">[full] </span>
23471
23472
23473
23474                <ul class="entry_type_enum">
23475                  <li>
23476                    <span class="entry_type_enum_name">OFF</span>
23477                    <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
23478                  </li>
23479                  <li>
23480                    <span class="entry_type_enum_name">ON</span>
23481                    <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
23482                  </li>
23483                </ul>
23484
23485            </td> <!-- entry_type -->
23486
23487            <td class="entry_description">
23488              <p>Whether the camera device will output the lens
23489shading map in output result metadata.<wbr/></p>
23490            </td>
23491
23492            <td class="entry_units">
23493            </td>
23494
23495            <td class="entry_range">
23496              <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>
23497            </td>
23498
23499            <td class="entry_tags">
23500              <ul class="entry_tags">
23501                  <li><a href="#tag_RAW">RAW</a></li>
23502              </ul>
23503            </td>
23504
23505          </tr>
23506          <tr class="entries_header">
23507            <th class="th_details" colspan="5">Details</th>
23508          </tr>
23509          <tr class="entry_cont">
23510            <td class="entry_details" colspan="5">
23511              <p>When set to ON,<wbr/>
23512<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
23513the output result metadata.<wbr/></p>
23514<p>ON is always supported on devices with the RAW capability.<wbr/></p>
23515            </td>
23516          </tr>
23517
23518
23519          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23520           <!-- end of entry -->
23521        
23522        
23523
23524      <!-- end of kind -->
23525      </tbody>
23526
23527  <!-- end of section -->
23528  <tr><td colspan="6" id="section_tonemap" class="section">tonemap</td></tr>
23529
23530
23531      <tr><td colspan="6" class="kind">controls</td></tr>
23532
23533      <thead class="entries_header">
23534        <tr>
23535          <th class="th_name">Property Name</th>
23536          <th class="th_type">Type</th>
23537          <th class="th_description">Description</th>
23538          <th class="th_units">Units</th>
23539          <th class="th_range">Range</th>
23540          <th class="th_tags">Tags</th>
23541        </tr>
23542      </thead>
23543
23544      <tbody>
23545
23546        
23547
23548        
23549
23550        
23551
23552        
23553
23554                
23555          <tr class="entry" id="controls_android.tonemap.curveBlue">
23556            <td class="entry_name
23557             " rowspan="3">
23558              android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
23559            </td>
23560            <td class="entry_type">
23561                <span class="entry_type_name">float</span>
23562                <span class="entry_type_container">x</span>
23563
23564                <span class="entry_type_array">
23565                  n x 2
23566                </span>
23567              <span class="entry_type_visibility"> [hidden]</span>
23568
23569
23570              <span class="entry_type_hwlevel">[full] </span>
23571
23572
23573                <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>
23574
23575
23576            </td> <!-- entry_type -->
23577
23578            <td class="entry_description">
23579              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
23580channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23581CONTRAST_<wbr/>CURVE.<wbr/></p>
23582            </td>
23583
23584            <td class="entry_units">
23585            </td>
23586
23587            <td class="entry_range">
23588            </td>
23589
23590            <td class="entry_tags">
23591            </td>
23592
23593          </tr>
23594          <tr class="entries_header">
23595            <th class="th_details" colspan="5">Details</th>
23596          </tr>
23597          <tr class="entry_cont">
23598            <td class="entry_details" colspan="5">
23599              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
23600            </td>
23601          </tr>
23602
23603
23604          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23605           <!-- end of entry -->
23606        
23607                
23608          <tr class="entry" id="controls_android.tonemap.curveGreen">
23609            <td class="entry_name
23610             " rowspan="3">
23611              android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
23612            </td>
23613            <td class="entry_type">
23614                <span class="entry_type_name">float</span>
23615                <span class="entry_type_container">x</span>
23616
23617                <span class="entry_type_array">
23618                  n x 2
23619                </span>
23620              <span class="entry_type_visibility"> [hidden]</span>
23621
23622
23623              <span class="entry_type_hwlevel">[full] </span>
23624
23625
23626                <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>
23627
23628
23629            </td> <!-- entry_type -->
23630
23631            <td class="entry_description">
23632              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
23633channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23634CONTRAST_<wbr/>CURVE.<wbr/></p>
23635            </td>
23636
23637            <td class="entry_units">
23638            </td>
23639
23640            <td class="entry_range">
23641            </td>
23642
23643            <td class="entry_tags">
23644            </td>
23645
23646          </tr>
23647          <tr class="entries_header">
23648            <th class="th_details" colspan="5">Details</th>
23649          </tr>
23650          <tr class="entry_cont">
23651            <td class="entry_details" colspan="5">
23652              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
23653            </td>
23654          </tr>
23655
23656
23657          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23658           <!-- end of entry -->
23659        
23660                
23661          <tr class="entry" id="controls_android.tonemap.curveRed">
23662            <td class="entry_name
23663             " rowspan="5">
23664              android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
23665            </td>
23666            <td class="entry_type">
23667                <span class="entry_type_name">float</span>
23668                <span class="entry_type_container">x</span>
23669
23670                <span class="entry_type_array">
23671                  n x 2
23672                </span>
23673              <span class="entry_type_visibility"> [hidden]</span>
23674
23675
23676              <span class="entry_type_hwlevel">[full] </span>
23677
23678
23679                <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>
23680
23681
23682            </td> <!-- entry_type -->
23683
23684            <td class="entry_description">
23685              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
23686channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23687CONTRAST_<wbr/>CURVE.<wbr/></p>
23688            </td>
23689
23690            <td class="entry_units">
23691            </td>
23692
23693            <td class="entry_range">
23694              <p>0-1 on both input and output coordinates,<wbr/> normalized
23695as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
23696            </td>
23697
23698            <td class="entry_tags">
23699            </td>
23700
23701          </tr>
23702          <tr class="entries_header">
23703            <th class="th_details" colspan="5">Details</th>
23704          </tr>
23705          <tr class="entry_cont">
23706            <td class="entry_details" colspan="5">
23707              <p>Each channel's curve is defined by an array of control points:</p>
23708<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
23709  [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
237102 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
23711<p>These are sorted in order of increasing <code>Pin</code>; it is
23712required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
23713define a complete mapping.<wbr/> For input values between control points,<wbr/>
23714the camera device must linearly interpolate between the control
23715points.<wbr/></p>
23716<p>Each curve can have an independent number of points,<wbr/> and the number
23717of points can be less than max (that is,<wbr/> the request doesn't have to
23718always provide a curve with number of points equivalent to
23719<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
23720<p>A few examples,<wbr/> and their corresponding graphical mappings; these
23721only specify the red channel and the precision is limited to 4
23722digits,<wbr/> for conciseness.<wbr/></p>
23723<p>Linear mapping:</p>
23724<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 ]
23725</code></pre>
23726<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
23727<p>Invert mapping:</p>
23728<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 ]
23729</code></pre>
23730<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
23731<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
23732<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
23733  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/>
23734  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/>
23735  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/>
23736  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 ]
23737</code></pre>
23738<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
23739<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
23740<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
23741  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/>
23742  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/>
23743  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/>
23744  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 ]
23745</code></pre>
23746<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
23747            </td>
23748          </tr>
23749
23750          <tr class="entries_header">
23751            <th class="th_details" colspan="5">HAL Implementation Details</th>
23752          </tr>
23753          <tr class="entry_cont">
23754            <td class="entry_details" colspan="5">
23755              <p>For good quality of mapping,<wbr/> at least 128 control points are
23756preferred.<wbr/></p>
23757<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
23758control points used as are available.<wbr/></p>
23759            </td>
23760          </tr>
23761
23762          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23763           <!-- end of entry -->
23764        
23765                
23766          <tr class="entry" id="controls_android.tonemap.curve">
23767            <td class="entry_name
23768             " rowspan="5">
23769              android.<wbr/>tonemap.<wbr/>curve
23770            </td>
23771            <td class="entry_type">
23772                <span class="entry_type_name">float</span>
23773
23774              <span class="entry_type_visibility"> [public as tonemapCurve]</span>
23775
23776              <span class="entry_type_synthetic">[synthetic] </span>
23777
23778              <span class="entry_type_hwlevel">[full] </span>
23779
23780
23781
23782
23783            </td> <!-- entry_type -->
23784
23785            <td class="entry_description">
23786              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
23787is CONTRAST_<wbr/>CURVE.<wbr/></p>
23788            </td>
23789
23790            <td class="entry_units">
23791            </td>
23792
23793            <td class="entry_range">
23794            </td>
23795
23796            <td class="entry_tags">
23797            </td>
23798
23799          </tr>
23800          <tr class="entries_header">
23801            <th class="th_details" colspan="5">Details</th>
23802          </tr>
23803          <tr class="entry_cont">
23804            <td class="entry_details" colspan="5">
23805              <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
23806channels respectively.<wbr/> The following example uses the red channel as an
23807example.<wbr/> The same logic applies to green and blue channel.<wbr/>
23808Each channel's curve is defined by an array of control points:</p>
23809<pre><code>curveRed =
23810  [ 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) ]
238112 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
23812<p>These are sorted in order of increasing <code>Pin</code>; it is always
23813guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
23814define a complete mapping.<wbr/> For input values between control points,<wbr/>
23815the camera device must linearly interpolate between the control
23816points.<wbr/></p>
23817<p>Each curve can have an independent number of points,<wbr/> and the number
23818of points can be less than max (that is,<wbr/> the request doesn't have to
23819always provide a curve with number of points equivalent to
23820<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
23821<p>A few examples,<wbr/> and their corresponding graphical mappings; these
23822only specify the red channel and the precision is limited to 4
23823digits,<wbr/> for conciseness.<wbr/></p>
23824<p>Linear mapping:</p>
23825<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
23826</code></pre>
23827<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
23828<p>Invert mapping:</p>
23829<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
23830</code></pre>
23831<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
23832<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
23833<pre><code>curveRed = [
23834  (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/>
23835  (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/>
23836  (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/>
23837  (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) ]
23838</code></pre>
23839<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
23840<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
23841<pre><code>curveRed = [
23842  (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/>
23843  (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/>
23844  (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/>
23845  (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) ]
23846</code></pre>
23847<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
23848            </td>
23849          </tr>
23850
23851          <tr class="entries_header">
23852            <th class="th_details" colspan="5">HAL Implementation Details</th>
23853          </tr>
23854          <tr class="entry_cont">
23855            <td class="entry_details" colspan="5">
23856              <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
23857curveBlue entries.<wbr/></p>
23858            </td>
23859          </tr>
23860
23861          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23862           <!-- end of entry -->
23863        
23864                
23865          <tr class="entry" id="controls_android.tonemap.mode">
23866            <td class="entry_name
23867             " rowspan="3">
23868              android.<wbr/>tonemap.<wbr/>mode
23869            </td>
23870            <td class="entry_type">
23871                <span class="entry_type_name entry_type_name_enum">byte</span>
23872
23873              <span class="entry_type_visibility"> [public]</span>
23874
23875
23876              <span class="entry_type_hwlevel">[full] </span>
23877
23878
23879
23880                <ul class="entry_type_enum">
23881                  <li>
23882                    <span class="entry_type_enum_name">CONTRAST_CURVE</span>
23883                    <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
23884the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
23885<p>All color enhancement and tonemapping must be disabled,<wbr/> except
23886for applying the tonemapping curve specified by
23887<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
23888<p>Must not slow down frame rate relative to raw
23889sensor output.<wbr/></p></span>
23890                  </li>
23891                  <li>
23892                    <span class="entry_type_enum_name">FAST</span>
23893                    <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
23894reducing frame rate compared to raw sensor output.<wbr/></p></span>
23895                  </li>
23896                  <li>
23897                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
23898                    <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
23899the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
23900                  </li>
23901                  <li>
23902                    <span class="entry_type_enum_name">GAMMA_VALUE</span>
23903                    <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
23904tonemapping.<wbr/></p>
23905<p>All color enhancement and tonemapping must be disabled,<wbr/> except
23906for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
23907<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
23908                  </li>
23909                  <li>
23910                    <span class="entry_type_enum_name">PRESET_CURVE</span>
23911                    <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
23912<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
23913<p>All color enhancement and tonemapping must be disabled,<wbr/> except
23914for applying the tonemapping curve specified by
23915<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
23916<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
23917                  </li>
23918                </ul>
23919
23920            </td> <!-- entry_type -->
23921
23922            <td class="entry_description">
23923              <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
23924            </td>
23925
23926            <td class="entry_units">
23927            </td>
23928
23929            <td class="entry_range">
23930              <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
23931            </td>
23932
23933            <td class="entry_tags">
23934            </td>
23935
23936          </tr>
23937          <tr class="entries_header">
23938            <th class="th_details" colspan="5">Details</th>
23939          </tr>
23940          <tr class="entry_cont">
23941            <td class="entry_details" colspan="5">
23942              <p>When switching to an application-defined contrast curve by setting
23943<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
23944per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
23945mapping from input high-bit-depth pixel value to the output
23946low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
23947and output may change depending on the camera pipeline,<wbr/> the values
23948are specified by normalized floating-point numbers.<wbr/></p>
23949<p>More-complex color mapping operations such as 3D color look-up
23950tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
23951transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23952CONTRAST_<wbr/>CURVE.<wbr/></p>
23953<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
23954emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
23955These values are always available,<wbr/> and as close as possible to the
23956actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
23957<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
23958provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
23959roughly the same.<wbr/></p>
23960            </td>
23961          </tr>
23962
23963
23964          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23965           <!-- end of entry -->
23966        
23967                
23968          <tr class="entry" id="controls_android.tonemap.gamma">
23969            <td class="entry_name
23970             " rowspan="3">
23971              android.<wbr/>tonemap.<wbr/>gamma
23972            </td>
23973            <td class="entry_type">
23974                <span class="entry_type_name">float</span>
23975
23976              <span class="entry_type_visibility"> [public]</span>
23977
23978
23979
23980
23981
23982
23983            </td> <!-- entry_type -->
23984
23985            <td class="entry_description">
23986              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23987GAMMA_<wbr/>VALUE</p>
23988            </td>
23989
23990            <td class="entry_units">
23991            </td>
23992
23993            <td class="entry_range">
23994            </td>
23995
23996            <td class="entry_tags">
23997            </td>
23998
23999          </tr>
24000          <tr class="entries_header">
24001            <th class="th_details" colspan="5">Details</th>
24002          </tr>
24003          <tr class="entry_cont">
24004            <td class="entry_details" colspan="5">
24005              <p>The tonemap curve will be defined the following formula:
24006* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
24007where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
24008pow is the power function and gamma is the gamma value specified by this
24009key.<wbr/></p>
24010<p>The same curve will be applied to all color channels.<wbr/> The camera device
24011may clip the input gamma value to its supported range.<wbr/> The actual applied
24012value will be returned in capture result.<wbr/></p>
24013<p>The valid range of gamma value varies on different devices,<wbr/> but values
24014within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
24015            </td>
24016          </tr>
24017
24018
24019          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24020           <!-- end of entry -->
24021        
24022                
24023          <tr class="entry" id="controls_android.tonemap.presetCurve">
24024            <td class="entry_name
24025             " rowspan="3">
24026              android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
24027            </td>
24028            <td class="entry_type">
24029                <span class="entry_type_name entry_type_name_enum">byte</span>
24030
24031              <span class="entry_type_visibility"> [public]</span>
24032
24033
24034
24035
24036
24037                <ul class="entry_type_enum">
24038                  <li>
24039                    <span class="entry_type_enum_name">SRGB</span>
24040                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
24041                  </li>
24042                  <li>
24043                    <span class="entry_type_enum_name">REC709</span>
24044                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
24045                  </li>
24046                </ul>
24047
24048            </td> <!-- entry_type -->
24049
24050            <td class="entry_description">
24051              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24052PRESET_<wbr/>CURVE</p>
24053            </td>
24054
24055            <td class="entry_units">
24056            </td>
24057
24058            <td class="entry_range">
24059            </td>
24060
24061            <td class="entry_tags">
24062            </td>
24063
24064          </tr>
24065          <tr class="entries_header">
24066            <th class="th_details" colspan="5">Details</th>
24067          </tr>
24068          <tr class="entry_cont">
24069            <td class="entry_details" colspan="5">
24070              <p>The tonemap curve will be defined by specified standard.<wbr/></p>
24071<p>sRGB (approximated by 16 control points):</p>
24072<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24073<p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
24074<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
24075<p>Note that above figures show a 16 control points approximation of preset
24076curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
24077            </td>
24078          </tr>
24079
24080
24081          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24082           <!-- end of entry -->
24083        
24084        
24085
24086      <!-- end of kind -->
24087      </tbody>
24088      <tr><td colspan="6" class="kind">static</td></tr>
24089
24090      <thead class="entries_header">
24091        <tr>
24092          <th class="th_name">Property Name</th>
24093          <th class="th_type">Type</th>
24094          <th class="th_description">Description</th>
24095          <th class="th_units">Units</th>
24096          <th class="th_range">Range</th>
24097          <th class="th_tags">Tags</th>
24098        </tr>
24099      </thead>
24100
24101      <tbody>
24102
24103        
24104
24105        
24106
24107        
24108
24109        
24110
24111                
24112          <tr class="entry" id="static_android.tonemap.maxCurvePoints">
24113            <td class="entry_name
24114             " rowspan="5">
24115              android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
24116            </td>
24117            <td class="entry_type">
24118                <span class="entry_type_name">int32</span>
24119
24120              <span class="entry_type_visibility"> [public]</span>
24121
24122
24123              <span class="entry_type_hwlevel">[full] </span>
24124
24125
24126
24127
24128            </td> <!-- entry_type -->
24129
24130            <td class="entry_description">
24131              <p>Maximum number of supported points in the
24132tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
24133            </td>
24134
24135            <td class="entry_units">
24136            </td>
24137
24138            <td class="entry_range">
24139            </td>
24140
24141            <td class="entry_tags">
24142            </td>
24143
24144          </tr>
24145          <tr class="entries_header">
24146            <th class="th_details" colspan="5">Details</th>
24147          </tr>
24148          <tr class="entry_cont">
24149            <td class="entry_details" colspan="5">
24150              <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
24151less than this maximum,<wbr/> the camera device will resample the curve to its internal
24152representation,<wbr/> using linear interpolation.<wbr/></p>
24153<p>The output curves in the result metadata may have a different number
24154of points than the input curves,<wbr/> and will represent the actual
24155hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
24156            </td>
24157          </tr>
24158
24159          <tr class="entries_header">
24160            <th class="th_details" colspan="5">HAL Implementation Details</th>
24161          </tr>
24162          <tr class="entry_cont">
24163            <td class="entry_details" colspan="5">
24164              <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
24165            </td>
24166          </tr>
24167
24168          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24169           <!-- end of entry -->
24170        
24171                
24172          <tr class="entry" id="static_android.tonemap.availableToneMapModes">
24173            <td class="entry_name
24174             " rowspan="5">
24175              android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
24176            </td>
24177            <td class="entry_type">
24178                <span class="entry_type_name">byte</span>
24179                <span class="entry_type_container">x</span>
24180
24181                <span class="entry_type_array">
24182                  n
24183                </span>
24184              <span class="entry_type_visibility"> [public as enumList]</span>
24185
24186
24187              <span class="entry_type_hwlevel">[full] </span>
24188
24189
24190                <div class="entry_type_notes">list of enums</div>
24191
24192
24193            </td> <!-- entry_type -->
24194
24195            <td class="entry_description">
24196              <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
24197device.<wbr/></p>
24198            </td>
24199
24200            <td class="entry_units">
24201            </td>
24202
24203            <td class="entry_range">
24204              <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
24205            </td>
24206
24207            <td class="entry_tags">
24208            </td>
24209
24210          </tr>
24211          <tr class="entries_header">
24212            <th class="th_details" colspan="5">Details</th>
24213          </tr>
24214          <tr class="entry_cont">
24215            <td class="entry_details" colspan="5">
24216              <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
24217at least one of below mode combinations:</p>
24218<ul>
24219<li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
24220<li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
24221</ul>
24222<p>This includes all FULL level devices.<wbr/></p>
24223            </td>
24224          </tr>
24225
24226          <tr class="entries_header">
24227            <th class="th_details" colspan="5">HAL Implementation Details</th>
24228          </tr>
24229          <tr class="entry_cont">
24230            <td class="entry_details" colspan="5">
24231              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
24232on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
24233That is,<wbr/> if the highest quality implementation on the camera device does not slow down
24234capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
24235            </td>
24236          </tr>
24237
24238          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24239           <!-- end of entry -->
24240        
24241        
24242
24243      <!-- end of kind -->
24244      </tbody>
24245      <tr><td colspan="6" class="kind">dynamic</td></tr>
24246
24247      <thead class="entries_header">
24248        <tr>
24249          <th class="th_name">Property Name</th>
24250          <th class="th_type">Type</th>
24251          <th class="th_description">Description</th>
24252          <th class="th_units">Units</th>
24253          <th class="th_range">Range</th>
24254          <th class="th_tags">Tags</th>
24255        </tr>
24256      </thead>
24257
24258      <tbody>
24259
24260        
24261
24262        
24263
24264        
24265
24266        
24267
24268                
24269          <tr class="entry" id="dynamic_android.tonemap.curveBlue">
24270            <td class="entry_name
24271             " rowspan="3">
24272              android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
24273            </td>
24274            <td class="entry_type">
24275                <span class="entry_type_name">float</span>
24276                <span class="entry_type_container">x</span>
24277
24278                <span class="entry_type_array">
24279                  n x 2
24280                </span>
24281              <span class="entry_type_visibility"> [hidden]</span>
24282
24283
24284              <span class="entry_type_hwlevel">[full] </span>
24285
24286
24287                <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>
24288
24289
24290            </td> <!-- entry_type -->
24291
24292            <td class="entry_description">
24293              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
24294channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24295CONTRAST_<wbr/>CURVE.<wbr/></p>
24296            </td>
24297
24298            <td class="entry_units">
24299            </td>
24300
24301            <td class="entry_range">
24302            </td>
24303
24304            <td class="entry_tags">
24305            </td>
24306
24307          </tr>
24308          <tr class="entries_header">
24309            <th class="th_details" colspan="5">Details</th>
24310          </tr>
24311          <tr class="entry_cont">
24312            <td class="entry_details" colspan="5">
24313              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
24314            </td>
24315          </tr>
24316
24317
24318          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24319           <!-- end of entry -->
24320        
24321                
24322          <tr class="entry" id="dynamic_android.tonemap.curveGreen">
24323            <td class="entry_name
24324             " rowspan="3">
24325              android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
24326            </td>
24327            <td class="entry_type">
24328                <span class="entry_type_name">float</span>
24329                <span class="entry_type_container">x</span>
24330
24331                <span class="entry_type_array">
24332                  n x 2
24333                </span>
24334              <span class="entry_type_visibility"> [hidden]</span>
24335
24336
24337              <span class="entry_type_hwlevel">[full] </span>
24338
24339
24340                <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>
24341
24342
24343            </td> <!-- entry_type -->
24344
24345            <td class="entry_description">
24346              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
24347channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24348CONTRAST_<wbr/>CURVE.<wbr/></p>
24349            </td>
24350
24351            <td class="entry_units">
24352            </td>
24353
24354            <td class="entry_range">
24355            </td>
24356
24357            <td class="entry_tags">
24358            </td>
24359
24360          </tr>
24361          <tr class="entries_header">
24362            <th class="th_details" colspan="5">Details</th>
24363          </tr>
24364          <tr class="entry_cont">
24365            <td class="entry_details" colspan="5">
24366              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
24367            </td>
24368          </tr>
24369
24370
24371          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24372           <!-- end of entry -->
24373        
24374                
24375          <tr class="entry" id="dynamic_android.tonemap.curveRed">
24376            <td class="entry_name
24377             " rowspan="5">
24378              android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
24379            </td>
24380            <td class="entry_type">
24381                <span class="entry_type_name">float</span>
24382                <span class="entry_type_container">x</span>
24383
24384                <span class="entry_type_array">
24385                  n x 2
24386                </span>
24387              <span class="entry_type_visibility"> [hidden]</span>
24388
24389
24390              <span class="entry_type_hwlevel">[full] </span>
24391
24392
24393                <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>
24394
24395
24396            </td> <!-- entry_type -->
24397
24398            <td class="entry_description">
24399              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
24400channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24401CONTRAST_<wbr/>CURVE.<wbr/></p>
24402            </td>
24403
24404            <td class="entry_units">
24405            </td>
24406
24407            <td class="entry_range">
24408              <p>0-1 on both input and output coordinates,<wbr/> normalized
24409as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
24410            </td>
24411
24412            <td class="entry_tags">
24413            </td>
24414
24415          </tr>
24416          <tr class="entries_header">
24417            <th class="th_details" colspan="5">Details</th>
24418          </tr>
24419          <tr class="entry_cont">
24420            <td class="entry_details" colspan="5">
24421              <p>Each channel's curve is defined by an array of control points:</p>
24422<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
24423  [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
244242 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
24425<p>These are sorted in order of increasing <code>Pin</code>; it is
24426required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
24427define a complete mapping.<wbr/> For input values between control points,<wbr/>
24428the camera device must linearly interpolate between the control
24429points.<wbr/></p>
24430<p>Each curve can have an independent number of points,<wbr/> and the number
24431of points can be less than max (that is,<wbr/> the request doesn't have to
24432always provide a curve with number of points equivalent to
24433<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
24434<p>A few examples,<wbr/> and their corresponding graphical mappings; these
24435only specify the red channel and the precision is limited to 4
24436digits,<wbr/> for conciseness.<wbr/></p>
24437<p>Linear mapping:</p>
24438<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 ]
24439</code></pre>
24440<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
24441<p>Invert mapping:</p>
24442<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 ]
24443</code></pre>
24444<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
24445<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
24446<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
24447  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/>
24448  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/>
24449  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/>
24450  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 ]
24451</code></pre>
24452<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
24453<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
24454<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
24455  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/>
24456  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/>
24457  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/>
24458  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 ]
24459</code></pre>
24460<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24461            </td>
24462          </tr>
24463
24464          <tr class="entries_header">
24465            <th class="th_details" colspan="5">HAL Implementation Details</th>
24466          </tr>
24467          <tr class="entry_cont">
24468            <td class="entry_details" colspan="5">
24469              <p>For good quality of mapping,<wbr/> at least 128 control points are
24470preferred.<wbr/></p>
24471<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
24472control points used as are available.<wbr/></p>
24473            </td>
24474          </tr>
24475
24476          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24477           <!-- end of entry -->
24478        
24479                
24480          <tr class="entry" id="dynamic_android.tonemap.curve">
24481            <td class="entry_name
24482             " rowspan="5">
24483              android.<wbr/>tonemap.<wbr/>curve
24484            </td>
24485            <td class="entry_type">
24486                <span class="entry_type_name">float</span>
24487
24488              <span class="entry_type_visibility"> [public as tonemapCurve]</span>
24489
24490              <span class="entry_type_synthetic">[synthetic] </span>
24491
24492              <span class="entry_type_hwlevel">[full] </span>
24493
24494
24495
24496
24497            </td> <!-- entry_type -->
24498
24499            <td class="entry_description">
24500              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
24501is CONTRAST_<wbr/>CURVE.<wbr/></p>
24502            </td>
24503
24504            <td class="entry_units">
24505            </td>
24506
24507            <td class="entry_range">
24508            </td>
24509
24510            <td class="entry_tags">
24511            </td>
24512
24513          </tr>
24514          <tr class="entries_header">
24515            <th class="th_details" colspan="5">Details</th>
24516          </tr>
24517          <tr class="entry_cont">
24518            <td class="entry_details" colspan="5">
24519              <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
24520channels respectively.<wbr/> The following example uses the red channel as an
24521example.<wbr/> The same logic applies to green and blue channel.<wbr/>
24522Each channel's curve is defined by an array of control points:</p>
24523<pre><code>curveRed =
24524  [ 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) ]
245252 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
24526<p>These are sorted in order of increasing <code>Pin</code>; it is always
24527guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
24528define a complete mapping.<wbr/> For input values between control points,<wbr/>
24529the camera device must linearly interpolate between the control
24530points.<wbr/></p>
24531<p>Each curve can have an independent number of points,<wbr/> and the number
24532of points can be less than max (that is,<wbr/> the request doesn't have to
24533always provide a curve with number of points equivalent to
24534<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
24535<p>A few examples,<wbr/> and their corresponding graphical mappings; these
24536only specify the red channel and the precision is limited to 4
24537digits,<wbr/> for conciseness.<wbr/></p>
24538<p>Linear mapping:</p>
24539<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
24540</code></pre>
24541<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
24542<p>Invert mapping:</p>
24543<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
24544</code></pre>
24545<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
24546<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
24547<pre><code>curveRed = [
24548  (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/>
24549  (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/>
24550  (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/>
24551  (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) ]
24552</code></pre>
24553<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
24554<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
24555<pre><code>curveRed = [
24556  (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/>
24557  (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/>
24558  (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/>
24559  (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) ]
24560</code></pre>
24561<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24562            </td>
24563          </tr>
24564
24565          <tr class="entries_header">
24566            <th class="th_details" colspan="5">HAL Implementation Details</th>
24567          </tr>
24568          <tr class="entry_cont">
24569            <td class="entry_details" colspan="5">
24570              <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
24571curveBlue entries.<wbr/></p>
24572            </td>
24573          </tr>
24574
24575          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24576           <!-- end of entry -->
24577        
24578                
24579          <tr class="entry" id="dynamic_android.tonemap.mode">
24580            <td class="entry_name
24581             " rowspan="3">
24582              android.<wbr/>tonemap.<wbr/>mode
24583            </td>
24584            <td class="entry_type">
24585                <span class="entry_type_name entry_type_name_enum">byte</span>
24586
24587              <span class="entry_type_visibility"> [public]</span>
24588
24589
24590              <span class="entry_type_hwlevel">[full] </span>
24591
24592
24593
24594                <ul class="entry_type_enum">
24595                  <li>
24596                    <span class="entry_type_enum_name">CONTRAST_CURVE</span>
24597                    <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
24598the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
24599<p>All color enhancement and tonemapping must be disabled,<wbr/> except
24600for applying the tonemapping curve specified by
24601<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
24602<p>Must not slow down frame rate relative to raw
24603sensor output.<wbr/></p></span>
24604                  </li>
24605                  <li>
24606                    <span class="entry_type_enum_name">FAST</span>
24607                    <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
24608reducing frame rate compared to raw sensor output.<wbr/></p></span>
24609                  </li>
24610                  <li>
24611                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
24612                    <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
24613the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
24614                  </li>
24615                  <li>
24616                    <span class="entry_type_enum_name">GAMMA_VALUE</span>
24617                    <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
24618tonemapping.<wbr/></p>
24619<p>All color enhancement and tonemapping must be disabled,<wbr/> except
24620for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
24621<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
24622                  </li>
24623                  <li>
24624                    <span class="entry_type_enum_name">PRESET_CURVE</span>
24625                    <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
24626<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
24627<p>All color enhancement and tonemapping must be disabled,<wbr/> except
24628for applying the tonemapping curve specified by
24629<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
24630<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
24631                  </li>
24632                </ul>
24633
24634            </td> <!-- entry_type -->
24635
24636            <td class="entry_description">
24637              <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
24638            </td>
24639
24640            <td class="entry_units">
24641            </td>
24642
24643            <td class="entry_range">
24644              <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
24645            </td>
24646
24647            <td class="entry_tags">
24648            </td>
24649
24650          </tr>
24651          <tr class="entries_header">
24652            <th class="th_details" colspan="5">Details</th>
24653          </tr>
24654          <tr class="entry_cont">
24655            <td class="entry_details" colspan="5">
24656              <p>When switching to an application-defined contrast curve by setting
24657<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
24658per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
24659mapping from input high-bit-depth pixel value to the output
24660low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
24661and output may change depending on the camera pipeline,<wbr/> the values
24662are specified by normalized floating-point numbers.<wbr/></p>
24663<p>More-complex color mapping operations such as 3D color look-up
24664tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
24665transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24666CONTRAST_<wbr/>CURVE.<wbr/></p>
24667<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
24668emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
24669These values are always available,<wbr/> and as close as possible to the
24670actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
24671<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
24672provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
24673roughly the same.<wbr/></p>
24674            </td>
24675          </tr>
24676
24677
24678          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24679           <!-- end of entry -->
24680        
24681                
24682          <tr class="entry" id="dynamic_android.tonemap.gamma">
24683            <td class="entry_name
24684             " rowspan="3">
24685              android.<wbr/>tonemap.<wbr/>gamma
24686            </td>
24687            <td class="entry_type">
24688                <span class="entry_type_name">float</span>
24689
24690              <span class="entry_type_visibility"> [public]</span>
24691
24692
24693
24694
24695
24696
24697            </td> <!-- entry_type -->
24698
24699            <td class="entry_description">
24700              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24701GAMMA_<wbr/>VALUE</p>
24702            </td>
24703
24704            <td class="entry_units">
24705            </td>
24706
24707            <td class="entry_range">
24708            </td>
24709
24710            <td class="entry_tags">
24711            </td>
24712
24713          </tr>
24714          <tr class="entries_header">
24715            <th class="th_details" colspan="5">Details</th>
24716          </tr>
24717          <tr class="entry_cont">
24718            <td class="entry_details" colspan="5">
24719              <p>The tonemap curve will be defined the following formula:
24720* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
24721where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
24722pow is the power function and gamma is the gamma value specified by this
24723key.<wbr/></p>
24724<p>The same curve will be applied to all color channels.<wbr/> The camera device
24725may clip the input gamma value to its supported range.<wbr/> The actual applied
24726value will be returned in capture result.<wbr/></p>
24727<p>The valid range of gamma value varies on different devices,<wbr/> but values
24728within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
24729            </td>
24730          </tr>
24731
24732
24733          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24734           <!-- end of entry -->
24735        
24736                
24737          <tr class="entry" id="dynamic_android.tonemap.presetCurve">
24738            <td class="entry_name
24739             " rowspan="3">
24740              android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
24741            </td>
24742            <td class="entry_type">
24743                <span class="entry_type_name entry_type_name_enum">byte</span>
24744
24745              <span class="entry_type_visibility"> [public]</span>
24746
24747
24748
24749
24750
24751                <ul class="entry_type_enum">
24752                  <li>
24753                    <span class="entry_type_enum_name">SRGB</span>
24754                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
24755                  </li>
24756                  <li>
24757                    <span class="entry_type_enum_name">REC709</span>
24758                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
24759                  </li>
24760                </ul>
24761
24762            </td> <!-- entry_type -->
24763
24764            <td class="entry_description">
24765              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24766PRESET_<wbr/>CURVE</p>
24767            </td>
24768
24769            <td class="entry_units">
24770            </td>
24771
24772            <td class="entry_range">
24773            </td>
24774
24775            <td class="entry_tags">
24776            </td>
24777
24778          </tr>
24779          <tr class="entries_header">
24780            <th class="th_details" colspan="5">Details</th>
24781          </tr>
24782          <tr class="entry_cont">
24783            <td class="entry_details" colspan="5">
24784              <p>The tonemap curve will be defined by specified standard.<wbr/></p>
24785<p>sRGB (approximated by 16 control points):</p>
24786<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24787<p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
24788<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
24789<p>Note that above figures show a 16 control points approximation of preset
24790curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
24791            </td>
24792          </tr>
24793
24794
24795          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24796           <!-- end of entry -->
24797        
24798        
24799
24800      <!-- end of kind -->
24801      </tbody>
24802
24803  <!-- end of section -->
24804  <tr><td colspan="6" id="section_led" class="section">led</td></tr>
24805
24806
24807      <tr><td colspan="6" class="kind">controls</td></tr>
24808
24809      <thead class="entries_header">
24810        <tr>
24811          <th class="th_name">Property Name</th>
24812          <th class="th_type">Type</th>
24813          <th class="th_description">Description</th>
24814          <th class="th_units">Units</th>
24815          <th class="th_range">Range</th>
24816          <th class="th_tags">Tags</th>
24817        </tr>
24818      </thead>
24819
24820      <tbody>
24821
24822        
24823
24824        
24825
24826        
24827
24828        
24829
24830                
24831          <tr class="entry" id="controls_android.led.transmit">
24832            <td class="entry_name
24833             " rowspan="1">
24834              android.<wbr/>led.<wbr/>transmit
24835            </td>
24836            <td class="entry_type">
24837                <span class="entry_type_name entry_type_name_enum">byte</span>
24838
24839              <span class="entry_type_visibility"> [hidden as boolean]</span>
24840
24841
24842
24843
24844
24845                <ul class="entry_type_enum">
24846                  <li>
24847                    <span class="entry_type_enum_name">OFF</span>
24848                  </li>
24849                  <li>
24850                    <span class="entry_type_enum_name">ON</span>
24851                  </li>
24852                </ul>
24853
24854            </td> <!-- entry_type -->
24855
24856            <td class="entry_description">
24857              <p>This LED is nominally used to indicate to the user
24858that the camera is powered on and may be streaming images back to the
24859Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
24860disable this when video is processed locally and not transmitted to
24861any untrusted applications.<wbr/></p>
24862<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
24863transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
24864data is stored locally on the device.<wbr/></p>
24865<p>The LED <em>may</em> be off if a trusted application is using the data that
24866doesn't violate the above rules.<wbr/></p>
24867            </td>
24868
24869            <td class="entry_units">
24870            </td>
24871
24872            <td class="entry_range">
24873            </td>
24874
24875            <td class="entry_tags">
24876            </td>
24877
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">dynamic</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="dynamic_android.led.transmit">
24913            <td class="entry_name
24914             " rowspan="1">
24915              android.<wbr/>led.<wbr/>transmit
24916            </td>
24917            <td class="entry_type">
24918                <span class="entry_type_name entry_type_name_enum">byte</span>
24919
24920              <span class="entry_type_visibility"> [hidden as boolean]</span>
24921
24922
24923
24924
24925
24926                <ul class="entry_type_enum">
24927                  <li>
24928                    <span class="entry_type_enum_name">OFF</span>
24929                  </li>
24930                  <li>
24931                    <span class="entry_type_enum_name">ON</span>
24932                  </li>
24933                </ul>
24934
24935            </td> <!-- entry_type -->
24936
24937            <td class="entry_description">
24938              <p>This LED is nominally used to indicate to the user
24939that the camera is powered on and may be streaming images back to the
24940Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
24941disable this when video is processed locally and not transmitted to
24942any untrusted applications.<wbr/></p>
24943<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
24944transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
24945data is stored locally on the device.<wbr/></p>
24946<p>The LED <em>may</em> be off if a trusted application is using the data that
24947doesn't violate the above rules.<wbr/></p>
24948            </td>
24949
24950            <td class="entry_units">
24951            </td>
24952
24953            <td class="entry_range">
24954            </td>
24955
24956            <td class="entry_tags">
24957            </td>
24958
24959          </tr>
24960
24961
24962          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24963           <!-- end of entry -->
24964        
24965        
24966
24967      <!-- end of kind -->
24968      </tbody>
24969      <tr><td colspan="6" class="kind">static</td></tr>
24970
24971      <thead class="entries_header">
24972        <tr>
24973          <th class="th_name">Property Name</th>
24974          <th class="th_type">Type</th>
24975          <th class="th_description">Description</th>
24976          <th class="th_units">Units</th>
24977          <th class="th_range">Range</th>
24978          <th class="th_tags">Tags</th>
24979        </tr>
24980      </thead>
24981
24982      <tbody>
24983
24984        
24985
24986        
24987
24988        
24989
24990        
24991
24992                
24993          <tr class="entry" id="static_android.led.availableLeds">
24994            <td class="entry_name
24995             " rowspan="1">
24996              android.<wbr/>led.<wbr/>available<wbr/>Leds
24997            </td>
24998            <td class="entry_type">
24999                <span class="entry_type_name entry_type_name_enum">byte</span>
25000                <span class="entry_type_container">x</span>
25001
25002                <span class="entry_type_array">
25003                  n
25004                </span>
25005              <span class="entry_type_visibility"> [hidden]</span>
25006
25007
25008
25009
25010
25011                <ul class="entry_type_enum">
25012                  <li>
25013                    <span class="entry_type_enum_name">TRANSMIT</span>
25014                    <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>
25015                  </li>
25016                </ul>
25017
25018            </td> <!-- entry_type -->
25019
25020            <td class="entry_description">
25021              <p>A list of camera LEDs that are available on this system.<wbr/></p>
25022            </td>
25023
25024            <td class="entry_units">
25025            </td>
25026
25027            <td class="entry_range">
25028            </td>
25029
25030            <td class="entry_tags">
25031            </td>
25032
25033          </tr>
25034
25035
25036          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25037           <!-- end of entry -->
25038        
25039        
25040
25041      <!-- end of kind -->
25042      </tbody>
25043
25044  <!-- end of section -->
25045  <tr><td colspan="6" id="section_info" class="section">info</td></tr>
25046
25047
25048      <tr><td colspan="6" class="kind">static</td></tr>
25049
25050      <thead class="entries_header">
25051        <tr>
25052          <th class="th_name">Property Name</th>
25053          <th class="th_type">Type</th>
25054          <th class="th_description">Description</th>
25055          <th class="th_units">Units</th>
25056          <th class="th_range">Range</th>
25057          <th class="th_tags">Tags</th>
25058        </tr>
25059      </thead>
25060
25061      <tbody>
25062
25063        
25064
25065        
25066
25067        
25068
25069        
25070
25071                
25072          <tr class="entry" id="static_android.info.supportedHardwareLevel">
25073            <td class="entry_name
25074             " rowspan="5">
25075              android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
25076            </td>
25077            <td class="entry_type">
25078                <span class="entry_type_name entry_type_name_enum">byte</span>
25079
25080              <span class="entry_type_visibility"> [public]</span>
25081
25082
25083              <span class="entry_type_hwlevel">[legacy] </span>
25084
25085
25086
25087                <ul class="entry_type_enum">
25088                  <li>
25089                    <span class="entry_type_enum_name">LIMITED</span>
25090                    <span class="entry_type_enum_notes"><p>This camera device has only limited capabilities.<wbr/></p></span>
25091                  </li>
25092                  <li>
25093                    <span class="entry_type_enum_name">FULL</span>
25094                    <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p></span>
25095                  </li>
25096                  <li>
25097                    <span class="entry_type_enum_name">LEGACY</span>
25098                    <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p></span>
25099                  </li>
25100                </ul>
25101
25102            </td> <!-- entry_type -->
25103
25104            <td class="entry_description">
25105              <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
25106            </td>
25107
25108            <td class="entry_units">
25109            </td>
25110
25111            <td class="entry_range">
25112            </td>
25113
25114            <td class="entry_tags">
25115            </td>
25116
25117          </tr>
25118          <tr class="entries_header">
25119            <th class="th_details" colspan="5">Details</th>
25120          </tr>
25121          <tr class="entry_cont">
25122            <td class="entry_details" colspan="5">
25123              <p>Camera devices will come in three flavors: LEGACY,<wbr/> LIMITED and FULL.<wbr/></p>
25124<p>A FULL device will support below capabilities:</p>
25125<ul>
25126<li>BURST_<wbr/>CAPTURE capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains BURST_<wbr/>CAPTURE)</li>
25127<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>
25128<li>Manual sensor control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR)</li>
25129<li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
25130  MANUAL_<wbr/>POST_<wbr/>PROCESSING)</li>
25131<li>At least 3 processed (but not stalling) format output streams
25132  (<a href="#static_android.request.maxNumOutputProc">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc</a> <code>&gt;=</code> 3)</li>
25133<li>The required stream configurations defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a></li>
25134<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>
25135<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>
25136</ul>
25137<p>A LIMITED device may have some or none of the above characteristics.<wbr/>
25138To find out more refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
25139<p>Some features are not part of any particular hardware level or capability and must be
25140queried separately.<wbr/> These include:</p>
25141<ul>
25142<li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
25143<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>
25144<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>
25145<li>Optical or electrical image stabilization
25146  (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
25147   <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
25148</ul>
25149<p>A LEGACY device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
25150post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/></p>
25151<p>Each higher level supports everything the lower level supports
25152in this order: FULL <code>&gt;</code> LIMITED <code>&gt;</code> LEGACY.<wbr/></p>
25153<p>Note:
25154Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
25155(<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>==</code> FREEFORM); this requirement was relaxed in API level 23,<wbr/>
25156and FULL devices may only support CENTERED cropping.<wbr/></p>
25157            </td>
25158          </tr>
25159
25160          <tr class="entries_header">
25161            <th class="th_details" colspan="5">HAL Implementation Details</th>
25162          </tr>
25163          <tr class="entry_cont">
25164            <td class="entry_details" colspan="5">
25165              <p>The camera 3 HAL device can implement one of two possible
25166operational modes; limited and full.<wbr/> Full support is
25167expected from new higher-end devices.<wbr/> Limited mode has
25168hardware requirements roughly in line with those for a
25169camera HAL device v1 implementation,<wbr/> and is expected from
25170older or inexpensive devices.<wbr/> Full is a strict superset of
25171limited,<wbr/> and they share the same essential operational flow.<wbr/></p>
25172<p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
25173<p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there
25174for backwards compatibility in the <code>android.<wbr/>hardware.<wbr/>camera2</code>
25175user-facing API only.<wbr/></p>
25176            </td>
25177          </tr>
25178
25179          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25180           <!-- end of entry -->
25181        
25182        
25183
25184      <!-- end of kind -->
25185      </tbody>
25186
25187  <!-- end of section -->
25188  <tr><td colspan="6" id="section_blackLevel" class="section">blackLevel</td></tr>
25189
25190
25191      <tr><td colspan="6" class="kind">controls</td></tr>
25192
25193      <thead class="entries_header">
25194        <tr>
25195          <th class="th_name">Property Name</th>
25196          <th class="th_type">Type</th>
25197          <th class="th_description">Description</th>
25198          <th class="th_units">Units</th>
25199          <th class="th_range">Range</th>
25200          <th class="th_tags">Tags</th>
25201        </tr>
25202      </thead>
25203
25204      <tbody>
25205
25206        
25207
25208        
25209
25210        
25211
25212        
25213
25214                
25215          <tr class="entry" id="controls_android.blackLevel.lock">
25216            <td class="entry_name
25217             " rowspan="5">
25218              android.<wbr/>black<wbr/>Level.<wbr/>lock
25219            </td>
25220            <td class="entry_type">
25221                <span class="entry_type_name entry_type_name_enum">byte</span>
25222
25223              <span class="entry_type_visibility"> [public as boolean]</span>
25224
25225
25226              <span class="entry_type_hwlevel">[full] </span>
25227
25228
25229
25230                <ul class="entry_type_enum">
25231                  <li>
25232                    <span class="entry_type_enum_name">OFF</span>
25233                  </li>
25234                  <li>
25235                    <span class="entry_type_enum_name">ON</span>
25236                  </li>
25237                </ul>
25238
25239            </td> <!-- entry_type -->
25240
25241            <td class="entry_description">
25242              <p>Whether black-level compensation is locked
25243to its current values,<wbr/> or is free to vary.<wbr/></p>
25244            </td>
25245
25246            <td class="entry_units">
25247            </td>
25248
25249            <td class="entry_range">
25250            </td>
25251
25252            <td class="entry_tags">
25253              <ul class="entry_tags">
25254                  <li><a href="#tag_HAL2">HAL2</a></li>
25255              </ul>
25256            </td>
25257
25258          </tr>
25259          <tr class="entries_header">
25260            <th class="th_details" colspan="5">Details</th>
25261          </tr>
25262          <tr class="entry_cont">
25263            <td class="entry_details" colspan="5">
25264              <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
25265compensation will not change until the lock is set to
25266<code>false</code> (OFF).<wbr/></p>
25267<p>Since changes to certain capture parameters (such as
25268exposure time) may require resetting of black level
25269compensation,<wbr/> the camera device must report whether setting
25270the black level lock was successful in the output result
25271metadata.<wbr/></p>
25272<p>For example,<wbr/> if a sequence of requests is as follows:</p>
25273<ul>
25274<li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
25275<li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
25276<li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
25277<li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
25278<li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
25279<li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
25280</ul>
25281<p>And the exposure change in Request 4 requires the camera
25282device to reset the black level offsets,<wbr/> then the output
25283result metadata is expected to be:</p>
25284<ul>
25285<li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
25286<li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
25287<li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
25288<li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
25289<li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
25290<li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
25291</ul>
25292<p>This indicates to the application that on frame 4,<wbr/> black
25293levels were reset due to exposure value changes,<wbr/> and pixel
25294values may not be consistent across captures.<wbr/></p>
25295<p>The camera device will maintain the lock to the extent
25296possible,<wbr/> only overriding the lock to OFF when changes to
25297other request parameters require a black level recalculation
25298or reset.<wbr/></p>
25299            </td>
25300          </tr>
25301
25302          <tr class="entries_header">
25303            <th class="th_details" colspan="5">HAL Implementation Details</th>
25304          </tr>
25305          <tr class="entry_cont">
25306            <td class="entry_details" colspan="5">
25307              <p>If for some reason black level locking is no longer possible
25308(for example,<wbr/> the analog gain has changed,<wbr/> which forces
25309black level offsets to be recalculated),<wbr/> then the HAL must
25310override this request (and it must report 'OFF' when this
25311does happen) until the next capture for which locking is
25312possible again.<wbr/></p>
25313            </td>
25314          </tr>
25315
25316          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25317           <!-- end of entry -->
25318        
25319        
25320
25321      <!-- end of kind -->
25322      </tbody>
25323      <tr><td colspan="6" class="kind">dynamic</td></tr>
25324
25325      <thead class="entries_header">
25326        <tr>
25327          <th class="th_name">Property Name</th>
25328          <th class="th_type">Type</th>
25329          <th class="th_description">Description</th>
25330          <th class="th_units">Units</th>
25331          <th class="th_range">Range</th>
25332          <th class="th_tags">Tags</th>
25333        </tr>
25334      </thead>
25335
25336      <tbody>
25337
25338        
25339
25340        
25341
25342        
25343
25344        
25345
25346                
25347          <tr class="entry" id="dynamic_android.blackLevel.lock">
25348            <td class="entry_name
25349             " rowspan="5">
25350              android.<wbr/>black<wbr/>Level.<wbr/>lock
25351            </td>
25352            <td class="entry_type">
25353                <span class="entry_type_name entry_type_name_enum">byte</span>
25354
25355              <span class="entry_type_visibility"> [public as boolean]</span>
25356
25357
25358              <span class="entry_type_hwlevel">[full] </span>
25359
25360
25361
25362                <ul class="entry_type_enum">
25363                  <li>
25364                    <span class="entry_type_enum_name">OFF</span>
25365                  </li>
25366                  <li>
25367                    <span class="entry_type_enum_name">ON</span>
25368                  </li>
25369                </ul>
25370
25371            </td> <!-- entry_type -->
25372
25373            <td class="entry_description">
25374              <p>Whether black-level compensation is locked
25375to its current values,<wbr/> or is free to vary.<wbr/></p>
25376            </td>
25377
25378            <td class="entry_units">
25379            </td>
25380
25381            <td class="entry_range">
25382            </td>
25383
25384            <td class="entry_tags">
25385              <ul class="entry_tags">
25386                  <li><a href="#tag_HAL2">HAL2</a></li>
25387              </ul>
25388            </td>
25389
25390          </tr>
25391          <tr class="entries_header">
25392            <th class="th_details" colspan="5">Details</th>
25393          </tr>
25394          <tr class="entry_cont">
25395            <td class="entry_details" colspan="5">
25396              <p>Whether the black level offset was locked for this frame.<wbr/>  Should be
25397ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
25398a change in other capture settings forced the camera device to
25399perform a black level reset.<wbr/></p>
25400            </td>
25401          </tr>
25402
25403          <tr class="entries_header">
25404            <th class="th_details" colspan="5">HAL Implementation Details</th>
25405          </tr>
25406          <tr class="entry_cont">
25407            <td class="entry_details" colspan="5">
25408              <p>If for some reason black level locking is no longer possible
25409(for example,<wbr/> the analog gain has changed,<wbr/> which forces
25410black level offsets to be recalculated),<wbr/> then the HAL must
25411override this request (and it must report 'OFF' when this
25412does happen) until the next capture for which locking is
25413possible again.<wbr/></p>
25414            </td>
25415          </tr>
25416
25417          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25418           <!-- end of entry -->
25419        
25420        
25421
25422      <!-- end of kind -->
25423      </tbody>
25424
25425  <!-- end of section -->
25426  <tr><td colspan="6" id="section_sync" class="section">sync</td></tr>
25427
25428
25429      <tr><td colspan="6" class="kind">dynamic</td></tr>
25430
25431      <thead class="entries_header">
25432        <tr>
25433          <th class="th_name">Property Name</th>
25434          <th class="th_type">Type</th>
25435          <th class="th_description">Description</th>
25436          <th class="th_units">Units</th>
25437          <th class="th_range">Range</th>
25438          <th class="th_tags">Tags</th>
25439        </tr>
25440      </thead>
25441
25442      <tbody>
25443
25444        
25445
25446        
25447
25448        
25449
25450        
25451
25452                
25453          <tr class="entry" id="dynamic_android.sync.frameNumber">
25454            <td class="entry_name
25455             " rowspan="5">
25456              android.<wbr/>sync.<wbr/>frame<wbr/>Number
25457            </td>
25458            <td class="entry_type">
25459                <span class="entry_type_name entry_type_name_enum">int64</span>
25460
25461              <span class="entry_type_visibility"> [hidden]</span>
25462
25463
25464              <span class="entry_type_hwlevel">[legacy] </span>
25465
25466
25467
25468                <ul class="entry_type_enum">
25469                  <li>
25470                    <span class="entry_type_enum_name">CONVERGING</span>
25471                    <span class="entry_type_enum_value">-1</span>
25472                    <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
25473<p>Synchronization is in progress,<wbr/> and reading metadata from this
25474result may include a mix of data that have taken effect since the
25475last synchronization time.<wbr/></p>
25476<p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
25477this value will update to the actual frame number frame number
25478the result is guaranteed to be synchronized to (as long as the
25479request settings remain constant).<wbr/></p></span>
25480                  </li>
25481                  <li>
25482                    <span class="entry_type_enum_name">UNKNOWN</span>
25483                    <span class="entry_type_enum_value">-2</span>
25484                    <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
25485<p>The result may have already converged,<wbr/> or it may be in
25486progress.<wbr/>  Reading from this result may include some mix
25487of settings from past requests.<wbr/></p>
25488<p>After a settings change,<wbr/> the new settings will eventually all
25489take effect for the output buffers and results.<wbr/> However,<wbr/> this
25490value will not change when that happens.<wbr/> Altering settings
25491rapidly may provide outcomes using mixes of settings from recent
25492requests.<wbr/></p>
25493<p>This value is intended primarily for backwards compatibility with
25494the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
25495                  </li>
25496                </ul>
25497
25498            </td> <!-- entry_type -->
25499
25500            <td class="entry_description">
25501              <p>The frame number corresponding to the last request
25502with which the output result (metadata + buffers) has been fully
25503synchronized.<wbr/></p>
25504            </td>
25505
25506            <td class="entry_units">
25507            </td>
25508
25509            <td class="entry_range">
25510              <p>Either a non-negative value corresponding to a
25511<code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
25512            </td>
25513
25514            <td class="entry_tags">
25515              <ul class="entry_tags">
25516                  <li><a href="#tag_V1">V1</a></li>
25517              </ul>
25518            </td>
25519
25520          </tr>
25521          <tr class="entries_header">
25522            <th class="th_details" colspan="5">Details</th>
25523          </tr>
25524          <tr class="entry_cont">
25525            <td class="entry_details" colspan="5">
25526              <p>When a request is submitted to the camera device,<wbr/> there is usually a
25527delay of several frames before the controls get applied.<wbr/> A camera
25528device may either choose to account for this delay by implementing a
25529pipeline and carefully submit well-timed atomic control updates,<wbr/> or
25530it may start streaming control changes that span over several frame
25531boundaries.<wbr/></p>
25532<p>In the latter case,<wbr/> whenever a request's settings change relative to
25533the previous submitted request,<wbr/> the full set of changes may take
25534multiple frame durations to fully take effect.<wbr/> Some settings may
25535take effect sooner (in less frame durations) than others.<wbr/></p>
25536<p>While a set of control changes are being propagated,<wbr/> this value
25537will be CONVERGING.<wbr/></p>
25538<p>Once it is fully known that a set of control changes have been
25539finished propagating,<wbr/> and the resulting updated control settings
25540have been read back by the camera device,<wbr/> this value will be set
25541to a non-negative frame number (corresponding to the request to
25542which the results have synchronized to).<wbr/></p>
25543<p>Older camera device implementations may not have a way to detect
25544when all camera controls have been applied,<wbr/> and will always set this
25545value to UNKNOWN.<wbr/></p>
25546<p>FULL capability devices will always have this value set to the
25547frame number of the request corresponding to this result.<wbr/></p>
25548<p><em>Further details</em>:</p>
25549<ul>
25550<li>Whenever a request differs from the last request,<wbr/> any future
25551results not yet returned may have this value set to CONVERGING (this
25552could include any in-progress captures not yet returned by the camera
25553device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
25554<li>Submitting a series of multiple requests that differ from the
25555previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
25556moves the new synchronization frame to the last non-repeating
25557request (using the smallest frame number from the contiguous list of
25558repeating requests).<wbr/></li>
25559<li>Submitting the same request repeatedly will not change this value
25560to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
25561<li>When this value changes to non-negative,<wbr/> that means that all of the
25562metadata controls from the request have been applied,<wbr/> all of the
25563metadata controls from the camera device have been read to the
25564updated values (into the result),<wbr/> and all of the graphics buffers
25565corresponding to this result are also synchronized to the request.<wbr/></li>
25566</ul>
25567<p><em>Pipeline considerations</em>:</p>
25568<p>Submitting a request with updated controls relative to the previously
25569submitted requests may also invalidate the synchronization state
25570of all the results corresponding to currently in-flight requests.<wbr/></p>
25571<p>In other words,<wbr/> results for this current request and up to
25572<a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
25573<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
25574            </td>
25575          </tr>
25576
25577          <tr class="entries_header">
25578            <th class="th_details" colspan="5">HAL Implementation Details</th>
25579          </tr>
25580          <tr class="entry_cont">
25581            <td class="entry_details" colspan="5">
25582              <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
25583is also UNKNOWN.<wbr/></p>
25584<p>FULL capability devices should simply set this value to the
25585<code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
25586            </td>
25587          </tr>
25588
25589          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25590           <!-- end of entry -->
25591        
25592        
25593
25594      <!-- end of kind -->
25595      </tbody>
25596      <tr><td colspan="6" class="kind">static</td></tr>
25597
25598      <thead class="entries_header">
25599        <tr>
25600          <th class="th_name">Property Name</th>
25601          <th class="th_type">Type</th>
25602          <th class="th_description">Description</th>
25603          <th class="th_units">Units</th>
25604          <th class="th_range">Range</th>
25605          <th class="th_tags">Tags</th>
25606        </tr>
25607      </thead>
25608
25609      <tbody>
25610
25611        
25612
25613        
25614
25615        
25616
25617        
25618
25619                
25620          <tr class="entry" id="static_android.sync.maxLatency">
25621            <td class="entry_name
25622             " rowspan="5">
25623              android.<wbr/>sync.<wbr/>max<wbr/>Latency
25624            </td>
25625            <td class="entry_type">
25626                <span class="entry_type_name entry_type_name_enum">int32</span>
25627
25628              <span class="entry_type_visibility"> [public]</span>
25629
25630
25631              <span class="entry_type_hwlevel">[legacy] </span>
25632
25633
25634
25635                <ul class="entry_type_enum">
25636                  <li>
25637                    <span class="entry_type_enum_name">PER_FRAME_CONTROL</span>
25638                    <span class="entry_type_enum_value">0</span>
25639                    <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
25640<p>Changing controls over multiple requests one after another will
25641produce results that have those controls applied atomically
25642each frame.<wbr/></p>
25643<p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
25644                  </li>
25645                  <li>
25646                    <span class="entry_type_enum_name">UNKNOWN</span>
25647                    <span class="entry_type_enum_value">-1</span>
25648                    <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
25649of the past requests applied to the camera settings.<wbr/></p>
25650<p>By submitting a series of identical requests,<wbr/> the camera device
25651will eventually have the camera settings applied,<wbr/> but it is
25652unknown when that exact point will be.<wbr/></p>
25653<p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
25654                  </li>
25655                </ul>
25656
25657            </td> <!-- entry_type -->
25658
25659            <td class="entry_description">
25660              <p>The maximum number of frames that can occur after a request
25661(different than the previous) has been submitted,<wbr/> and before the
25662result's state becomes synchronized.<wbr/></p>
25663            </td>
25664
25665            <td class="entry_units">
25666              Frame counts
25667            </td>
25668
25669            <td class="entry_range">
25670              <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
25671            </td>
25672
25673            <td class="entry_tags">
25674              <ul class="entry_tags">
25675                  <li><a href="#tag_V1">V1</a></li>
25676              </ul>
25677            </td>
25678
25679          </tr>
25680          <tr class="entries_header">
25681            <th class="th_details" colspan="5">Details</th>
25682          </tr>
25683          <tr class="entry_cont">
25684            <td class="entry_details" colspan="5">
25685              <p>This defines the maximum distance (in number of metadata results),<wbr/>
25686between the frame number of the request that has new controls to apply
25687and the frame number of the result that has all the controls applied.<wbr/></p>
25688<p>In other words this acts as an upper boundary for how many frames
25689must occur before the camera device knows for a fact that the new
25690submitted camera settings have been applied in outgoing frames.<wbr/></p>
25691            </td>
25692          </tr>
25693
25694          <tr class="entries_header">
25695            <th class="th_details" colspan="5">HAL Implementation Details</th>
25696          </tr>
25697          <tr class="entry_cont">
25698            <td class="entry_details" colspan="5">
25699              <p>For example if maxLatency was 2,<wbr/></p>
25700<pre><code>initial request = X (repeating)
25701request1 = X
25702request2 = Y
25703request3 = Y
25704request4 = Y
25705
25706where requestN has frameNumber N,<wbr/> and the first of the repeating
25707initial request's has frameNumber F (and F &lt; 1).<wbr/>
25708
25709initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
25710result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
25711result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
25712result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
25713result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
25714
25715where resultN has frameNumber N.<wbr/>
25716</code></pre>
25717<p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
25718<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
25719<code>4 - 2 = 2</code>.<wbr/></p>
25720<p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
25721<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
25722<code>@link{android.<wbr/>hardware.<wbr/>camera2.<wbr/>Capture<wbr/>Result#get<wbr/>Frame<wbr/>Number}</code>.<wbr/></p>
25723<p>LIMITED devices are strongly encouraged to use a non-negative
25724value.<wbr/> If UNKNOWN is used here then app developers do not have a way
25725to know when sensor settings have been applied.<wbr/></p>
25726            </td>
25727          </tr>
25728
25729          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25730           <!-- end of entry -->
25731        
25732        
25733
25734      <!-- end of kind -->
25735      </tbody>
25736
25737  <!-- end of section -->
25738  <tr><td colspan="6" id="section_reprocess" class="section">reprocess</td></tr>
25739
25740
25741      <tr><td colspan="6" class="kind">controls</td></tr>
25742
25743      <thead class="entries_header">
25744        <tr>
25745          <th class="th_name">Property Name</th>
25746          <th class="th_type">Type</th>
25747          <th class="th_description">Description</th>
25748          <th class="th_units">Units</th>
25749          <th class="th_range">Range</th>
25750          <th class="th_tags">Tags</th>
25751        </tr>
25752      </thead>
25753
25754      <tbody>
25755
25756        
25757
25758        
25759
25760        
25761
25762        
25763
25764                
25765          <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
25766            <td class="entry_name
25767             " rowspan="3">
25768              android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
25769            </td>
25770            <td class="entry_type">
25771                <span class="entry_type_name">float</span>
25772
25773              <span class="entry_type_visibility"> [public]</span>
25774
25775
25776              <span class="entry_type_hwlevel">[limited] </span>
25777
25778
25779
25780
25781            </td> <!-- entry_type -->
25782
25783            <td class="entry_description">
25784              <p>The amount of exposure time increase factor applied to the original output
25785frame by the application processing before sending for reprocessing.<wbr/></p>
25786            </td>
25787
25788            <td class="entry_units">
25789              Relative exposure time increase factor.<wbr/>
25790            </td>
25791
25792            <td class="entry_range">
25793              <p>&gt;= 1.<wbr/>0</p>
25794            </td>
25795
25796            <td class="entry_tags">
25797              <ul class="entry_tags">
25798                  <li><a href="#tag_REPROC">REPROC</a></li>
25799              </ul>
25800            </td>
25801
25802          </tr>
25803          <tr class="entries_header">
25804            <th class="th_details" colspan="5">Details</th>
25805          </tr>
25806          <tr class="entry_cont">
25807            <td class="entry_details" colspan="5">
25808              <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
25809capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
25810<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
25811output frames to effectively reduce the noise to the same level as a frame that was
25812captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
25813images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
25814the camera device is that the amount of noise in the image would be approximately what
25815would be expected if the original capture parameters had been a sensitivity of
25816S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
25817than S and T respectively.<wbr/> If the captured images were processed by the application
25818before being sent for reprocessing,<wbr/> then the application may have used image processing
25819algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
25820application-processed images (input images).<wbr/> By using the effectiveExposureFactor
25821control,<wbr/> the application can communicate to the camera device the actual noise level
25822improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
25823device can select appropriate noise reduction and edge enhancement parameters to avoid
25824excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
25825enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
25826<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
25827multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
25828fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
25829square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
25830adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
25831produce the best quality images.<wbr/></p>
25832<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
25833buffer in a way that affects its effective exposure time.<wbr/></p>
25834<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
25835reduction 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/>
25836Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
25837<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
25838            </td>
25839          </tr>
25840
25841
25842          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25843           <!-- end of entry -->
25844        
25845        
25846
25847      <!-- end of kind -->
25848      </tbody>
25849      <tr><td colspan="6" class="kind">dynamic</td></tr>
25850
25851      <thead class="entries_header">
25852        <tr>
25853          <th class="th_name">Property Name</th>
25854          <th class="th_type">Type</th>
25855          <th class="th_description">Description</th>
25856          <th class="th_units">Units</th>
25857          <th class="th_range">Range</th>
25858          <th class="th_tags">Tags</th>
25859        </tr>
25860      </thead>
25861
25862      <tbody>
25863
25864        
25865
25866        
25867
25868        
25869
25870        
25871
25872                
25873          <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
25874            <td class="entry_name
25875             " rowspan="3">
25876              android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
25877            </td>
25878            <td class="entry_type">
25879                <span class="entry_type_name">float</span>
25880
25881              <span class="entry_type_visibility"> [public]</span>
25882
25883
25884              <span class="entry_type_hwlevel">[limited] </span>
25885
25886
25887
25888
25889            </td> <!-- entry_type -->
25890
25891            <td class="entry_description">
25892              <p>The amount of exposure time increase factor applied to the original output
25893frame by the application processing before sending for reprocessing.<wbr/></p>
25894            </td>
25895
25896            <td class="entry_units">
25897              Relative exposure time increase factor.<wbr/>
25898            </td>
25899
25900            <td class="entry_range">
25901              <p>&gt;= 1.<wbr/>0</p>
25902            </td>
25903
25904            <td class="entry_tags">
25905              <ul class="entry_tags">
25906                  <li><a href="#tag_REPROC">REPROC</a></li>
25907              </ul>
25908            </td>
25909
25910          </tr>
25911          <tr class="entries_header">
25912            <th class="th_details" colspan="5">Details</th>
25913          </tr>
25914          <tr class="entry_cont">
25915            <td class="entry_details" colspan="5">
25916              <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
25917capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
25918<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
25919output frames to effectively reduce the noise to the same level as a frame that was
25920captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
25921images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
25922the camera device is that the amount of noise in the image would be approximately what
25923would be expected if the original capture parameters had been a sensitivity of
25924S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
25925than S and T respectively.<wbr/> If the captured images were processed by the application
25926before being sent for reprocessing,<wbr/> then the application may have used image processing
25927algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
25928application-processed images (input images).<wbr/> By using the effectiveExposureFactor
25929control,<wbr/> the application can communicate to the camera device the actual noise level
25930improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
25931device can select appropriate noise reduction and edge enhancement parameters to avoid
25932excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
25933enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
25934<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
25935multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
25936fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
25937square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
25938adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
25939produce the best quality images.<wbr/></p>
25940<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
25941buffer in a way that affects its effective exposure time.<wbr/></p>
25942<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
25943reduction 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/>
25944Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
25945<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
25946            </td>
25947          </tr>
25948
25949
25950          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25951           <!-- end of entry -->
25952        
25953        
25954
25955      <!-- end of kind -->
25956      </tbody>
25957      <tr><td colspan="6" class="kind">static</td></tr>
25958
25959      <thead class="entries_header">
25960        <tr>
25961          <th class="th_name">Property Name</th>
25962          <th class="th_type">Type</th>
25963          <th class="th_description">Description</th>
25964          <th class="th_units">Units</th>
25965          <th class="th_range">Range</th>
25966          <th class="th_tags">Tags</th>
25967        </tr>
25968      </thead>
25969
25970      <tbody>
25971
25972        
25973
25974        
25975
25976        
25977
25978        
25979
25980                
25981          <tr class="entry" id="static_android.reprocess.maxCaptureStall">
25982            <td class="entry_name
25983             " rowspan="3">
25984              android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
25985            </td>
25986            <td class="entry_type">
25987                <span class="entry_type_name">int32</span>
25988
25989              <span class="entry_type_visibility"> [public]</span>
25990
25991
25992              <span class="entry_type_hwlevel">[limited] </span>
25993
25994
25995
25996
25997            </td> <!-- entry_type -->
25998
25999            <td class="entry_description">
26000              <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
26001reprocess capture request.<wbr/></p>
26002            </td>
26003
26004            <td class="entry_units">
26005              Number of frames.<wbr/>
26006            </td>
26007
26008            <td class="entry_range">
26009              <p>&lt;= 4</p>
26010            </td>
26011
26012            <td class="entry_tags">
26013              <ul class="entry_tags">
26014                  <li><a href="#tag_REPROC">REPROC</a></li>
26015              </ul>
26016            </td>
26017
26018          </tr>
26019          <tr class="entries_header">
26020            <th class="th_details" colspan="5">Details</th>
26021          </tr>
26022          <tr class="entry_cont">
26023            <td class="entry_details" colspan="5">
26024              <p>The key describes the maximal interference that one reprocess (input) request
26025can introduce to the camera simultaneous streaming of regular (output) capture
26026requests,<wbr/> including repeating requests.<wbr/></p>
26027<p>When a reprocessing capture request is submitted while a camera output repeating request
26028(e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
26029pipeline for at least one frame duration so that the camera device is unable to process
26030the following capture request in time for the next sensor start of exposure boundary.<wbr/>
26031When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
26032duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
26033glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
26034the worst-case number of frame stall introduced by one reprocess request with any kind of
26035formats/<wbr/>sizes combination.<wbr/></p>
26036<p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
26037ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
26038<p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
26039i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
26040YUV_<wbr/>REPROCESSING).<wbr/></p>
26041            </td>
26042          </tr>
26043
26044
26045          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26046           <!-- end of entry -->
26047        
26048        
26049
26050      <!-- end of kind -->
26051      </tbody>
26052
26053  <!-- end of section -->
26054  <tr><td colspan="6" id="section_depth" class="section">depth</td></tr>
26055
26056
26057      <tr><td colspan="6" class="kind">static</td></tr>
26058
26059      <thead class="entries_header">
26060        <tr>
26061          <th class="th_name">Property Name</th>
26062          <th class="th_type">Type</th>
26063          <th class="th_description">Description</th>
26064          <th class="th_units">Units</th>
26065          <th class="th_range">Range</th>
26066          <th class="th_tags">Tags</th>
26067        </tr>
26068      </thead>
26069
26070      <tbody>
26071
26072        
26073
26074        
26075
26076        
26077
26078        
26079
26080                
26081          <tr class="entry" id="static_android.depth.maxDepthSamples">
26082            <td class="entry_name
26083             " rowspan="3">
26084              android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
26085            </td>
26086            <td class="entry_type">
26087                <span class="entry_type_name">int32</span>
26088
26089              <span class="entry_type_visibility"> [system]</span>
26090
26091
26092              <span class="entry_type_hwlevel">[limited] </span>
26093
26094
26095
26096
26097            </td> <!-- entry_type -->
26098
26099            <td class="entry_description">
26100              <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
26101            </td>
26102
26103            <td class="entry_units">
26104            </td>
26105
26106            <td class="entry_range">
26107            </td>
26108
26109            <td class="entry_tags">
26110              <ul class="entry_tags">
26111                  <li><a href="#tag_DEPTH">DEPTH</a></li>
26112              </ul>
26113            </td>
26114
26115          </tr>
26116          <tr class="entries_header">
26117            <th class="th_details" colspan="5">Details</th>
26118          </tr>
26119          <tr class="entry_cont">
26120            <td class="entry_details" colspan="5">
26121              <p>If a camera device supports outputting depth range data in the form of a depth point
26122cloud (<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
26123number of points an output buffer may contain.<wbr/></p>
26124<p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
26125If output in the depth point cloud format is not supported,<wbr/> this entry will
26126not be defined.<wbr/></p>
26127            </td>
26128          </tr>
26129
26130
26131          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26132           <!-- end of entry -->
26133        
26134                
26135          <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
26136            <td class="entry_name
26137             " rowspan="3">
26138              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
26139            </td>
26140            <td class="entry_type">
26141                <span class="entry_type_name entry_type_name_enum">int32</span>
26142                <span class="entry_type_container">x</span>
26143
26144                <span class="entry_type_array">
26145                  n x 4
26146                </span>
26147              <span class="entry_type_visibility"> [hidden as streamConfiguration]</span>
26148
26149
26150              <span class="entry_type_hwlevel">[limited] </span>
26151
26152
26153
26154                <ul class="entry_type_enum">
26155                  <li>
26156                    <span class="entry_type_enum_name">OUTPUT</span>
26157                  </li>
26158                  <li>
26159                    <span class="entry_type_enum_name">INPUT</span>
26160                  </li>
26161                </ul>
26162
26163            </td> <!-- entry_type -->
26164
26165            <td class="entry_description">
26166              <p>The available depth dataspace stream
26167configurations that this camera device supports
26168(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
26169            </td>
26170
26171            <td class="entry_units">
26172            </td>
26173
26174            <td class="entry_range">
26175            </td>
26176
26177            <td class="entry_tags">
26178              <ul class="entry_tags">
26179                  <li><a href="#tag_DEPTH">DEPTH</a></li>
26180              </ul>
26181            </td>
26182
26183          </tr>
26184          <tr class="entries_header">
26185            <th class="th_details" colspan="5">Details</th>
26186          </tr>
26187          <tr class="entry_cont">
26188            <td class="entry_details" colspan="5">
26189              <p>These are output stream configurations for use with
26190dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
26191listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
26192<p>Only devices that support depth output for at least
26193the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
26194this entry.<wbr/></p>
26195<p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
26196sparse depth point cloud must report a single entry for
26197the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
26198<a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
26199the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
26200            </td>
26201          </tr>
26202
26203
26204          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26205           <!-- end of entry -->
26206        
26207                
26208          <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
26209            <td class="entry_name
26210             " rowspan="3">
26211              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
26212            </td>
26213            <td class="entry_type">
26214                <span class="entry_type_name">int64</span>
26215                <span class="entry_type_container">x</span>
26216
26217                <span class="entry_type_array">
26218                  4 x n
26219                </span>
26220              <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
26221
26222
26223              <span class="entry_type_hwlevel">[limited] </span>
26224
26225
26226
26227
26228            </td> <!-- entry_type -->
26229
26230            <td class="entry_description">
26231              <p>This lists the minimum frame duration for each
26232format/<wbr/>size combination for depth output formats.<wbr/></p>
26233            </td>
26234
26235            <td class="entry_units">
26236              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
26237            </td>
26238
26239            <td class="entry_range">
26240            </td>
26241
26242            <td class="entry_tags">
26243              <ul class="entry_tags">
26244                  <li><a href="#tag_DEPTH">DEPTH</a></li>
26245              </ul>
26246            </td>
26247
26248          </tr>
26249          <tr class="entries_header">
26250            <th class="th_details" colspan="5">Details</th>
26251          </tr>
26252          <tr class="entry_cont">
26253            <td class="entry_details" colspan="5">
26254              <p>This should correspond to the frame duration when only that
26255stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
26256set to either OFF or FAST.<wbr/></p>
26257<p>When multiple streams are used in a request,<wbr/> the minimum frame
26258duration will be max(individual stream min durations).<wbr/></p>
26259<p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
26260is the same regardless of whether the stream is input or output.<wbr/></p>
26261<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
26262<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
26263calculating the max frame rate.<wbr/></p>
26264<p>(Keep in sync with <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p>
26265            </td>
26266          </tr>
26267
26268
26269          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26270           <!-- end of entry -->
26271        
26272                
26273          <tr class="entry" id="static_android.depth.availableDepthStallDurations">
26274            <td class="entry_name
26275             " rowspan="3">
26276              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
26277            </td>
26278            <td class="entry_type">
26279                <span class="entry_type_name">int64</span>
26280                <span class="entry_type_container">x</span>
26281
26282                <span class="entry_type_array">
26283                  4 x n
26284                </span>
26285              <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
26286
26287
26288              <span class="entry_type_hwlevel">[limited] </span>
26289
26290
26291
26292
26293            </td> <!-- entry_type -->
26294
26295            <td class="entry_description">
26296              <p>This lists the maximum stall duration for each
26297output format/<wbr/>size combination for depth streams.<wbr/></p>
26298            </td>
26299
26300            <td class="entry_units">
26301              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
26302            </td>
26303
26304            <td class="entry_range">
26305            </td>
26306
26307            <td class="entry_tags">
26308              <ul class="entry_tags">
26309                  <li><a href="#tag_DEPTH">DEPTH</a></li>
26310              </ul>
26311            </td>
26312
26313          </tr>
26314          <tr class="entries_header">
26315            <th class="th_details" colspan="5">Details</th>
26316          </tr>
26317          <tr class="entry_cont">
26318            <td class="entry_details" colspan="5">
26319              <p>A stall duration is how much extra time would get added
26320to the normal minimum frame duration for a repeating request
26321that has streams with non-zero stall.<wbr/></p>
26322<p>This functions similarly to
26323<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
26324streams.<wbr/></p>
26325<p>All depth output stream formats may have a nonzero stall
26326duration.<wbr/></p>
26327            </td>
26328          </tr>
26329
26330
26331          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26332           <!-- end of entry -->
26333        
26334                
26335          <tr class="entry" id="static_android.depth.depthIsExclusive">
26336            <td class="entry_name
26337             " rowspan="3">
26338              android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
26339            </td>
26340            <td class="entry_type">
26341                <span class="entry_type_name entry_type_name_enum">byte</span>
26342
26343              <span class="entry_type_visibility"> [public as boolean]</span>
26344
26345
26346              <span class="entry_type_hwlevel">[limited] </span>
26347
26348
26349
26350                <ul class="entry_type_enum">
26351                  <li>
26352                    <span class="entry_type_enum_name">FALSE</span>
26353                  </li>
26354                  <li>
26355                    <span class="entry_type_enum_name">TRUE</span>
26356                  </li>
26357                </ul>
26358
26359            </td> <!-- entry_type -->
26360
26361            <td class="entry_description">
26362              <p>Indicates whether a capture request may target both a
26363DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
26364YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
26365            </td>
26366
26367            <td class="entry_units">
26368            </td>
26369
26370            <td class="entry_range">
26371            </td>
26372
26373            <td class="entry_tags">
26374            </td>
26375
26376          </tr>
26377          <tr class="entries_header">
26378            <th class="th_details" colspan="5">Details</th>
26379          </tr>
26380          <tr class="entry_cont">
26381            <td class="entry_details" colspan="5">
26382              <p>If TRUE,<wbr/> including both depth and color outputs in a single
26383capture request is not supported.<wbr/> An application must interleave color
26384and depth requests.<wbr/>  If FALSE,<wbr/> a single request can target both types
26385of output.<wbr/></p>
26386<p>Typically,<wbr/> this restriction exists on camera devices that
26387need to emit a specific pattern or wavelength of light to
26388measure depth values,<wbr/> which causes the color image to be
26389corrupted during depth measurement.<wbr/></p>
26390            </td>
26391          </tr>
26392
26393
26394          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26395           <!-- end of entry -->
26396        
26397        
26398
26399      <!-- end of kind -->
26400      </tbody>
26401
26402  <!-- end of section -->
26403<!-- </namespace> -->
26404  </table>
26405
26406  <div class="tags" id="tag_index">
26407    <h2>Tags</h2>
26408    <ul>
26409      <li id="tag_BC">BC - 
26410        Needed for backwards compatibility with old Java API
26411    
26412        <ul class="tags_entries">
26413          <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
26414          <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
26415          <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
26416          <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
26417          <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
26418          <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
26419          <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
26420          <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
26421          <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
26422          <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
26423          <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
26424          <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
26425          <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
26426          <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
26427          <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
26428          <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
26429          <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
26430          <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
26431          <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
26432          <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
26433          <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
26434          <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
26435          <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
26436          <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
26437          <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
26438          <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
26439          <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
26440          <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
26441          <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
26442          <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
26443          <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
26444          <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
26445          <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
26446          <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
26447          <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
26448          <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
26449          <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
26450          <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
26451          <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
26452          <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
26453          <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
26454          <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
26455          <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
26456          <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
26457          <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
26458          <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
26459          <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
26460          <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
26461          <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
26462          <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
26463          <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
26464          <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
26465          <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
26466          <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
26467          <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
26468          <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
26469          <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
26470          <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
26471          <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
26472          <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
26473          <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
26474          <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
26475          <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
26476          <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
26477          <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
26478          <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
26479          <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
26480        </ul>
26481      </li> <!-- tag_BC -->
26482      <li id="tag_V1">V1 - 
26483        New features for first camera 2 release (API1)
26484    
26485        <ul class="tags_entries">
26486          <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
26487          <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
26488          <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
26489          <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
26490          <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
26491          <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
26492          <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
26493          <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
26494          <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
26495          <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
26496          <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
26497          <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
26498          <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
26499          <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
26500          <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
26501          <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
26502          <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
26503          <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
26504          <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
26505          <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
26506          <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
26507          <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
26508          <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
26509          <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
26510          <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
26511          <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
26512          <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
26513          <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
26514          <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
26515          <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
26516          <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
26517          <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
26518          <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
26519          <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
26520          <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
26521          <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
26522          <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
26523          <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
26524          <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
26525          <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
26526          <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
26527          <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
26528          <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
26529          <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
26530          <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
26531        </ul>
26532      </li> <!-- tag_V1 -->
26533      <li id="tag_RAW">RAW - 
26534        Needed for useful RAW image processing and DNG file support
26535    
26536        <ul class="tags_entries">
26537          <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
26538          <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
26539          <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
26540          <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
26541          <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
26542          <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
26543          <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
26544          <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
26545          <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
26546          <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
26547          <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
26548          <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
26549          <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
26550          <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
26551          <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
26552          <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
26553          <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
26554          <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
26555          <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
26556          <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
26557          <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
26558          <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
26559          <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
26560          <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
26561          <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
26562          <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
26563          <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
26564        </ul>
26565      </li> <!-- tag_RAW -->
26566      <li id="tag_HAL2">HAL2 - 
26567        Entry is only used by camera device HAL 2.x
26568    
26569        <ul class="tags_entries">
26570          <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
26571          <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
26572          <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
26573          <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
26574          <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
26575        </ul>
26576      </li> <!-- tag_HAL2 -->
26577      <li id="tag_FULL">FULL - 
26578        Entry is required for full hardware level devices, and optional for other hardware levels
26579    
26580        <ul class="tags_entries">
26581          <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
26582        </ul>
26583      </li> <!-- tag_FULL -->
26584      <li id="tag_DEPTH">DEPTH - 
26585        Entry is required for the depth capability.
26586    
26587        <ul class="tags_entries">
26588          <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
26589          <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
26590          <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
26591          <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
26592          <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
26593          <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
26594          <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
26595          <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
26596        </ul>
26597      </li> <!-- tag_DEPTH -->
26598      <li id="tag_REPROC">REPROC - 
26599        Entry is required for the YUV or PRIVATE reprocessing capability.
26600    
26601        <ul class="tags_entries">
26602          <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
26603          <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
26604          <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
26605          <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
26606          <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
26607          <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
26608          <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
26609          <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
26610          <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
26611          <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
26612        </ul>
26613      </li> <!-- tag_REPROC -->
26614      <li id="tag_FUTURE">FUTURE - 
26615        Entry is  under-specified and is not required for now. This is for book-keeping purpose,
26616        do not implement or use it, it may be revised for future.
26617    
26618        <ul class="tags_entries">
26619          <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
26620          <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
26621          <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
26622          <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
26623          <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
26624          <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
26625          <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
26626          <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
26627          <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
26628          <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
26629          <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
26630          <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
26631          <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
26632          <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
26633          <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
26634          <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
26635          <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
26636          <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
26637          <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
26638          <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
26639          <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
26640        </ul>
26641      </li> <!-- tag_FUTURE -->
26642    </ul>
26643  </div>
26644
26645  [ <a href="#">top</a> ]
26646
26647</body>
26648</html>
26649