docs.html revision 796e574d0d0bff63c00fd9dacd68912f3da50e14
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
772            <li
773            ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
774            <li
775            ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
776            <li
777            ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
778            <li
779            ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
780            <li
781            ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
782            <li
783            ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
784            <li
785            ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
786            <li
787            ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
788            <li
789            ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
790            <li
791            ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
792            <li
793            ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
794            <li
795            ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
796            <li
797            ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
798            <li
799            ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
800          </ul>
801        </li>
802        <li>
803          <span class="toc_kind_header">dynamic</span>
804          <ul class="toc_section">
805            <li
806            ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
807            <li
808            ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
809            <li
810            ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
811            <li
812            ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
813            <li
814            ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
815            <li
816            ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
817            <li
818            ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
819            <li
820            ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
821            <li
822            ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
823            <li
824            ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
825            <li
826            ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
827            <li
828            ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
829            <li
830            ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
831          </ul>
832        </li>
833      </ul> <!-- toc_section -->
834    </li>
835    <li>
836      <span class="toc_section_header"><a href="#section_shading">shading</a></span>
837      <ul class="toc_section">
838        <li>
839          <span class="toc_kind_header">controls</span>
840          <ul class="toc_section">
841            <li
842            ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
843            <li
844            ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
845          </ul>
846        </li>
847        <li>
848          <span class="toc_kind_header">dynamic</span>
849          <ul class="toc_section">
850            <li
851            ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
852          </ul>
853        </li>
854        <li>
855          <span class="toc_kind_header">static</span>
856          <ul class="toc_section">
857            <li
858            ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li>
859          </ul>
860        </li>
861      </ul> <!-- toc_section -->
862    </li>
863    <li>
864      <span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
865      <ul class="toc_section">
866        <li>
867          <span class="toc_kind_header">controls</span>
868          <ul class="toc_section">
869            <li
870            ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
871            <li
872            ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
873            <li
874            ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
875            <li
876            ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
877            <li
878            ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
879          </ul>
880        </li>
881        <li>
882          <span class="toc_kind_header">static</span>
883          <ul class="toc_section">
884
885            <li
886            ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
887            <li
888            ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
889            <li
890            ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
891            <li
892            ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
893            <li
894            ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
895            <li
896            ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
897            <li
898            ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
899            <li
900            ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
901
902          </ul>
903        </li>
904        <li>
905          <span class="toc_kind_header">dynamic</span>
906          <ul class="toc_section">
907            <li
908            ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
909            <li
910            ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
911            <li
912            ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
913            <li
914            ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
915            <li
916            ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
917            <li
918            ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
919            <li
920            ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
921            <li
922            ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
923            <li
924            ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
925            <li
926            ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
927            <li
928            ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
929            <li
930            ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
931            <li
932                class="toc_deprecated"
933            ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
934            <li
935                class="toc_deprecated"
936            ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
937            <li
938            ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
939            <li
940            ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
941            <li
942            ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
943            <li
944            ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
945          </ul>
946        </li>
947      </ul> <!-- toc_section -->
948    </li>
949    <li>
950      <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
951      <ul class="toc_section">
952        <li>
953          <span class="toc_kind_header">controls</span>
954          <ul class="toc_section">
955            <li
956            ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
957            <li
958            ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
959            <li
960            ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
961            <li
962            ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
963            <li
964            ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
965            <li
966            ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li>
967            <li
968            ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
969          </ul>
970        </li>
971        <li>
972          <span class="toc_kind_header">static</span>
973          <ul class="toc_section">
974            <li
975            ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
976            <li
977            ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
978          </ul>
979        </li>
980        <li>
981          <span class="toc_kind_header">dynamic</span>
982          <ul class="toc_section">
983            <li
984            ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
985            <li
986            ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
987            <li
988            ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
989            <li
990            ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
991            <li
992            ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
993            <li
994            ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li>
995            <li
996            ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
997          </ul>
998        </li>
999      </ul> <!-- toc_section -->
1000    </li>
1001    <li>
1002      <span class="toc_section_header"><a href="#section_led">led</a></span>
1003      <ul class="toc_section">
1004        <li>
1005          <span class="toc_kind_header">controls</span>
1006          <ul class="toc_section">
1007            <li
1008            ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
1009          </ul>
1010        </li>
1011        <li>
1012          <span class="toc_kind_header">dynamic</span>
1013          <ul class="toc_section">
1014            <li
1015            ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
1016          </ul>
1017        </li>
1018        <li>
1019          <span class="toc_kind_header">static</span>
1020          <ul class="toc_section">
1021            <li
1022            ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
1023          </ul>
1024        </li>
1025      </ul> <!-- toc_section -->
1026    </li>
1027    <li>
1028      <span class="toc_section_header"><a href="#section_info">info</a></span>
1029      <ul class="toc_section">
1030        <li>
1031          <span class="toc_kind_header">static</span>
1032          <ul class="toc_section">
1033            <li
1034            ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
1035          </ul>
1036        </li>
1037      </ul> <!-- toc_section -->
1038    </li>
1039    <li>
1040      <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
1041      <ul class="toc_section">
1042        <li>
1043          <span class="toc_kind_header">controls</span>
1044          <ul class="toc_section">
1045            <li
1046            ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
1047          </ul>
1048        </li>
1049        <li>
1050          <span class="toc_kind_header">dynamic</span>
1051          <ul class="toc_section">
1052            <li
1053            ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
1054          </ul>
1055        </li>
1056      </ul> <!-- toc_section -->
1057    </li>
1058    <li>
1059      <span class="toc_section_header"><a href="#section_sync">sync</a></span>
1060      <ul class="toc_section">
1061        <li>
1062          <span class="toc_kind_header">dynamic</span>
1063          <ul class="toc_section">
1064            <li
1065            ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
1066          </ul>
1067        </li>
1068        <li>
1069          <span class="toc_kind_header">static</span>
1070          <ul class="toc_section">
1071            <li
1072            ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
1073          </ul>
1074        </li>
1075      </ul> <!-- toc_section -->
1076    </li>
1077    <li>
1078      <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span>
1079      <ul class="toc_section">
1080        <li>
1081          <span class="toc_kind_header">controls</span>
1082          <ul class="toc_section">
1083            <li
1084            ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1085          </ul>
1086        </li>
1087        <li>
1088          <span class="toc_kind_header">dynamic</span>
1089          <ul class="toc_section">
1090            <li
1091            ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1092          </ul>
1093        </li>
1094      </ul> <!-- toc_section -->
1095    </li>
1096    <li>
1097      <span class="toc_section_header"><a href="#section_depth">depth</a></span>
1098      <ul class="toc_section">
1099        <li>
1100          <span class="toc_kind_header">static</span>
1101          <ul class="toc_section">
1102            <li
1103            ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li>
1104            <li
1105            ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li>
1106            <li
1107            ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li>
1108            <li
1109            ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li>
1110          </ul>
1111        </li>
1112      </ul> <!-- toc_section -->
1113    </li>
1114  </ul>
1115
1116
1117  <h1>Properties</h1>
1118  <table class="properties">
1119
1120    <thead class="thead_dummy">
1121      <tr>
1122        <th class="th_name">Property Name</th>
1123        <th class="th_type">Type</th>
1124        <th class="th_description">Description</th>
1125        <th class="th_units">Units</th>
1126        <th class="th_range">Range</th>
1127        <th class="th_tags">Tags</th>
1128      </tr>
1129    </thead> <!-- so that the first occurrence of thead is not
1130                         above the first occurrence of tr -->
1131<!-- <namespace name="android"> -->
1132  <tr><td colspan="6" id="section_colorCorrection" class="section">colorCorrection</td></tr>
1133
1134
1135      <tr><td colspan="6" class="kind">controls</td></tr>
1136
1137      <thead class="entries_header">
1138        <tr>
1139          <th class="th_name">Property Name</th>
1140          <th class="th_type">Type</th>
1141          <th class="th_description">Description</th>
1142          <th class="th_units">Units</th>
1143          <th class="th_range">Range</th>
1144          <th class="th_tags">Tags</th>
1145        </tr>
1146      </thead>
1147
1148      <tbody>
1149
1150        
1151
1152        
1153
1154        
1155
1156        
1157
1158                
1159          <tr class="entry" id="controls_android.colorCorrection.mode">
1160            <td class="entry_name
1161             " rowspan="5">
1162              android.<wbr/>color<wbr/>Correction.<wbr/>mode
1163            </td>
1164            <td class="entry_type">
1165                <span class="entry_type_name entry_type_name_enum">byte</span>
1166
1167              <span class="entry_type_visibility"> [public]</span>
1168
1169
1170              <span class="entry_type_hwlevel">[full] </span>
1171
1172
1173
1174                <ul class="entry_type_enum">
1175                  <li>
1176                    <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1177                    <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1178and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1179<p>All advanced white balance adjustments (not specified
1180by our white balance pipeline) must be disabled.<wbr/></p>
1181<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
1182TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1183this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1184                  </li>
1185                  <li>
1186                    <span class="entry_type_enum_name">FAST</span>
1187                    <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1188capture rate relative to sensor raw output.<wbr/></p>
1189<p>Advanced white balance adjustments above and beyond
1190the specified white balance pipeline may be applied.<wbr/></p>
1191<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
1192the camera device uses the last frame's AWB values
1193(or defaults if AWB has never been run).<wbr/></p></span>
1194                  </li>
1195                  <li>
1196                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1197                    <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1198quality but the capture rate might be reduced (relative to sensor
1199raw output rate)</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                </ul>
1207
1208            </td> <!-- entry_type -->
1209
1210            <td class="entry_description">
1211              <p>The mode control selects how the image data is converted from the
1212sensor's native color into linear sRGB color.<wbr/></p>
1213            </td>
1214
1215            <td class="entry_units">
1216            </td>
1217
1218            <td class="entry_range">
1219            </td>
1220
1221            <td class="entry_tags">
1222            </td>
1223
1224          </tr>
1225          <tr class="entries_header">
1226            <th class="th_details" colspan="5">Details</th>
1227          </tr>
1228          <tr class="entry_cont">
1229            <td class="entry_details" colspan="5">
1230              <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
1231control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1232application controls how the color mapping is performed.<wbr/></p>
1233<p>We define the expected processing pipeline below.<wbr/> For consistency
1234across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1235<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1236do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1237<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1238camera device (in the results) and be roughly correct.<wbr/></p>
1239<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1240FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1241as what was produced by the camera device in the earlier frame.<wbr/></p>
1242<p>The expected processing pipeline is as follows:</p>
1243<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1244<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1245gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1246matrix (applied after demosaic).<wbr/></p>
1247<p>The 4-channel white-balance gains are defined as:</p>
1248<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1249</code></pre>
1250<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1251output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1252These may be identical for a given camera device implementation; if
1253the camera device does not support a separate gain for even/<wbr/>odd green
1254channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1255<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1256<p>The matrices for color transforms are defined as a 9-entry vector:</p>
1257<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 ]
1258</code></pre>
1259<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1260to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1261<p>with colors as follows:</p>
1262<pre><code>r' = I0r + I1g + I2b
1263g' = I3r + I4g + I5b
1264b' = I6r + I7g + I8b
1265</code></pre>
1266<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1267values are clipped to fit within the range.<wbr/></p>
1268            </td>
1269          </tr>
1270
1271          <tr class="entries_header">
1272            <th class="th_details" colspan="5">HAL Implementation Details</th>
1273          </tr>
1274          <tr class="entry_cont">
1275            <td class="entry_details" colspan="5">
1276              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1277on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1278That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1279capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1280            </td>
1281          </tr>
1282
1283          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1284           <!-- end of entry -->
1285        
1286                
1287          <tr class="entry" id="controls_android.colorCorrection.transform">
1288            <td class="entry_name
1289             " rowspan="3">
1290              android.<wbr/>color<wbr/>Correction.<wbr/>transform
1291            </td>
1292            <td class="entry_type">
1293                <span class="entry_type_name">rational</span>
1294                <span class="entry_type_container">x</span>
1295
1296                <span class="entry_type_array">
1297                  3 x 3
1298                </span>
1299              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1300
1301
1302              <span class="entry_type_hwlevel">[full] </span>
1303
1304
1305                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1306
1307
1308            </td> <!-- entry_type -->
1309
1310            <td class="entry_description">
1311              <p>A color transform matrix to use to transform
1312from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1313            </td>
1314
1315            <td class="entry_units">
1316              Unitless scale factors
1317            </td>
1318
1319            <td class="entry_range">
1320            </td>
1321
1322            <td class="entry_tags">
1323            </td>
1324
1325          </tr>
1326          <tr class="entries_header">
1327            <th class="th_details" colspan="5">Details</th>
1328          </tr>
1329          <tr class="entry_cont">
1330            <td class="entry_details" colspan="5">
1331              <p>This matrix is either set by the camera device when the request
1332<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1333directly by the application in the request when the
1334<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1335<p>In the latter case,<wbr/> the camera device may round the matrix to account
1336for precision issues; the final rounded matrix should be reported back
1337in this matrix result metadata.<wbr/> The transform should keep the magnitude
1338of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1339values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1340<p>The valid range of each matrix element varies on different devices,<wbr/> but
1341values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1342            </td>
1343          </tr>
1344
1345
1346          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1347           <!-- end of entry -->
1348        
1349                
1350          <tr class="entry" id="controls_android.colorCorrection.gains">
1351            <td class="entry_name
1352             " rowspan="5">
1353              android.<wbr/>color<wbr/>Correction.<wbr/>gains
1354            </td>
1355            <td class="entry_type">
1356                <span class="entry_type_name">float</span>
1357                <span class="entry_type_container">x</span>
1358
1359                <span class="entry_type_array">
1360                  4
1361                </span>
1362              <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1363
1364
1365              <span class="entry_type_hwlevel">[full] </span>
1366
1367
1368                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1369
1370
1371            </td> <!-- entry_type -->
1372
1373            <td class="entry_description">
1374              <p>Gains applying to Bayer raw color channels for
1375white-balance.<wbr/></p>
1376            </td>
1377
1378            <td class="entry_units">
1379              Unitless gain factors
1380            </td>
1381
1382            <td class="entry_range">
1383            </td>
1384
1385            <td class="entry_tags">
1386            </td>
1387
1388          </tr>
1389          <tr class="entries_header">
1390            <th class="th_details" colspan="5">Details</th>
1391          </tr>
1392          <tr class="entry_cont">
1393            <td class="entry_details" colspan="5">
1394              <p>These per-channel gains are either set by the camera device
1395when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1396TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1397request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1398TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1399<p>The gains in the result metadata are the gains actually
1400applied by the camera device to the current frame.<wbr/></p>
1401<p>The valid range of gains varies on different devices,<wbr/> but gains
1402between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1403device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1404this can create color artifacts.<wbr/></p>
1405            </td>
1406          </tr>
1407
1408          <tr class="entries_header">
1409            <th class="th_details" colspan="5">HAL Implementation Details</th>
1410          </tr>
1411          <tr class="entry_cont">
1412            <td class="entry_details" colspan="5">
1413              <p>The 4-channel white-balance gains are defined in
1414the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1415for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1416is the gain for green pixels on the odd rows.<wbr/></p>
1417<p>If a HAL does not support a separate gain for even/<wbr/>odd green
1418channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1419<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1420            </td>
1421          </tr>
1422
1423          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1424           <!-- end of entry -->
1425        
1426                
1427          <tr class="entry" id="controls_android.colorCorrection.aberrationMode">
1428            <td class="entry_name
1429             " rowspan="3">
1430              android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1431            </td>
1432            <td class="entry_type">
1433                <span class="entry_type_name entry_type_name_enum">byte</span>
1434
1435              <span class="entry_type_visibility"> [public]</span>
1436
1437
1438              <span class="entry_type_hwlevel">[legacy] </span>
1439
1440
1441
1442                <ul class="entry_type_enum">
1443                  <li>
1444                    <span class="entry_type_enum_name">OFF</span>
1445                    <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1446                  </li>
1447                  <li>
1448                    <span class="entry_type_enum_name">FAST</span>
1449                    <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1450relative to sensor raw output.<wbr/></p></span>
1451                  </li>
1452                  <li>
1453                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1454                    <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1455reduced (relative to sensor raw output rate)</p></span>
1456                  </li>
1457                </ul>
1458
1459            </td> <!-- entry_type -->
1460
1461            <td class="entry_description">
1462              <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1463            </td>
1464
1465            <td class="entry_units">
1466            </td>
1467
1468            <td class="entry_range">
1469              <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1470            </td>
1471
1472            <td class="entry_tags">
1473            </td>
1474
1475          </tr>
1476          <tr class="entries_header">
1477            <th class="th_details" colspan="5">Details</th>
1478          </tr>
1479          <tr class="entry_cont">
1480            <td class="entry_details" colspan="5">
1481              <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1482can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1483the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1484minimize the chromatic artifacts that may occur along the object boundaries in an
1485image.<wbr/></p>
1486<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1487correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1488use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1489capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1490applying aberration correction.<wbr/></p>
1491<p>LEGACY devices will always be in FAST mode.<wbr/></p>
1492            </td>
1493          </tr>
1494
1495
1496          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1497           <!-- end of entry -->
1498        
1499        
1500
1501      <!-- end of kind -->
1502      </tbody>
1503      <tr><td colspan="6" class="kind">dynamic</td></tr>
1504
1505      <thead class="entries_header">
1506        <tr>
1507          <th class="th_name">Property Name</th>
1508          <th class="th_type">Type</th>
1509          <th class="th_description">Description</th>
1510          <th class="th_units">Units</th>
1511          <th class="th_range">Range</th>
1512          <th class="th_tags">Tags</th>
1513        </tr>
1514      </thead>
1515
1516      <tbody>
1517
1518        
1519
1520        
1521
1522        
1523
1524        
1525
1526                
1527          <tr class="entry" id="dynamic_android.colorCorrection.mode">
1528            <td class="entry_name
1529             " rowspan="5">
1530              android.<wbr/>color<wbr/>Correction.<wbr/>mode
1531            </td>
1532            <td class="entry_type">
1533                <span class="entry_type_name entry_type_name_enum">byte</span>
1534
1535              <span class="entry_type_visibility"> [public]</span>
1536
1537
1538              <span class="entry_type_hwlevel">[full] </span>
1539
1540
1541
1542                <ul class="entry_type_enum">
1543                  <li>
1544                    <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1545                    <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1546and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1547<p>All advanced white balance adjustments (not specified
1548by our white balance pipeline) must be disabled.<wbr/></p>
1549<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
1550TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1551this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1552                  </li>
1553                  <li>
1554                    <span class="entry_type_enum_name">FAST</span>
1555                    <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1556capture rate relative to sensor raw output.<wbr/></p>
1557<p>Advanced white balance adjustments above and beyond
1558the specified white balance pipeline may be applied.<wbr/></p>
1559<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
1560the camera device uses the last frame's AWB values
1561(or defaults if AWB has never been run).<wbr/></p></span>
1562                  </li>
1563                  <li>
1564                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1565                    <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1566quality but the capture rate might be reduced (relative to sensor
1567raw output rate)</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                </ul>
1575
1576            </td> <!-- entry_type -->
1577
1578            <td class="entry_description">
1579              <p>The mode control selects how the image data is converted from the
1580sensor's native color into linear sRGB color.<wbr/></p>
1581            </td>
1582
1583            <td class="entry_units">
1584            </td>
1585
1586            <td class="entry_range">
1587            </td>
1588
1589            <td class="entry_tags">
1590            </td>
1591
1592          </tr>
1593          <tr class="entries_header">
1594            <th class="th_details" colspan="5">Details</th>
1595          </tr>
1596          <tr class="entry_cont">
1597            <td class="entry_details" colspan="5">
1598              <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
1599control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1600application controls how the color mapping is performed.<wbr/></p>
1601<p>We define the expected processing pipeline below.<wbr/> For consistency
1602across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1603<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1604do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1605<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1606camera device (in the results) and be roughly correct.<wbr/></p>
1607<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1608FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1609as what was produced by the camera device in the earlier frame.<wbr/></p>
1610<p>The expected processing pipeline is as follows:</p>
1611<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1612<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1613gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1614matrix (applied after demosaic).<wbr/></p>
1615<p>The 4-channel white-balance gains are defined as:</p>
1616<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1617</code></pre>
1618<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1619output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1620These may be identical for a given camera device implementation; if
1621the camera device does not support a separate gain for even/<wbr/>odd green
1622channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1623<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1624<p>The matrices for color transforms are defined as a 9-entry vector:</p>
1625<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 ]
1626</code></pre>
1627<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1628to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1629<p>with colors as follows:</p>
1630<pre><code>r' = I0r + I1g + I2b
1631g' = I3r + I4g + I5b
1632b' = I6r + I7g + I8b
1633</code></pre>
1634<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1635values are clipped to fit within the range.<wbr/></p>
1636            </td>
1637          </tr>
1638
1639          <tr class="entries_header">
1640            <th class="th_details" colspan="5">HAL Implementation Details</th>
1641          </tr>
1642          <tr class="entry_cont">
1643            <td class="entry_details" colspan="5">
1644              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1645on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1646That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1647capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1648            </td>
1649          </tr>
1650
1651          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1652           <!-- end of entry -->
1653        
1654                
1655          <tr class="entry" id="dynamic_android.colorCorrection.transform">
1656            <td class="entry_name
1657             " rowspan="3">
1658              android.<wbr/>color<wbr/>Correction.<wbr/>transform
1659            </td>
1660            <td class="entry_type">
1661                <span class="entry_type_name">rational</span>
1662                <span class="entry_type_container">x</span>
1663
1664                <span class="entry_type_array">
1665                  3 x 3
1666                </span>
1667              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1668
1669
1670              <span class="entry_type_hwlevel">[full] </span>
1671
1672
1673                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1674
1675
1676            </td> <!-- entry_type -->
1677
1678            <td class="entry_description">
1679              <p>A color transform matrix to use to transform
1680from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1681            </td>
1682
1683            <td class="entry_units">
1684              Unitless scale factors
1685            </td>
1686
1687            <td class="entry_range">
1688            </td>
1689
1690            <td class="entry_tags">
1691            </td>
1692
1693          </tr>
1694          <tr class="entries_header">
1695            <th class="th_details" colspan="5">Details</th>
1696          </tr>
1697          <tr class="entry_cont">
1698            <td class="entry_details" colspan="5">
1699              <p>This matrix is either set by the camera device when the request
1700<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1701directly by the application in the request when the
1702<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1703<p>In the latter case,<wbr/> the camera device may round the matrix to account
1704for precision issues; the final rounded matrix should be reported back
1705in this matrix result metadata.<wbr/> The transform should keep the magnitude
1706of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1707values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1708<p>The valid range of each matrix element varies on different devices,<wbr/> but
1709values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1710            </td>
1711          </tr>
1712
1713
1714          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1715           <!-- end of entry -->
1716        
1717                
1718          <tr class="entry" id="dynamic_android.colorCorrection.gains">
1719            <td class="entry_name
1720             " rowspan="5">
1721              android.<wbr/>color<wbr/>Correction.<wbr/>gains
1722            </td>
1723            <td class="entry_type">
1724                <span class="entry_type_name">float</span>
1725                <span class="entry_type_container">x</span>
1726
1727                <span class="entry_type_array">
1728                  4
1729                </span>
1730              <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1731
1732
1733              <span class="entry_type_hwlevel">[full] </span>
1734
1735
1736                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1737
1738
1739            </td> <!-- entry_type -->
1740
1741            <td class="entry_description">
1742              <p>Gains applying to Bayer raw color channels for
1743white-balance.<wbr/></p>
1744            </td>
1745
1746            <td class="entry_units">
1747              Unitless gain factors
1748            </td>
1749
1750            <td class="entry_range">
1751            </td>
1752
1753            <td class="entry_tags">
1754            </td>
1755
1756          </tr>
1757          <tr class="entries_header">
1758            <th class="th_details" colspan="5">Details</th>
1759          </tr>
1760          <tr class="entry_cont">
1761            <td class="entry_details" colspan="5">
1762              <p>These per-channel gains are either set by the camera device
1763when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1764TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1765request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1766TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1767<p>The gains in the result metadata are the gains actually
1768applied by the camera device to the current frame.<wbr/></p>
1769<p>The valid range of gains varies on different devices,<wbr/> but gains
1770between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1771device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1772this can create color artifacts.<wbr/></p>
1773            </td>
1774          </tr>
1775
1776          <tr class="entries_header">
1777            <th class="th_details" colspan="5">HAL Implementation Details</th>
1778          </tr>
1779          <tr class="entry_cont">
1780            <td class="entry_details" colspan="5">
1781              <p>The 4-channel white-balance gains are defined in
1782the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1783for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1784is the gain for green pixels on the odd rows.<wbr/></p>
1785<p>If a HAL does not support a separate gain for even/<wbr/>odd green
1786channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1787<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1788            </td>
1789          </tr>
1790
1791          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1792           <!-- end of entry -->
1793        
1794                
1795          <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
1796            <td class="entry_name
1797             " rowspan="3">
1798              android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1799            </td>
1800            <td class="entry_type">
1801                <span class="entry_type_name entry_type_name_enum">byte</span>
1802
1803              <span class="entry_type_visibility"> [public]</span>
1804
1805
1806              <span class="entry_type_hwlevel">[legacy] </span>
1807
1808
1809
1810                <ul class="entry_type_enum">
1811                  <li>
1812                    <span class="entry_type_enum_name">OFF</span>
1813                    <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1814                  </li>
1815                  <li>
1816                    <span class="entry_type_enum_name">FAST</span>
1817                    <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1818relative to sensor raw output.<wbr/></p></span>
1819                  </li>
1820                  <li>
1821                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1822                    <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1823reduced (relative to sensor raw output rate)</p></span>
1824                  </li>
1825                </ul>
1826
1827            </td> <!-- entry_type -->
1828
1829            <td class="entry_description">
1830              <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1831            </td>
1832
1833            <td class="entry_units">
1834            </td>
1835
1836            <td class="entry_range">
1837              <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1838            </td>
1839
1840            <td class="entry_tags">
1841            </td>
1842
1843          </tr>
1844          <tr class="entries_header">
1845            <th class="th_details" colspan="5">Details</th>
1846          </tr>
1847          <tr class="entry_cont">
1848            <td class="entry_details" colspan="5">
1849              <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1850can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1851the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1852minimize the chromatic artifacts that may occur along the object boundaries in an
1853image.<wbr/></p>
1854<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1855correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1856use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1857capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1858applying aberration correction.<wbr/></p>
1859<p>LEGACY devices will always be in FAST mode.<wbr/></p>
1860            </td>
1861          </tr>
1862
1863
1864          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1865           <!-- end of entry -->
1866        
1867        
1868
1869      <!-- end of kind -->
1870      </tbody>
1871      <tr><td colspan="6" class="kind">static</td></tr>
1872
1873      <thead class="entries_header">
1874        <tr>
1875          <th class="th_name">Property Name</th>
1876          <th class="th_type">Type</th>
1877          <th class="th_description">Description</th>
1878          <th class="th_units">Units</th>
1879          <th class="th_range">Range</th>
1880          <th class="th_tags">Tags</th>
1881        </tr>
1882      </thead>
1883
1884      <tbody>
1885
1886        
1887
1888        
1889
1890        
1891
1892        
1893
1894                
1895          <tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
1896            <td class="entry_name
1897             " rowspan="5">
1898              android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes
1899            </td>
1900            <td class="entry_type">
1901                <span class="entry_type_name">byte</span>
1902                <span class="entry_type_container">x</span>
1903
1904                <span class="entry_type_array">
1905                  n
1906                </span>
1907              <span class="entry_type_visibility"> [public as enumList]</span>
1908
1909
1910              <span class="entry_type_hwlevel">[legacy] </span>
1911
1912
1913                <div class="entry_type_notes">list of enums</div>
1914
1915
1916            </td> <!-- entry_type -->
1917
1918            <td class="entry_description">
1919              <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
1920supported by this camera device.<wbr/></p>
1921            </td>
1922
1923            <td class="entry_units">
1924            </td>
1925
1926            <td class="entry_range">
1927              <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
1928            </td>
1929
1930            <td class="entry_tags">
1931              <ul class="entry_tags">
1932                  <li><a href="#tag_V1">V1</a></li>
1933              </ul>
1934            </td>
1935
1936          </tr>
1937          <tr class="entries_header">
1938            <th class="th_details" colspan="5">Details</th>
1939          </tr>
1940          <tr class="entry_cont">
1941            <td class="entry_details" colspan="5">
1942              <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
1943aberration correction modes are available for a device,<wbr/> this list will solely include
1944OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
1945<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
1946OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
1947<p>LEGACY devices will always only support FAST mode.<wbr/></p>
1948            </td>
1949          </tr>
1950
1951          <tr class="entries_header">
1952            <th class="th_details" colspan="5">HAL Implementation Details</th>
1953          </tr>
1954          <tr class="entry_cont">
1955            <td class="entry_details" colspan="5">
1956              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
1957on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1958That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1959capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
1960            </td>
1961          </tr>
1962
1963          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1964           <!-- end of entry -->
1965        
1966        
1967
1968      <!-- end of kind -->
1969      </tbody>
1970
1971  <!-- end of section -->
1972  <tr><td colspan="6" id="section_control" class="section">control</td></tr>
1973
1974
1975      <tr><td colspan="6" class="kind">controls</td></tr>
1976
1977      <thead class="entries_header">
1978        <tr>
1979          <th class="th_name">Property Name</th>
1980          <th class="th_type">Type</th>
1981          <th class="th_description">Description</th>
1982          <th class="th_units">Units</th>
1983          <th class="th_range">Range</th>
1984          <th class="th_tags">Tags</th>
1985        </tr>
1986      </thead>
1987
1988      <tbody>
1989
1990        
1991
1992        
1993
1994        
1995
1996        
1997
1998                
1999          <tr class="entry" id="controls_android.control.aeAntibandingMode">
2000            <td class="entry_name
2001             " rowspan="5">
2002              android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
2003            </td>
2004            <td class="entry_type">
2005                <span class="entry_type_name entry_type_name_enum">byte</span>
2006
2007              <span class="entry_type_visibility"> [public]</span>
2008
2009
2010              <span class="entry_type_hwlevel">[legacy] </span>
2011
2012
2013
2014                <ul class="entry_type_enum">
2015                  <li>
2016                    <span class="entry_type_enum_name">OFF</span>
2017                    <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
2018avoid banding problems.<wbr/></p></span>
2019                  </li>
2020                  <li>
2021                    <span class="entry_type_enum_name">50HZ</span>
2022                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2023avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
2024                  </li>
2025                  <li>
2026                    <span class="entry_type_enum_name">60HZ</span>
2027                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2028avoid banding problems with 60Hz illumination
2029sources.<wbr/></p></span>
2030                  </li>
2031                  <li>
2032                    <span class="entry_type_enum_name">AUTO</span>
2033                    <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
2034antibanding routine to the current illumination
2035condition.<wbr/> This is the default mode if AUTO is
2036available on given camera device.<wbr/></p></span>
2037                  </li>
2038                </ul>
2039
2040            </td> <!-- entry_type -->
2041
2042            <td class="entry_description">
2043              <p>The desired setting for the camera device's auto-exposure
2044algorithm's antibanding compensation.<wbr/></p>
2045            </td>
2046
2047            <td class="entry_units">
2048            </td>
2049
2050            <td class="entry_range">
2051              <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
2052            </td>
2053
2054            <td class="entry_tags">
2055              <ul class="entry_tags">
2056                  <li><a href="#tag_BC">BC</a></li>
2057              </ul>
2058            </td>
2059
2060          </tr>
2061          <tr class="entries_header">
2062            <th class="th_details" colspan="5">Details</th>
2063          </tr>
2064          <tr class="entry_cont">
2065            <td class="entry_details" colspan="5">
2066              <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
2067lights,<wbr/> flicker at the rate of the power supply frequency
2068(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
2069typically not noticeable to a person,<wbr/> it can be visible to
2070a camera device.<wbr/> If a camera sets its exposure time to the
2071wrong value,<wbr/> the flicker may become visible in the
2072viewfinder as flicker or in a final captured image,<wbr/> as a
2073set of variable-brightness bands across the image.<wbr/></p>
2074<p>Therefore,<wbr/> the auto-exposure routines of camera devices
2075include antibanding routines that ensure that the chosen
2076exposure value will not cause such banding.<wbr/> The choice of
2077exposure time depends on the rate of flicker,<wbr/> which the
2078camera device can detect automatically,<wbr/> or the expected
2079rate can be selected by the application using this
2080control.<wbr/></p>
2081<p>A given camera device may not support all of the possible
2082options for the antibanding mode.<wbr/> The
2083<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
2084the available modes for a given camera device.<wbr/></p>
2085<p>AUTO mode is the default if it is available on given
2086camera device.<wbr/> When AUTO mode is not available,<wbr/> the
2087default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
2088and 60HZ will be available.<wbr/></p>
2089<p>If manual exposure control is enabled (by setting
2090<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/>
2091then this setting has no effect,<wbr/> and the application must
2092ensure it selects exposure times that do not cause banding
2093issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
2094the application in this.<wbr/></p>
2095            </td>
2096          </tr>
2097
2098          <tr class="entries_header">
2099            <th class="th_details" colspan="5">HAL Implementation Details</th>
2100          </tr>
2101          <tr class="entry_cont">
2102            <td class="entry_details" colspan="5">
2103              <p>For all capture request templates,<wbr/> this field must be set
2104to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
2105the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
210660HZ must be available.<wbr/></p>
2107<p>If manual exposure control is enabled (by setting
2108<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/>
2109then the exposure values provided by the application must not be
2110adjusted for antibanding.<wbr/></p>
2111            </td>
2112          </tr>
2113
2114          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2115           <!-- end of entry -->
2116        
2117                
2118          <tr class="entry" id="controls_android.control.aeExposureCompensation">
2119            <td class="entry_name
2120             " rowspan="3">
2121              android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
2122            </td>
2123            <td class="entry_type">
2124                <span class="entry_type_name">int32</span>
2125
2126              <span class="entry_type_visibility"> [public]</span>
2127
2128
2129              <span class="entry_type_hwlevel">[legacy] </span>
2130
2131
2132
2133
2134            </td> <!-- entry_type -->
2135
2136            <td class="entry_description">
2137              <p>Adjustment to auto-exposure (AE) target image
2138brightness.<wbr/></p>
2139            </td>
2140
2141            <td class="entry_units">
2142              Compensation steps
2143            </td>
2144
2145            <td class="entry_range">
2146              <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
2147            </td>
2148
2149            <td class="entry_tags">
2150              <ul class="entry_tags">
2151                  <li><a href="#tag_BC">BC</a></li>
2152              </ul>
2153            </td>
2154
2155          </tr>
2156          <tr class="entries_header">
2157            <th class="th_details" colspan="5">Details</th>
2158          </tr>
2159          <tr class="entry_cont">
2160            <td class="entry_details" colspan="5">
2161              <p>The adjustment is measured as a count of steps,<wbr/> with the
2162step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
2163allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
2164<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
2165will mean an exposure compensation of +2 EV; -3 will mean an
2166exposure compensation of -1 EV.<wbr/> One EV represents a doubling
2167of image brightness.<wbr/> Note that this control will only be
2168effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
2169will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
2170<p>In the event of exposure compensation value being changed,<wbr/> camera device
2171may take several frames to reach the newly requested exposure target.<wbr/>
2172During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
2173state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
2174change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
2175FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
2176            </td>
2177          </tr>
2178
2179
2180          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2181           <!-- end of entry -->
2182        
2183                
2184          <tr class="entry" id="controls_android.control.aeLock">
2185            <td class="entry_name
2186             " rowspan="3">
2187              android.<wbr/>control.<wbr/>ae<wbr/>Lock
2188            </td>
2189            <td class="entry_type">
2190                <span class="entry_type_name entry_type_name_enum">byte</span>
2191
2192              <span class="entry_type_visibility"> [public as boolean]</span>
2193
2194
2195              <span class="entry_type_hwlevel">[legacy] </span>
2196
2197
2198
2199                <ul class="entry_type_enum">
2200                  <li>
2201                    <span class="entry_type_enum_name">OFF</span>
2202                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
2203is free to update its parameters.<wbr/></p></span>
2204                  </li>
2205                  <li>
2206                    <span class="entry_type_enum_name">ON</span>
2207                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
2208must not update the exposure and sensitivity parameters
2209while the lock is active.<wbr/></p>
2210<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
2211will still take effect while auto-exposure is locked.<wbr/></p>
2212<p>Some rare LEGACY devices may not support
2213this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
2214                  </li>
2215                </ul>
2216
2217            </td> <!-- entry_type -->
2218
2219            <td class="entry_description">
2220              <p>Whether auto-exposure (AE) is currently locked to its latest
2221calculated values.<wbr/></p>
2222            </td>
2223
2224            <td class="entry_units">
2225            </td>
2226
2227            <td class="entry_range">
2228            </td>
2229
2230            <td class="entry_tags">
2231              <ul class="entry_tags">
2232                  <li><a href="#tag_BC">BC</a></li>
2233              </ul>
2234            </td>
2235
2236          </tr>
2237          <tr class="entries_header">
2238            <th class="th_details" colspan="5">Details</th>
2239          </tr>
2240          <tr class="entry_cont">
2241            <td class="entry_details" colspan="5">
2242              <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
2243and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
2244<p>Note that even when AE is locked,<wbr/> the flash may be fired if
2245the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
2246ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
2247<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
2248is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
2249<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
2250when AE is already locked,<wbr/> the camera device will not change the exposure time
2251(<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>)
2252parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
2253is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
2254<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/>
2255Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
2256<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
2257the AE if AE is locked by the camera device internally during precapture metering
2258sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
2259ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
2260will never succeed in a sequence of preview requests where AE lock is always set
2261to <code>false</code>.<wbr/></p>
2262<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
2263get locked do not necessarily correspond to the settings that were present in the
2264latest capture result received from the camera device,<wbr/> since additional captures
2265and AE updates may have occurred even before the result was sent out.<wbr/> If an
2266application is switching between automatic and manual control and wishes to eliminate
2267any flicker during the switch,<wbr/> the following procedure is recommended:</p>
2268<ol>
2269<li>Starting in auto-AE mode:</li>
2270<li>Lock AE</li>
2271<li>Wait for the first result to be output that has the AE locked</li>
2272<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
2273<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
2274</ol>
2275<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>
2276            </td>
2277          </tr>
2278
2279
2280          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2281           <!-- end of entry -->
2282        
2283                
2284          <tr class="entry" id="controls_android.control.aeMode">
2285            <td class="entry_name
2286             " rowspan="3">
2287              android.<wbr/>control.<wbr/>ae<wbr/>Mode
2288            </td>
2289            <td class="entry_type">
2290                <span class="entry_type_name entry_type_name_enum">byte</span>
2291
2292              <span class="entry_type_visibility"> [public]</span>
2293
2294
2295              <span class="entry_type_hwlevel">[legacy] </span>
2296
2297
2298
2299                <ul class="entry_type_enum">
2300                  <li>
2301                    <span class="entry_type_enum_name">OFF</span>
2302                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
2303<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2304<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
2305<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
2306device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
2307a flash unit for this camera device.<wbr/></p>
2308<p>Note that auto-white balance (AWB) and auto-focus (AF)
2309behavior is device dependent when AE is in OFF mode.<wbr/>
2310To have consistent behavior across different devices,<wbr/>
2311it is recommended to either set AWB and AF to OFF mode
2312or lock AWB and AF before setting AE to OFF.<wbr/>
2313See <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/>
2314<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>
2315for more details.<wbr/></p>
2316<p>LEGACY devices do not support the OFF mode and will
2317override attempts to use this value to ON.<wbr/></p></span>
2318                  </li>
2319                  <li>
2320                    <span class="entry_type_enum_name">ON</span>
2321                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
2322with no flash control.<wbr/></p>
2323<p>The application's values for
2324<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2325<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2326<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
2327application has control over the various
2328android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
2329                  </li>
2330                  <li>
2331                    <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
2332                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2333the camera's flash unit,<wbr/> firing it in low-light
2334conditions.<wbr/></p>
2335<p>The flash may be fired during a precapture sequence
2336(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2337may be fired for captures for which the
2338<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2339STILL_<wbr/>CAPTURE</p></span>
2340                  </li>
2341                  <li>
2342                    <span class="entry_type_enum_name">ON_ALWAYS_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/> always firing it for still
2345captures.<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
2348will always 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_AUTO_FLASH_REDEYE</span>
2354                    <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
2355reduction.<wbr/></p>
2356<p>If deemed necessary by the camera device,<wbr/> a red eye
2357reduction flash will fire during the precapture
2358sequence.<wbr/></p></span>
2359                  </li>
2360                </ul>
2361
2362            </td> <!-- entry_type -->
2363
2364            <td class="entry_description">
2365              <p>The desired mode for the camera device's
2366auto-exposure routine.<wbr/></p>
2367            </td>
2368
2369            <td class="entry_units">
2370            </td>
2371
2372            <td class="entry_range">
2373              <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
2374            </td>
2375
2376            <td class="entry_tags">
2377              <ul class="entry_tags">
2378                  <li><a href="#tag_BC">BC</a></li>
2379              </ul>
2380            </td>
2381
2382          </tr>
2383          <tr class="entries_header">
2384            <th class="th_details" colspan="5">Details</th>
2385          </tr>
2386          <tr class="entry_cont">
2387            <td class="entry_details" colspan="5">
2388              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
2389AUTO.<wbr/></p>
2390<p>When set to any of the ON modes,<wbr/> the camera device's
2391auto-exposure routine is enabled,<wbr/> overriding the
2392application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
2393and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2394<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2395<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
2396is selected,<wbr/> the camera device's flash unit controls are
2397also overridden.<wbr/></p>
2398<p>The FLASH modes are only available if the camera device
2399has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
2400<p>If flash TORCH mode is desired,<wbr/> this field must be set to
2401ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
2402<p>When set to any of the ON modes,<wbr/> the values chosen by the
2403camera device auto-exposure routine for the overridden
2404fields for a given capture will be available in its
2405CaptureResult.<wbr/></p>
2406            </td>
2407          </tr>
2408
2409
2410          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2411           <!-- end of entry -->
2412        
2413                
2414          <tr class="entry" id="controls_android.control.aeRegions">
2415            <td class="entry_name
2416             " rowspan="5">
2417              android.<wbr/>control.<wbr/>ae<wbr/>Regions
2418            </td>
2419            <td class="entry_type">
2420                <span class="entry_type_name">int32</span>
2421                <span class="entry_type_container">x</span>
2422
2423                <span class="entry_type_array">
2424                  5 x area_count
2425                </span>
2426              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2427
2428
2429
2430
2431
2432
2433            </td> <!-- entry_type -->
2434
2435            <td class="entry_description">
2436              <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
2437            </td>
2438
2439            <td class="entry_units">
2440              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2441            </td>
2442
2443            <td class="entry_range">
2444              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2445<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2446            </td>
2447
2448            <td class="entry_tags">
2449              <ul class="entry_tags">
2450                  <li><a href="#tag_BC">BC</a></li>
2451              </ul>
2452            </td>
2453
2454          </tr>
2455          <tr class="entries_header">
2456            <th class="th_details" colspan="5">Details</th>
2457          </tr>
2458          <tr class="entry_cont">
2459            <td class="entry_details" colspan="5">
2460              <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
2461Otherwise will always be present.<wbr/></p>
2462<p>The maximum number of regions supported by the device is determined by the value
2463of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
2464<p>The coordinate system is based on the active pixel array,<wbr/>
2465with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2466(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2467<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2468bottom-right pixel in the active pixel array.<wbr/></p>
2469<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2470for every pixel in the area.<wbr/> This means that a large metering area
2471with the same weight as a smaller area will have more effect in
2472the metering result.<wbr/> Metering areas can partially overlap and the
2473camera device will add the weights in the overlap region.<wbr/></p>
2474<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
2475region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
2476weight is ignored.<wbr/></p>
2477<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2478camera device.<wbr/></p>
2479<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
2480capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2481region and output only the intersection rectangle as the metering region in the result
2482metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
2483not reported in the result metadata.<wbr/></p>
2484            </td>
2485          </tr>
2486
2487          <tr class="entries_header">
2488            <th class="th_details" colspan="5">HAL Implementation Details</th>
2489          </tr>
2490          <tr class="entry_cont">
2491            <td class="entry_details" colspan="5">
2492              <p>The HAL level representation of MeteringRectangle[] is a
2493int[5 * area_<wbr/>count].<wbr/>
2494Every five elements represent a metering region of
2495(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2496The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2497exclusive on xmax and ymax.<wbr/></p>
2498            </td>
2499          </tr>
2500
2501          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2502           <!-- end of entry -->
2503        
2504                
2505          <tr class="entry" id="controls_android.control.aeTargetFpsRange">
2506            <td class="entry_name
2507             " rowspan="3">
2508              android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
2509            </td>
2510            <td class="entry_type">
2511                <span class="entry_type_name">int32</span>
2512                <span class="entry_type_container">x</span>
2513
2514                <span class="entry_type_array">
2515                  2
2516                </span>
2517              <span class="entry_type_visibility"> [public as rangeInt]</span>
2518
2519
2520              <span class="entry_type_hwlevel">[legacy] </span>
2521
2522
2523
2524
2525            </td> <!-- entry_type -->
2526
2527            <td class="entry_description">
2528              <p>Range over which the auto-exposure routine can
2529adjust the capture frame rate to maintain good
2530exposure.<wbr/></p>
2531            </td>
2532
2533            <td class="entry_units">
2534              Frames per second (FPS)
2535            </td>
2536
2537            <td class="entry_range">
2538              <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>
2539            </td>
2540
2541            <td class="entry_tags">
2542              <ul class="entry_tags">
2543                  <li><a href="#tag_BC">BC</a></li>
2544              </ul>
2545            </td>
2546
2547          </tr>
2548          <tr class="entries_header">
2549            <th class="th_details" colspan="5">Details</th>
2550          </tr>
2551          <tr class="entry_cont">
2552            <td class="entry_details" colspan="5">
2553              <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
2554manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
2555<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
2556            </td>
2557          </tr>
2558
2559
2560          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2561           <!-- end of entry -->
2562        
2563                
2564          <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
2565            <td class="entry_name
2566             " rowspan="3">
2567              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
2568            </td>
2569            <td class="entry_type">
2570                <span class="entry_type_name entry_type_name_enum">byte</span>
2571
2572              <span class="entry_type_visibility"> [public]</span>
2573
2574
2575              <span class="entry_type_hwlevel">[limited] </span>
2576
2577
2578
2579                <ul class="entry_type_enum">
2580                  <li>
2581                    <span class="entry_type_enum_name">IDLE</span>
2582                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2583                  </li>
2584                  <li>
2585                    <span class="entry_type_enum_name">START</span>
2586                    <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
2587by the camera device.<wbr/></p>
2588<p>The exact effect of the precapture trigger depends on
2589the current AE mode and state.<wbr/></p></span>
2590                  </li>
2591                  <li>
2592                    <span class="entry_type_enum_name">CANCEL</span>
2593                    <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
2594precapture metering sequence,<wbr/> the auto-exposure routine will return to its
2595initial state.<wbr/></p></span>
2596                  </li>
2597                </ul>
2598
2599            </td> <!-- entry_type -->
2600
2601            <td class="entry_description">
2602              <p>Whether the camera device will trigger a precapture
2603metering sequence when it processes this request.<wbr/></p>
2604            </td>
2605
2606            <td class="entry_units">
2607            </td>
2608
2609            <td class="entry_range">
2610            </td>
2611
2612            <td class="entry_tags">
2613              <ul class="entry_tags">
2614                  <li><a href="#tag_BC">BC</a></li>
2615              </ul>
2616            </td>
2617
2618          </tr>
2619          <tr class="entries_header">
2620            <th class="th_details" colspan="5">Details</th>
2621          </tr>
2622          <tr class="entry_cont">
2623            <td class="entry_details" colspan="5">
2624              <p>This entry is normally set to IDLE,<wbr/> or is not
2625included at all in the request settings.<wbr/> When included and
2626set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
2627precapture metering sequence.<wbr/></p>
2628<p>When set to CANCEL,<wbr/> the camera device will cancel any active
2629precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
2630If a precapture metering sequence is already completed,<wbr/> and the camera
2631device has implicitly locked the AE for subsequent still capture,<wbr/> the
2632CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
2633<p>The precapture sequence should be triggered before starting a
2634high-quality still capture for final metering decisions to
2635be made,<wbr/> and for firing pre-capture flash pulses to estimate
2636scene brightness and required final capture flash power,<wbr/> when
2637the flash is enabled.<wbr/></p>
2638<p>Normally,<wbr/> this entry should be set to START for only a
2639single request,<wbr/> and the application should wait until the
2640sequence completes before starting a new one.<wbr/></p>
2641<p>When a precapture metering sequence is finished,<wbr/> the camera device
2642may lock the auto-exposure routine internally to be able to accurately expose the
2643subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
2644For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
2645submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
2646submit 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
2647with <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
2648still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
2649API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
2650internally locked AE if the application doesn't submit a still capture request after
2651the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
2652be used in devices that have earlier API levels.<wbr/></p>
2653<p>The exact effect of auto-exposure (AE) precapture trigger
2654depends on the current AE mode and state; see
2655<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
2656details.<wbr/></p>
2657<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
2658capturing a high-resolution JPEG image will automatically trigger a
2659precapture sequence before the high-resolution capture,<wbr/> including
2660potentially firing a pre-capture flash.<wbr/></p>
2661            </td>
2662          </tr>
2663
2664
2665          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2666           <!-- end of entry -->
2667        
2668                
2669          <tr class="entry" id="controls_android.control.afMode">
2670            <td class="entry_name
2671             " rowspan="5">
2672              android.<wbr/>control.<wbr/>af<wbr/>Mode
2673            </td>
2674            <td class="entry_type">
2675                <span class="entry_type_name entry_type_name_enum">byte</span>
2676
2677              <span class="entry_type_visibility"> [public]</span>
2678
2679
2680              <span class="entry_type_hwlevel">[legacy] </span>
2681
2682
2683
2684                <ul class="entry_type_enum">
2685                  <li>
2686                    <span class="entry_type_enum_name">OFF</span>
2687                    <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
2688<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
2689application.<wbr/></p></span>
2690                  </li>
2691                  <li>
2692                    <span class="entry_type_enum_name">AUTO</span>
2693                    <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
2694<p>In this mode,<wbr/> the lens does not move unless
2695the autofocus trigger action is called.<wbr/> When that trigger
2696is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2697the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
2698<p>Always supported if lens is not fixed focus.<wbr/></p>
2699<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
2700is fixed-focus.<wbr/></p>
2701<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
2702and sets the AF state to INACTIVE.<wbr/></p></span>
2703                  </li>
2704                  <li>
2705                    <span class="entry_type_enum_name">MACRO</span>
2706                    <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
2707<p>In this mode,<wbr/> the lens does not move unless the
2708autofocus trigger action is called.<wbr/> When that trigger is
2709activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2710the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
2711mode is optimized for focusing on objects very close to
2712the camera.<wbr/></p>
2713<p>When that trigger is activated,<wbr/> AF will transition to
2714ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
2715NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
2716position to default,<wbr/> and sets the AF state to
2717INACTIVE.<wbr/></p></span>
2718                  </li>
2719                  <li>
2720                    <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
2721                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2722position continually to attempt to provide a
2723constantly-in-focus image stream.<wbr/></p>
2724<p>The focusing behavior should be suitable for good quality
2725video recording; typically this means slower focus
2726movement and no overshoots.<wbr/> When the AF trigger is not
2727involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
2728and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
2729states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
2730the algorithm should immediately transition into
2731AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2732lens position until a cancel AF trigger is received.<wbr/></p>
2733<p>Once cancel is received,<wbr/> the algorithm should transition
2734back to INACTIVE and resume passive scan.<wbr/> Note that this
2735behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
2736ongoing PASSIVE_<wbr/>SCAN must immediately be
2737canceled.<wbr/></p></span>
2738                  </li>
2739                  <li>
2740                    <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
2741                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2742position continually to attempt to provide a
2743constantly-in-focus image stream.<wbr/></p>
2744<p>The focusing behavior should be suitable for still image
2745capture; typically this means focusing as fast as
2746possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
2747algorithm should start in INACTIVE state,<wbr/> and then
2748transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
2749appropriate as it attempts to maintain focus.<wbr/> When the AF
2750trigger is activated,<wbr/> the algorithm should finish its
2751PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
2752AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2753lens position until a cancel AF trigger is received.<wbr/></p>
2754<p>When the AF cancel trigger is activated,<wbr/> the algorithm
2755should transition back to INACTIVE and then act as if it
2756has just been started.<wbr/></p></span>
2757                  </li>
2758                  <li>
2759                    <span class="entry_type_enum_name">EDOF</span>
2760                    <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
2761<p>The camera device will produce images with an extended
2762depth of field automatically; no special focusing
2763operations need to be done before taking a picture.<wbr/></p>
2764<p>AF triggers are ignored,<wbr/> and the AF state will always be
2765INACTIVE.<wbr/></p></span>
2766                  </li>
2767                </ul>
2768
2769            </td> <!-- entry_type -->
2770
2771            <td class="entry_description">
2772              <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
2773mode it is set to.<wbr/></p>
2774            </td>
2775
2776            <td class="entry_units">
2777            </td>
2778
2779            <td class="entry_range">
2780              <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
2781            </td>
2782
2783            <td class="entry_tags">
2784              <ul class="entry_tags">
2785                  <li><a href="#tag_BC">BC</a></li>
2786              </ul>
2787            </td>
2788
2789          </tr>
2790          <tr class="entries_header">
2791            <th class="th_details" colspan="5">Details</th>
2792          </tr>
2793          <tr class="entry_cont">
2794            <td class="entry_details" colspan="5">
2795              <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
2796(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
2797when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
2798dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
2799setting <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>
2800<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
2801the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
2802in result metadata.<wbr/></p>
2803            </td>
2804          </tr>
2805
2806          <tr class="entries_header">
2807            <th class="th_details" colspan="5">HAL Implementation Details</th>
2808          </tr>
2809          <tr class="entry_cont">
2810            <td class="entry_details" colspan="5">
2811              <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
2812request (<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
2813up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
2814<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
2815locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
2816after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
2817the same focal plane remains in focus.<wbr/></p>
2818<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
2819scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
2820(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
2821same lock behavior as above.<wbr/></p>
2822<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
2823focus 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/>
2824However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
2825manual control.<wbr/></p>
2826<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
2827camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
2828remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
2829by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
2830that will arise on camera modules with open-loop VCMs.<wbr/></p>
2831            </td>
2832          </tr>
2833
2834          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2835           <!-- end of entry -->
2836        
2837                
2838          <tr class="entry" id="controls_android.control.afRegions">
2839            <td class="entry_name
2840             " rowspan="5">
2841              android.<wbr/>control.<wbr/>af<wbr/>Regions
2842            </td>
2843            <td class="entry_type">
2844                <span class="entry_type_name">int32</span>
2845                <span class="entry_type_container">x</span>
2846
2847                <span class="entry_type_array">
2848                  5 x area_count
2849                </span>
2850              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2851
2852
2853
2854
2855
2856
2857            </td> <!-- entry_type -->
2858
2859            <td class="entry_description">
2860              <p>List of metering areas to use for auto-focus.<wbr/></p>
2861            </td>
2862
2863            <td class="entry_units">
2864              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2865            </td>
2866
2867            <td class="entry_range">
2868              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2869<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2870            </td>
2871
2872            <td class="entry_tags">
2873              <ul class="entry_tags">
2874                  <li><a href="#tag_BC">BC</a></li>
2875              </ul>
2876            </td>
2877
2878          </tr>
2879          <tr class="entries_header">
2880            <th class="th_details" colspan="5">Details</th>
2881          </tr>
2882          <tr class="entry_cont">
2883            <td class="entry_details" colspan="5">
2884              <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
2885Otherwise will always be present.<wbr/></p>
2886<p>The maximum number of focus areas supported by the device is determined by the value
2887of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
2888<p>The coordinate system is based on the active pixel array,<wbr/>
2889with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2890(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2891<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2892bottom-right pixel in the active pixel array.<wbr/></p>
2893<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2894for every pixel in the area.<wbr/> This means that a large metering area
2895with the same weight as a smaller area will have more effect in
2896the metering result.<wbr/> Metering areas can partially overlap and the
2897camera device will add the weights in the overlap region.<wbr/></p>
2898<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
2899is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
2900ignored.<wbr/></p>
2901<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2902camera device.<wbr/></p>
2903<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
2904capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2905region and output only the intersection rectangle as the metering region in the result
2906metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
2907not reported in the result metadata.<wbr/></p>
2908            </td>
2909          </tr>
2910
2911          <tr class="entries_header">
2912            <th class="th_details" colspan="5">HAL Implementation Details</th>
2913          </tr>
2914          <tr class="entry_cont">
2915            <td class="entry_details" colspan="5">
2916              <p>The HAL level representation of MeteringRectangle[] is a
2917int[5 * area_<wbr/>count].<wbr/>
2918Every five elements represent a metering region of
2919(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2920The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2921exclusive on xmax and ymax.<wbr/></p>
2922            </td>
2923          </tr>
2924
2925          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2926           <!-- end of entry -->
2927        
2928                
2929          <tr class="entry" id="controls_android.control.afTrigger">
2930            <td class="entry_name
2931             " rowspan="3">
2932              android.<wbr/>control.<wbr/>af<wbr/>Trigger
2933            </td>
2934            <td class="entry_type">
2935                <span class="entry_type_name entry_type_name_enum">byte</span>
2936
2937              <span class="entry_type_visibility"> [public]</span>
2938
2939
2940              <span class="entry_type_hwlevel">[legacy] </span>
2941
2942
2943
2944                <ul class="entry_type_enum">
2945                  <li>
2946                    <span class="entry_type_enum_name">IDLE</span>
2947                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2948                  </li>
2949                  <li>
2950                    <span class="entry_type_enum_name">START</span>
2951                    <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
2952                  </li>
2953                  <li>
2954                    <span class="entry_type_enum_name">CANCEL</span>
2955                    <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
2956state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
2957                  </li>
2958                </ul>
2959
2960            </td> <!-- entry_type -->
2961
2962            <td class="entry_description">
2963              <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
2964            </td>
2965
2966            <td class="entry_units">
2967            </td>
2968
2969            <td class="entry_range">
2970            </td>
2971
2972            <td class="entry_tags">
2973              <ul class="entry_tags">
2974                  <li><a href="#tag_BC">BC</a></li>
2975              </ul>
2976            </td>
2977
2978          </tr>
2979          <tr class="entries_header">
2980            <th class="th_details" colspan="5">Details</th>
2981          </tr>
2982          <tr class="entry_cont">
2983            <td class="entry_details" colspan="5">
2984              <p>This entry is normally set to IDLE,<wbr/> or is not
2985included at all in the request settings.<wbr/></p>
2986<p>When included and set to START,<wbr/> the camera device will trigger the
2987autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
2988<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
2989and return to its initial AF state.<wbr/></p>
2990<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
2991single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
2992START for multiple captures in a row means restarting the AF operation over
2993and over again.<wbr/></p>
2994<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>
2995            </td>
2996          </tr>
2997
2998
2999          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3000           <!-- end of entry -->
3001        
3002                
3003          <tr class="entry" id="controls_android.control.awbLock">
3004            <td class="entry_name
3005             " rowspan="3">
3006              android.<wbr/>control.<wbr/>awb<wbr/>Lock
3007            </td>
3008            <td class="entry_type">
3009                <span class="entry_type_name entry_type_name_enum">byte</span>
3010
3011              <span class="entry_type_visibility"> [public as boolean]</span>
3012
3013
3014              <span class="entry_type_hwlevel">[legacy] </span>
3015
3016
3017
3018                <ul class="entry_type_enum">
3019                  <li>
3020                    <span class="entry_type_enum_name">OFF</span>
3021                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
3022algorithm is free to update its parameters if in AUTO
3023mode.<wbr/></p></span>
3024                  </li>
3025                  <li>
3026                    <span class="entry_type_enum_name">ON</span>
3027                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
3028algorithm will not update its parameters while the lock
3029is active.<wbr/></p></span>
3030                  </li>
3031                </ul>
3032
3033            </td> <!-- entry_type -->
3034
3035            <td class="entry_description">
3036              <p>Whether auto-white balance (AWB) is currently locked to its
3037latest calculated values.<wbr/></p>
3038            </td>
3039
3040            <td class="entry_units">
3041            </td>
3042
3043            <td class="entry_range">
3044            </td>
3045
3046            <td class="entry_tags">
3047              <ul class="entry_tags">
3048                  <li><a href="#tag_BC">BC</a></li>
3049              </ul>
3050            </td>
3051
3052          </tr>
3053          <tr class="entries_header">
3054            <th class="th_details" colspan="5">Details</th>
3055          </tr>
3056          <tr class="entry_cont">
3057            <td class="entry_details" colspan="5">
3058              <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
3059and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
3060<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
3061get locked do not necessarily correspond to the settings that were present in the
3062latest capture result received from the camera device,<wbr/> since additional captures
3063and AWB updates may have occurred even before the result was sent out.<wbr/> If an
3064application is switching between automatic and manual control and wishes to eliminate
3065any flicker during the switch,<wbr/> the following procedure is recommended:</p>
3066<ol>
3067<li>Starting in auto-AWB mode:</li>
3068<li>Lock AWB</li>
3069<li>Wait for the first result to be output that has the AWB locked</li>
3070<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
3071<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
3072</ol>
3073<p>Note that AWB lock is only meaningful when
3074<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
3075AWB is already fixed to a specific setting.<wbr/></p>
3076<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
3077            </td>
3078          </tr>
3079
3080
3081          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3082           <!-- end of entry -->
3083        
3084                
3085          <tr class="entry" id="controls_android.control.awbMode">
3086            <td class="entry_name
3087             " rowspan="3">
3088              android.<wbr/>control.<wbr/>awb<wbr/>Mode
3089            </td>
3090            <td class="entry_type">
3091                <span class="entry_type_name entry_type_name_enum">byte</span>
3092
3093              <span class="entry_type_visibility"> [public]</span>
3094
3095
3096              <span class="entry_type_hwlevel">[legacy] </span>
3097
3098
3099
3100                <ul class="entry_type_enum">
3101                  <li>
3102                    <span class="entry_type_enum_name">OFF</span>
3103                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
3104<p>The application-selected color transform matrix
3105(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
3106(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
3107device for manual white balance control.<wbr/></p></span>
3108                  </li>
3109                  <li>
3110                    <span class="entry_type_enum_name">AUTO</span>
3111                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
3112<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3113and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3114For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3115values used by the camera device for the transform and gains
3116will be available in the capture result for this request.<wbr/></p></span>
3117                  </li>
3118                  <li>
3119                    <span class="entry_type_enum_name">INCANDESCENT</span>
3120                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3121the camera device uses incandescent light as the assumed scene
3122illumination for white balance.<wbr/></p>
3123<p>While the exact white balance transforms are up to the
3124camera device,<wbr/> they will approximately match the CIE
3125standard illuminant A.<wbr/></p>
3126<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3127and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3128For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3129values used by the camera device for the transform and gains
3130will be available in the capture result for this request.<wbr/></p></span>
3131                  </li>
3132                  <li>
3133                    <span class="entry_type_enum_name">FLUORESCENT</span>
3134                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3135the camera device uses fluorescent light as the assumed scene
3136illumination for white balance.<wbr/></p>
3137<p>While the exact white balance transforms are up to the
3138camera device,<wbr/> they will approximately match the CIE
3139standard illuminant F2.<wbr/></p>
3140<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3141and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3142For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3143values used by the camera device for the transform and gains
3144will be available in the capture result for this request.<wbr/></p></span>
3145                  </li>
3146                  <li>
3147                    <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
3148                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3149the camera device uses warm fluorescent light as the assumed scene
3150illumination for white balance.<wbr/></p>
3151<p>While the exact white balance transforms are up to the
3152camera device,<wbr/> they will approximately match the CIE
3153standard illuminant F4.<wbr/></p>
3154<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3155and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3156For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3157values used by the camera device for the transform and gains
3158will be available in the capture result for this request.<wbr/></p></span>
3159                  </li>
3160                  <li>
3161                    <span class="entry_type_enum_name">DAYLIGHT</span>
3162                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3163the camera device uses daylight light as the assumed scene
3164illumination for white balance.<wbr/></p>
3165<p>While the exact white balance transforms are up to the
3166camera device,<wbr/> they will approximately match the CIE
3167standard illuminant D65.<wbr/></p>
3168<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3169and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3170For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3171values used by the camera device for the transform and gains
3172will be available in the capture result for this request.<wbr/></p></span>
3173                  </li>
3174                  <li>
3175                    <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
3176                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3177the camera device uses cloudy daylight light as the assumed scene
3178illumination for white balance.<wbr/></p>
3179<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3180and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3181For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3182values used by the camera device for the transform and gains
3183will be available in the capture result for this request.<wbr/></p></span>
3184                  </li>
3185                  <li>
3186                    <span class="entry_type_enum_name">TWILIGHT</span>
3187                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3188the camera device uses twilight light as the assumed scene
3189illumination for white balance.<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">SHADE</span>
3198                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3199the camera device uses shade light as the assumed scene
3200illumination for white balance.<wbr/></p>
3201<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3202and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3203For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3204values used by the camera device for the transform and gains
3205will be available in the capture result for this request.<wbr/></p></span>
3206                  </li>
3207                </ul>
3208
3209            </td> <!-- entry_type -->
3210
3211            <td class="entry_description">
3212              <p>Whether auto-white balance (AWB) is currently setting the color
3213transform fields,<wbr/> and what its illumination target
3214is.<wbr/></p>
3215            </td>
3216
3217            <td class="entry_units">
3218            </td>
3219
3220            <td class="entry_range">
3221              <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
3222            </td>
3223
3224            <td class="entry_tags">
3225              <ul class="entry_tags">
3226                  <li><a href="#tag_BC">BC</a></li>
3227              </ul>
3228            </td>
3229
3230          </tr>
3231          <tr class="entries_header">
3232            <th class="th_details" colspan="5">Details</th>
3233          </tr>
3234          <tr class="entry_cont">
3235            <td class="entry_details" colspan="5">
3236              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
3237<p>When set to the ON mode,<wbr/> the camera device's auto-white balance
3238routine is enabled,<wbr/> overriding the application's selected
3239<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
3240<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>
3241is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
3242also 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
3243setting AE mode to OFF.<wbr/></p>
3244<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
3245routine is disabled.<wbr/> The application manually controls the white
3246balance 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>
3247and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
3248<p>When set to any other modes,<wbr/> the camera device's auto-white
3249balance routine is disabled.<wbr/> The camera device uses each
3250particular illumination target for white balance
3251adjustment.<wbr/> The application's values for
3252<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
3253<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3254<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
3255            </td>
3256          </tr>
3257
3258
3259          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3260           <!-- end of entry -->
3261        
3262                
3263          <tr class="entry" id="controls_android.control.awbRegions">
3264            <td class="entry_name
3265             " rowspan="5">
3266              android.<wbr/>control.<wbr/>awb<wbr/>Regions
3267            </td>
3268            <td class="entry_type">
3269                <span class="entry_type_name">int32</span>
3270                <span class="entry_type_container">x</span>
3271
3272                <span class="entry_type_array">
3273                  5 x area_count
3274                </span>
3275              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3276
3277
3278
3279
3280
3281
3282            </td> <!-- entry_type -->
3283
3284            <td class="entry_description">
3285              <p>List of metering areas to use for auto-white-balance illuminant
3286estimation.<wbr/></p>
3287            </td>
3288
3289            <td class="entry_units">
3290              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3291            </td>
3292
3293            <td class="entry_range">
3294              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3295<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3296            </td>
3297
3298            <td class="entry_tags">
3299              <ul class="entry_tags">
3300                  <li><a href="#tag_BC">BC</a></li>
3301              </ul>
3302            </td>
3303
3304          </tr>
3305          <tr class="entries_header">
3306            <th class="th_details" colspan="5">Details</th>
3307          </tr>
3308          <tr class="entry_cont">
3309            <td class="entry_details" colspan="5">
3310              <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
3311Otherwise will always be present.<wbr/></p>
3312<p>The maximum number of regions supported by the device is determined by the value
3313of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
3314<p>The coordinate system is based on the active pixel array,<wbr/>
3315with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3316(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3317<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3318bottom-right pixel in the active pixel array.<wbr/></p>
3319<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
3320for every pixel in the area.<wbr/> This means that a large metering area
3321with the same weight as a smaller area will have more effect in
3322the metering result.<wbr/> Metering areas can partially overlap and the
3323camera device will add the weights in the overlap region.<wbr/></p>
3324<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
3325only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
33260 weight is ignored.<wbr/></p>
3327<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3328camera device.<wbr/></p>
3329<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
3330capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3331region and output only the intersection rectangle as the metering region in the result
3332metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
3333not reported in the result metadata.<wbr/></p>
3334            </td>
3335          </tr>
3336
3337          <tr class="entries_header">
3338            <th class="th_details" colspan="5">HAL Implementation Details</th>
3339          </tr>
3340          <tr class="entry_cont">
3341            <td class="entry_details" colspan="5">
3342              <p>The HAL level representation of MeteringRectangle[] is a
3343int[5 * area_<wbr/>count].<wbr/>
3344Every five elements represent a metering region of
3345(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3346The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3347exclusive on xmax and ymax.<wbr/></p>
3348            </td>
3349          </tr>
3350
3351          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3352           <!-- end of entry -->
3353        
3354                
3355          <tr class="entry" id="controls_android.control.captureIntent">
3356            <td class="entry_name
3357             " rowspan="3">
3358              android.<wbr/>control.<wbr/>capture<wbr/>Intent
3359            </td>
3360            <td class="entry_type">
3361                <span class="entry_type_name entry_type_name_enum">byte</span>
3362
3363              <span class="entry_type_visibility"> [public]</span>
3364
3365
3366              <span class="entry_type_hwlevel">[legacy] </span>
3367
3368
3369
3370                <ul class="entry_type_enum">
3371                  <li>
3372                    <span class="entry_type_enum_name">CUSTOM</span>
3373                    <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
3374categories.<wbr/> The camera device will default to preview-like
3375behavior.<wbr/></p></span>
3376                  </li>
3377                  <li>
3378                    <span class="entry_type_enum_name">PREVIEW</span>
3379                    <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
3380<p>The precapture trigger may be used to start off a metering
3381w/<wbr/>flash sequence.<wbr/></p></span>
3382                  </li>
3383                  <li>
3384                    <span class="entry_type_enum_name">STILL_CAPTURE</span>
3385                    <span class="entry_type_enum_notes"><p>This request is for a still capture-type
3386use case.<wbr/></p>
3387<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
3388                  </li>
3389                  <li>
3390                    <span class="entry_type_enum_name">VIDEO_RECORD</span>
3391                    <span class="entry_type_enum_notes"><p>This request is for a video recording
3392use case.<wbr/></p></span>
3393                  </li>
3394                  <li>
3395                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
3396                    <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
3397image while recording video) use case.<wbr/></p>
3398<p>The camera device should take the highest-quality image
3399possible (given the other settings) without disrupting the
3400frame rate of video recording.<wbr/>  </p></span>
3401                  </li>
3402                  <li>
3403                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
3404                    <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
3405application will stream full-resolution images and
3406reprocess one or several later for a final
3407capture.<wbr/></p></span>
3408                  </li>
3409                  <li>
3410                    <span class="entry_type_enum_name">MANUAL</span>
3411                    <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
3412the applications want to directly control the capture parameters.<wbr/></p>
3413<p>For example,<wbr/> the application may wish to manually control
3414<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>
3415                  </li>
3416                </ul>
3417
3418            </td> <!-- entry_type -->
3419
3420            <td class="entry_description">
3421              <p>Information to the camera device 3A (auto-exposure,<wbr/>
3422auto-focus,<wbr/> auto-white balance) routines about the purpose
3423of this capture,<wbr/> to help the camera device to decide optimal 3A
3424strategy.<wbr/></p>
3425            </td>
3426
3427            <td class="entry_units">
3428            </td>
3429
3430            <td class="entry_range">
3431            </td>
3432
3433            <td class="entry_tags">
3434              <ul class="entry_tags">
3435                  <li><a href="#tag_BC">BC</a></li>
3436              </ul>
3437            </td>
3438
3439          </tr>
3440          <tr class="entries_header">
3441            <th class="th_details" colspan="5">Details</th>
3442          </tr>
3443          <tr class="entry_cont">
3444            <td class="entry_details" colspan="5">
3445              <p>This control (except for MANUAL) is only effective if
3446<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
3447<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
3448contains OPAQUE_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
3449contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are always supported.<wbr/></p>
3450            </td>
3451          </tr>
3452
3453
3454          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3455           <!-- end of entry -->
3456        
3457                
3458          <tr class="entry" id="controls_android.control.effectMode">
3459            <td class="entry_name
3460             " rowspan="3">
3461              android.<wbr/>control.<wbr/>effect<wbr/>Mode
3462            </td>
3463            <td class="entry_type">
3464                <span class="entry_type_name entry_type_name_enum">byte</span>
3465
3466              <span class="entry_type_visibility"> [public]</span>
3467
3468
3469              <span class="entry_type_hwlevel">[legacy] </span>
3470
3471
3472
3473                <ul class="entry_type_enum">
3474                  <li>
3475                    <span class="entry_type_enum_name">OFF</span>
3476                    <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
3477                  </li>
3478                  <li>
3479                    <span class="entry_type_enum_name">MONO</span>
3480                    <span class="entry_type_enum_optional">[optional]</span>
3481                    <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
3482a single color.<wbr/></p>
3483<p>This will typically be grayscale.<wbr/></p></span>
3484                  </li>
3485                  <li>
3486                    <span class="entry_type_enum_name">NEGATIVE</span>
3487                    <span class="entry_type_enum_optional">[optional]</span>
3488                    <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
3489are inverted.<wbr/></p></span>
3490                  </li>
3491                  <li>
3492                    <span class="entry_type_enum_name">SOLARIZE</span>
3493                    <span class="entry_type_enum_optional">[optional]</span>
3494                    <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
3495image is wholly or partially reversed in
3496tone.<wbr/></p></span>
3497                  </li>
3498                  <li>
3499                    <span class="entry_type_enum_name">SEPIA</span>
3500                    <span class="entry_type_enum_optional">[optional]</span>
3501                    <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
3502gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
3503                  </li>
3504                  <li>
3505                    <span class="entry_type_enum_name">POSTERIZE</span>
3506                    <span class="entry_type_enum_optional">[optional]</span>
3507                    <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
3508discrete regions of tone rather than a continuous
3509gradient of tones.<wbr/></p></span>
3510                  </li>
3511                  <li>
3512                    <span class="entry_type_enum_name">WHITEBOARD</span>
3513                    <span class="entry_type_enum_optional">[optional]</span>
3514                    <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
3515as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
3516                  </li>
3517                  <li>
3518                    <span class="entry_type_enum_name">BLACKBOARD</span>
3519                    <span class="entry_type_enum_optional">[optional]</span>
3520                    <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
3521as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
3522                  </li>
3523                  <li>
3524                    <span class="entry_type_enum_name">AQUA</span>
3525                    <span class="entry_type_enum_optional">[optional]</span>
3526                    <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
3527                  </li>
3528                </ul>
3529
3530            </td> <!-- entry_type -->
3531
3532            <td class="entry_description">
3533              <p>A special color effect to apply.<wbr/></p>
3534            </td>
3535
3536            <td class="entry_units">
3537            </td>
3538
3539            <td class="entry_range">
3540              <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
3541            </td>
3542
3543            <td class="entry_tags">
3544              <ul class="entry_tags">
3545                  <li><a href="#tag_BC">BC</a></li>
3546              </ul>
3547            </td>
3548
3549          </tr>
3550          <tr class="entries_header">
3551            <th class="th_details" colspan="5">Details</th>
3552          </tr>
3553          <tr class="entry_cont">
3554            <td class="entry_details" colspan="5">
3555              <p>When this mode is set,<wbr/> a color effect will be applied
3556to images produced by the camera device.<wbr/> The interpretation
3557and implementation of these color effects is left to the
3558implementor of the camera device,<wbr/> and should not be
3559depended on to be consistent (or present) across all
3560devices.<wbr/></p>
3561            </td>
3562          </tr>
3563
3564
3565          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3566           <!-- end of entry -->
3567        
3568                
3569          <tr class="entry" id="controls_android.control.mode">
3570            <td class="entry_name
3571             " rowspan="3">
3572              android.<wbr/>control.<wbr/>mode
3573            </td>
3574            <td class="entry_type">
3575                <span class="entry_type_name entry_type_name_enum">byte</span>
3576
3577              <span class="entry_type_visibility"> [public]</span>
3578
3579
3580              <span class="entry_type_hwlevel">[legacy] </span>
3581
3582
3583
3584                <ul class="entry_type_enum">
3585                  <li>
3586                    <span class="entry_type_enum_name">OFF</span>
3587                    <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
3588<p>All control by the device's metering and focusing (3A)
3589routines is disabled,<wbr/> and no other settings in
3590android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
3591<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
3592device to select post-processing values for processing
3593blocks that do not allow for manual control,<wbr/> or are not
3594exposed by the camera API.<wbr/></p>
3595<p>However,<wbr/> the camera device's 3A routines may continue to
3596collect statistics and update their internal state so that
3597when control is switched to AUTO mode,<wbr/> good control values
3598can be immediately applied.<wbr/></p></span>
3599                  </li>
3600                  <li>
3601                    <span class="entry_type_enum_name">AUTO</span>
3602                    <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
3603<p>Manual control of capture parameters is disabled.<wbr/> All
3604controls in android.<wbr/>control.<wbr/>* besides sceneMode take
3605effect.<wbr/></p></span>
3606                  </li>
3607                  <li>
3608                    <span class="entry_type_enum_name">USE_SCENE_MODE</span>
3609                    <span class="entry_type_enum_optional">[optional]</span>
3610                    <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
3611<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
3612control.<wbr/>afMode controls; the camera device will ignore
3613those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
3614FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still
3615active.<wbr/>  This setting can only be used if scene mode is
3616supported (i.<wbr/>e.<wbr/> <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
3617contain some modes other than DISABLED).<wbr/></p></span>
3618                  </li>
3619                  <li>
3620                    <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
3621                    <span class="entry_type_enum_optional">[optional]</span>
3622                    <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
3623used by camera device background auto-exposure,<wbr/> auto-white balance and
3624auto-focus algorithms (3A) to update their statistics.<wbr/></p>
3625<p>Specifically,<wbr/> the 3A routines are locked to the last
3626values set from a request with AUTO,<wbr/> OFF,<wbr/> or
3627USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
3628collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
3629discarded by the camera device.<wbr/></p></span>
3630                  </li>
3631                </ul>
3632
3633            </td> <!-- entry_type -->
3634
3635            <td class="entry_description">
3636              <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
3637routines.<wbr/></p>
3638            </td>
3639
3640            <td class="entry_units">
3641            </td>
3642
3643            <td class="entry_range">
3644              <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
3645            </td>
3646
3647            <td class="entry_tags">
3648              <ul class="entry_tags">
3649                  <li><a href="#tag_BC">BC</a></li>
3650              </ul>
3651            </td>
3652
3653          </tr>
3654          <tr class="entries_header">
3655            <th class="th_details" colspan="5">Details</th>
3656          </tr>
3657          <tr class="entry_cont">
3658            <td class="entry_details" colspan="5">
3659              <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
3660by the camera device is disabled.<wbr/> The application must set the fields for
3661capture parameters itself.<wbr/></p>
3662<p>When set to AUTO,<wbr/> the individual algorithm controls in
3663android.<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>
3664<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
3665android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
3666one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
3667as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
3668<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
3669<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
3670is that this frame will not be used by camera device background 3A statistics
3671update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
3672where the application doesn't want a 3A manual control capture to affect
3673the subsequent auto 3A capture results.<wbr/></p>
3674            </td>
3675          </tr>
3676
3677
3678          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3679           <!-- end of entry -->
3680        
3681                
3682          <tr class="entry" id="controls_android.control.sceneMode">
3683            <td class="entry_name
3684             " rowspan="5">
3685              android.<wbr/>control.<wbr/>scene<wbr/>Mode
3686            </td>
3687            <td class="entry_type">
3688                <span class="entry_type_name entry_type_name_enum">byte</span>
3689
3690              <span class="entry_type_visibility"> [public]</span>
3691
3692
3693              <span class="entry_type_hwlevel">[legacy] </span>
3694
3695
3696
3697                <ul class="entry_type_enum">
3698                  <li>
3699                    <span class="entry_type_enum_name">DISABLED</span>
3700                    <span class="entry_type_enum_value">0</span>
3701                    <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
3702                  </li>
3703                  <li>
3704                    <span class="entry_type_enum_name">FACE_PRIORITY</span>
3705                    <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
3706detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
3707auto-exposure routines.<wbr/></p>
3708<p>If face detection statistics are disabled
3709(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/>
3710this should still operate correctly (but will not return
3711face detection statistics to the framework).<wbr/></p>
3712<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3713<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>
3714remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
3715                  </li>
3716                  <li>
3717                    <span class="entry_type_enum_name">ACTION</span>
3718                    <span class="entry_type_enum_optional">[optional]</span>
3719                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
3720<p>Similar to SPORTS.<wbr/></p></span>
3721                  </li>
3722                  <li>
3723                    <span class="entry_type_enum_name">PORTRAIT</span>
3724                    <span class="entry_type_enum_optional">[optional]</span>
3725                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
3726                  </li>
3727                  <li>
3728                    <span class="entry_type_enum_name">LANDSCAPE</span>
3729                    <span class="entry_type_enum_optional">[optional]</span>
3730                    <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
3731                  </li>
3732                  <li>
3733                    <span class="entry_type_enum_name">NIGHT</span>
3734                    <span class="entry_type_enum_optional">[optional]</span>
3735                    <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
3736                  </li>
3737                  <li>
3738                    <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
3739                    <span class="entry_type_enum_optional">[optional]</span>
3740                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
3741settings.<wbr/></p></span>
3742                  </li>
3743                  <li>
3744                    <span class="entry_type_enum_name">THEATRE</span>
3745                    <span class="entry_type_enum_optional">[optional]</span>
3746                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
3747remain off.<wbr/></p></span>
3748                  </li>
3749                  <li>
3750                    <span class="entry_type_enum_name">BEACH</span>
3751                    <span class="entry_type_enum_optional">[optional]</span>
3752                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
3753                  </li>
3754                  <li>
3755                    <span class="entry_type_enum_name">SNOW</span>
3756                    <span class="entry_type_enum_optional">[optional]</span>
3757                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
3758                  </li>
3759                  <li>
3760                    <span class="entry_type_enum_name">SUNSET</span>
3761                    <span class="entry_type_enum_optional">[optional]</span>
3762                    <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
3763                  </li>
3764                  <li>
3765                    <span class="entry_type_enum_name">STEADYPHOTO</span>
3766                    <span class="entry_type_enum_optional">[optional]</span>
3767                    <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
3768device motion (for example: due to hand shake).<wbr/></p></span>
3769                  </li>
3770                  <li>
3771                    <span class="entry_type_enum_name">FIREWORKS</span>
3772                    <span class="entry_type_enum_optional">[optional]</span>
3773                    <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
3774                  </li>
3775                  <li>
3776                    <span class="entry_type_enum_name">SPORTS</span>
3777                    <span class="entry_type_enum_optional">[optional]</span>
3778                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
3779<p>Similar to ACTION.<wbr/></p></span>
3780                  </li>
3781                  <li>
3782                    <span class="entry_type_enum_name">PARTY</span>
3783                    <span class="entry_type_enum_optional">[optional]</span>
3784                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
3785people.<wbr/></p></span>
3786                  </li>
3787                  <li>
3788                    <span class="entry_type_enum_name">CANDLELIGHT</span>
3789                    <span class="entry_type_enum_optional">[optional]</span>
3790                    <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
3791is a flame.<wbr/></p></span>
3792                  </li>
3793                  <li>
3794                    <span class="entry_type_enum_name">BARCODE</span>
3795                    <span class="entry_type_enum_optional">[optional]</span>
3796                    <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
3797for use by camera applications that wish to read the
3798barcode value.<wbr/></p></span>
3799                  </li>
3800                  <li>
3801                    <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
3802                    <span class="entry_type_enum_optional">[optional]</span>
3803                    <span class="entry_type_enum_notes"><p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
3804<p>The supported high speed video sizes and fps ranges are specified in
3805<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
3806output frame rates,<wbr/> the application is only allowed to select video size
3807and fps range combinations listed in this static metadata.<wbr/> The fps range
3808can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
3809<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
3810ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
3811controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
3812and post-processing parameters is possible.<wbr/> All other controls operate the
3813same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
3814android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
3815<ul>
3816<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
3817<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
3818<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
3819<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
3820<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
3821<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
3822<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
3823<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
3824<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
3825<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
3826</ul>
3827<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
3828<ul>
3829<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>
3830<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
3831<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
3832<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
3833</ul>
3834<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
3835be lower than what camera can output,<wbr/> depending on the destination Surfaces for
3836the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
3837the application need check if the video encoder is capable of supporting the
3838high frame rate for a given video size,<wbr/> or it will end up with lower recording
3839frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
3840rate will be bounded by the screen refresh rate.<wbr/></p>
3841<p>The camera device will only support up to 2 output high speed streams
3842(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
3843in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
3844<ul>
3845<li>The application created no more than maxNumHighSpeedStreams processed non-stalling
3846format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
3847min(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>
3848<li>The stream sizes are selected from the sizes reported by
3849<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
3850<li>No processed non-stalling or raw streams are configured.<wbr/></li>
3851</ul>
3852<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
3853<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/>
3854the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
3855and the returned capture result metadata will give the fps range choosen
3856by the camera device.<wbr/></p>
3857<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
3858reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
3859the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
3860                  </li>
3861                  <li>
3862                    <span class="entry_type_enum_name">HDR</span>
3863                    <span class="entry_type_enum_optional">[optional]</span>
3864                    <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
3865<p>In this scene mode,<wbr/> the camera device captures images
3866that keep a larger range of scene illumination levels
3867visible in the final image.<wbr/> For example,<wbr/> when taking a
3868picture of a object in front of a bright window,<wbr/> both
3869the object and the scene through the window may be
3870visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
3871one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
3872HDR mode generally takes much longer to capture a single
3873image,<wbr/> has no user control,<wbr/> and may have other artifacts
3874depending on the HDR method used.<wbr/></p>
3875<p>Therefore,<wbr/> HDR captures operate at a much slower rate
3876than regular captures.<wbr/></p>
3877<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
3878is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
3879STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
3880using a high dynamic range capture technique.<wbr/>  On LEGACY
3881devices,<wbr/> captures that target a JPEG-format output will
3882be captured with HDR,<wbr/> and the capture intent is not
3883relevant.<wbr/></p>
3884<p>The HDR capture may involve the device capturing a burst
3885of images internally and combining them into one,<wbr/> or it
3886may involve the device using specialized high dynamic
3887range capture hardware.<wbr/> In all cases,<wbr/> a single image is
3888produced in response to a capture request submitted
3889while in HDR mode.<wbr/></p>
3890<p>Since substantial post-processing is generally needed to
3891produce an HDR image,<wbr/> only YUV and JPEG outputs are
3892supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only
3893JPEG outputs are supported for LEGACY HDR
3894captures.<wbr/> Using a RAW output for HDR capture is not
3895supported.<wbr/></p></span>
3896                  </li>
3897                </ul>
3898
3899            </td> <!-- entry_type -->
3900
3901            <td class="entry_description">
3902              <p>Control for which scene mode is currently active.<wbr/></p>
3903            </td>
3904
3905            <td class="entry_units">
3906            </td>
3907
3908            <td class="entry_range">
3909              <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
3910            </td>
3911
3912            <td class="entry_tags">
3913              <ul class="entry_tags">
3914                  <li><a href="#tag_BC">BC</a></li>
3915              </ul>
3916            </td>
3917
3918          </tr>
3919          <tr class="entries_header">
3920            <th class="th_details" colspan="5">Details</th>
3921          </tr>
3922          <tr class="entry_cont">
3923            <td class="entry_details" colspan="5">
3924              <p>Scene modes are custom camera modes optimized for a certain set of conditions and
3925capture settings.<wbr/></p>
3926<p>This is the mode that that is active when
3927<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/>
3928these modes will disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3929<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> while in use.<wbr/></p>
3930<p>The interpretation and implementation of these scene modes is left
3931to the implementor of the camera device.<wbr/> Their behavior will not be
3932consistent across all devices,<wbr/> and any given device may only implement
3933a subset of these modes.<wbr/></p>
3934            </td>
3935          </tr>
3936
3937          <tr class="entries_header">
3938            <th class="th_details" colspan="5">HAL Implementation Details</th>
3939          </tr>
3940          <tr class="entry_cont">
3941            <td class="entry_details" colspan="5">
3942              <p>HAL implementations that include scene modes are expected to provide
3943the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3944<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
3945<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
3946<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/>
3947the HAL must list supported video size and fps range in
3948<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/>
39491280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming
3950mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture
3951requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/></p>
3952            </td>
3953          </tr>
3954
3955          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3956           <!-- end of entry -->
3957        
3958                
3959          <tr class="entry" id="controls_android.control.videoStabilizationMode">
3960            <td class="entry_name
3961             " rowspan="3">
3962              android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
3963            </td>
3964            <td class="entry_type">
3965                <span class="entry_type_name entry_type_name_enum">byte</span>
3966
3967              <span class="entry_type_visibility"> [public]</span>
3968
3969
3970              <span class="entry_type_hwlevel">[legacy] </span>
3971
3972
3973
3974                <ul class="entry_type_enum">
3975                  <li>
3976                    <span class="entry_type_enum_name">OFF</span>
3977                    <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
3978                  </li>
3979                  <li>
3980                    <span class="entry_type_enum_name">ON</span>
3981                    <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
3982                  </li>
3983                </ul>
3984
3985            </td> <!-- entry_type -->
3986
3987            <td class="entry_description">
3988              <p>Whether video stabilization is
3989active.<wbr/></p>
3990            </td>
3991
3992            <td class="entry_units">
3993            </td>
3994
3995            <td class="entry_range">
3996            </td>
3997
3998            <td class="entry_tags">
3999              <ul class="entry_tags">
4000                  <li><a href="#tag_BC">BC</a></li>
4001              </ul>
4002            </td>
4003
4004          </tr>
4005          <tr class="entries_header">
4006            <th class="th_details" colspan="5">Details</th>
4007          </tr>
4008          <tr class="entry_cont">
4009            <td class="entry_details" colspan="5">
4010              <p>Video stabilization automatically translates and scales images from
4011the camera in order to stabilize motion between consecutive frames.<wbr/></p>
4012<p>If enabled,<wbr/> video stabilization can modify the
4013<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
4014<p>Switching between different video stabilization modes may take several
4015frames to initialize,<wbr/> the camera device will report the current mode
4016in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
4017the video stabilization modes in the first several capture results may
4018still be "OFF",<wbr/> and it will become "ON" when the initialization is
4019done.<wbr/></p>
4020<p>If a camera device supports both this mode and OIS
4021(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
4022produce undesirable interaction,<wbr/> so it is recommended not to enable
4023both at the same time.<wbr/></p>
4024            </td>
4025          </tr>
4026
4027
4028          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4029           <!-- end of entry -->
4030        
4031        
4032
4033      <!-- end of kind -->
4034      </tbody>
4035      <tr><td colspan="6" class="kind">static</td></tr>
4036
4037      <thead class="entries_header">
4038        <tr>
4039          <th class="th_name">Property Name</th>
4040          <th class="th_type">Type</th>
4041          <th class="th_description">Description</th>
4042          <th class="th_units">Units</th>
4043          <th class="th_range">Range</th>
4044          <th class="th_tags">Tags</th>
4045        </tr>
4046      </thead>
4047
4048      <tbody>
4049
4050        
4051
4052        
4053
4054        
4055
4056        
4057
4058                
4059          <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
4060            <td class="entry_name
4061             " rowspan="3">
4062              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
4063            </td>
4064            <td class="entry_type">
4065                <span class="entry_type_name">byte</span>
4066                <span class="entry_type_container">x</span>
4067
4068                <span class="entry_type_array">
4069                  n
4070                </span>
4071              <span class="entry_type_visibility"> [public as enumList]</span>
4072
4073
4074              <span class="entry_type_hwlevel">[legacy] </span>
4075
4076
4077                <div class="entry_type_notes">list of enums</div>
4078
4079
4080            </td> <!-- entry_type -->
4081
4082            <td class="entry_description">
4083              <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
4084supported by this camera device.<wbr/></p>
4085            </td>
4086
4087            <td class="entry_units">
4088            </td>
4089
4090            <td class="entry_range">
4091              <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
4092            </td>
4093
4094            <td class="entry_tags">
4095              <ul class="entry_tags">
4096                  <li><a href="#tag_BC">BC</a></li>
4097              </ul>
4098            </td>
4099
4100          </tr>
4101          <tr class="entries_header">
4102            <th class="th_details" colspan="5">Details</th>
4103          </tr>
4104          <tr class="entry_cont">
4105            <td class="entry_details" colspan="5">
4106              <p>Not all of the auto-exposure anti-banding modes may be
4107supported by a given camera device.<wbr/> This field lists the
4108valid anti-banding modes that the application may request
4109for this camera device with the
4110<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
4111            </td>
4112          </tr>
4113
4114
4115          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4116           <!-- end of entry -->
4117        
4118                
4119          <tr class="entry" id="static_android.control.aeAvailableModes">
4120            <td class="entry_name
4121             " rowspan="3">
4122              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
4123            </td>
4124            <td class="entry_type">
4125                <span class="entry_type_name">byte</span>
4126                <span class="entry_type_container">x</span>
4127
4128                <span class="entry_type_array">
4129                  n
4130                </span>
4131              <span class="entry_type_visibility"> [public as enumList]</span>
4132
4133
4134              <span class="entry_type_hwlevel">[legacy] </span>
4135
4136
4137                <div class="entry_type_notes">list of enums</div>
4138
4139
4140            </td> <!-- entry_type -->
4141
4142            <td class="entry_description">
4143              <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
4144device.<wbr/></p>
4145            </td>
4146
4147            <td class="entry_units">
4148            </td>
4149
4150            <td class="entry_range">
4151              <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
4152            </td>
4153
4154            <td class="entry_tags">
4155              <ul class="entry_tags">
4156                  <li><a href="#tag_BC">BC</a></li>
4157              </ul>
4158            </td>
4159
4160          </tr>
4161          <tr class="entries_header">
4162            <th class="th_details" colspan="5">Details</th>
4163          </tr>
4164          <tr class="entry_cont">
4165            <td class="entry_details" colspan="5">
4166              <p>Not all the auto-exposure modes may be supported by a
4167given camera device,<wbr/> especially if no flash unit is
4168available.<wbr/> This entry lists the valid modes for
4169<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
4170<p>All camera devices support ON,<wbr/> and all camera devices with flash
4171units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
4172<p>FULL mode camera devices always support OFF mode,<wbr/>
4173which enables application control of camera exposure time,<wbr/>
4174sensitivity,<wbr/> and frame duration.<wbr/></p>
4175<p>LEGACY mode camera devices never support OFF mode.<wbr/>
4176LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR
4177capability.<wbr/></p>
4178            </td>
4179          </tr>
4180
4181
4182          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4183           <!-- end of entry -->
4184        
4185                
4186          <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
4187            <td class="entry_name
4188             " rowspan="3">
4189              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
4190            </td>
4191            <td class="entry_type">
4192                <span class="entry_type_name">int32</span>
4193                <span class="entry_type_container">x</span>
4194
4195                <span class="entry_type_array">
4196                  2 x n
4197                </span>
4198              <span class="entry_type_visibility"> [public as rangeInt]</span>
4199
4200
4201              <span class="entry_type_hwlevel">[legacy] </span>
4202
4203
4204                <div class="entry_type_notes">list of pairs of frame rates</div>
4205
4206
4207            </td> <!-- entry_type -->
4208
4209            <td class="entry_description">
4210              <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
4211this camera device.<wbr/></p>
4212            </td>
4213
4214            <td class="entry_units">
4215              Frames per second (FPS)
4216            </td>
4217
4218            <td class="entry_range">
4219            </td>
4220
4221            <td class="entry_tags">
4222              <ul class="entry_tags">
4223                  <li><a href="#tag_BC">BC</a></li>
4224              </ul>
4225            </td>
4226
4227          </tr>
4228          <tr class="entries_header">
4229            <th class="th_details" colspan="5">Details</th>
4230          </tr>
4231          <tr class="entry_cont">
4232            <td class="entry_details" colspan="5">
4233              <p>For devices at the LIMITED level or above,<wbr/> this list will include at least (30,<wbr/> 30) for
4234constant-framerate recording.<wbr/></p>
4235            </td>
4236          </tr>
4237
4238
4239          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4240           <!-- end of entry -->
4241        
4242                
4243          <tr class="entry" id="static_android.control.aeCompensationRange">
4244            <td class="entry_name
4245             " rowspan="1">
4246              android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
4247            </td>
4248            <td class="entry_type">
4249                <span class="entry_type_name">int32</span>
4250                <span class="entry_type_container">x</span>
4251
4252                <span class="entry_type_array">
4253                  2
4254                </span>
4255              <span class="entry_type_visibility"> [public as rangeInt]</span>
4256
4257
4258              <span class="entry_type_hwlevel">[legacy] </span>
4259
4260
4261
4262
4263            </td> <!-- entry_type -->
4264
4265            <td class="entry_description">
4266              <p>Maximum and minimum exposure compensation values for
4267<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/>
4268that are supported by this camera device.<wbr/></p>
4269            </td>
4270
4271            <td class="entry_units">
4272            </td>
4273
4274            <td class="entry_range">
4275              <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
4276<p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
4277compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
4278<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>
4279<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>
4280<p>LEGACY devices may support a smaller range than this.<wbr/></p>
4281            </td>
4282
4283            <td class="entry_tags">
4284              <ul class="entry_tags">
4285                  <li><a href="#tag_BC">BC</a></li>
4286              </ul>
4287            </td>
4288
4289          </tr>
4290
4291
4292          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4293           <!-- end of entry -->
4294        
4295                
4296          <tr class="entry" id="static_android.control.aeCompensationStep">
4297            <td class="entry_name
4298             " rowspan="5">
4299              android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
4300            </td>
4301            <td class="entry_type">
4302                <span class="entry_type_name">rational</span>
4303
4304              <span class="entry_type_visibility"> [public]</span>
4305
4306
4307              <span class="entry_type_hwlevel">[legacy] </span>
4308
4309
4310
4311
4312            </td> <!-- entry_type -->
4313
4314            <td class="entry_description">
4315              <p>Smallest step by which the exposure compensation
4316can be changed.<wbr/></p>
4317            </td>
4318
4319            <td class="entry_units">
4320              Exposure Value (EV)
4321            </td>
4322
4323            <td class="entry_range">
4324            </td>
4325
4326            <td class="entry_tags">
4327              <ul class="entry_tags">
4328                  <li><a href="#tag_BC">BC</a></li>
4329              </ul>
4330            </td>
4331
4332          </tr>
4333          <tr class="entries_header">
4334            <th class="th_details" colspan="5">Details</th>
4335          </tr>
4336          <tr class="entry_cont">
4337            <td class="entry_details" colspan="5">
4338              <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
4339a 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
4340that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
4341<p>One unit of EV compensation changes the brightness of the captured image by a factor
4342of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p>
4343            </td>
4344          </tr>
4345
4346          <tr class="entries_header">
4347            <th class="th_details" colspan="5">HAL Implementation Details</th>
4348          </tr>
4349          <tr class="entry_cont">
4350            <td class="entry_details" colspan="5">
4351              <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
4352            </td>
4353          </tr>
4354
4355          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4356           <!-- end of entry -->
4357        
4358                
4359          <tr class="entry" id="static_android.control.afAvailableModes">
4360            <td class="entry_name
4361             " rowspan="3">
4362              android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
4363            </td>
4364            <td class="entry_type">
4365                <span class="entry_type_name">byte</span>
4366                <span class="entry_type_container">x</span>
4367
4368                <span class="entry_type_array">
4369                  n
4370                </span>
4371              <span class="entry_type_visibility"> [public as enumList]</span>
4372
4373
4374              <span class="entry_type_hwlevel">[legacy] </span>
4375
4376
4377                <div class="entry_type_notes">List of enums</div>
4378
4379
4380            </td> <!-- entry_type -->
4381
4382            <td class="entry_description">
4383              <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are
4384supported by this camera device.<wbr/></p>
4385            </td>
4386
4387            <td class="entry_units">
4388            </td>
4389
4390            <td class="entry_range">
4391              <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
4392            </td>
4393
4394            <td class="entry_tags">
4395              <ul class="entry_tags">
4396                  <li><a href="#tag_BC">BC</a></li>
4397              </ul>
4398            </td>
4399
4400          </tr>
4401          <tr class="entries_header">
4402            <th class="th_details" colspan="5">Details</th>
4403          </tr>
4404          <tr class="entry_cont">
4405            <td class="entry_details" colspan="5">
4406              <p>Not all the auto-focus modes may be supported by a
4407given camera device.<wbr/> This entry lists the valid modes for
4408<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
4409<p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all
4410camera devices with adjustable focuser units
4411(<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>
4412<p>LEGACY devices will support OFF mode only if they support
4413focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to
4414<code>0.<wbr/>0f</code>).<wbr/></p>
4415            </td>
4416          </tr>
4417
4418
4419          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4420           <!-- end of entry -->
4421        
4422                
4423          <tr class="entry" id="static_android.control.availableEffects">
4424            <td class="entry_name
4425             " rowspan="3">
4426              android.<wbr/>control.<wbr/>available<wbr/>Effects
4427            </td>
4428            <td class="entry_type">
4429                <span class="entry_type_name">byte</span>
4430                <span class="entry_type_container">x</span>
4431
4432                <span class="entry_type_array">
4433                  n
4434                </span>
4435              <span class="entry_type_visibility"> [public as enumList]</span>
4436
4437
4438              <span class="entry_type_hwlevel">[legacy] </span>
4439
4440
4441                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
4442
4443
4444            </td> <!-- entry_type -->
4445
4446            <td class="entry_description">
4447              <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
4448device.<wbr/></p>
4449            </td>
4450
4451            <td class="entry_units">
4452            </td>
4453
4454            <td class="entry_range">
4455              <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
4456            </td>
4457
4458            <td class="entry_tags">
4459              <ul class="entry_tags">
4460                  <li><a href="#tag_BC">BC</a></li>
4461              </ul>
4462            </td>
4463
4464          </tr>
4465          <tr class="entries_header">
4466            <th class="th_details" colspan="5">Details</th>
4467          </tr>
4468          <tr class="entry_cont">
4469            <td class="entry_details" colspan="5">
4470              <p>This list contains the color effect modes that can be applied to
4471images produced by the camera device.<wbr/>
4472Implementations are not expected to be consistent across all devices.<wbr/>
4473If no color effect modes are available for a device,<wbr/> this will only list
4474OFF.<wbr/></p>
4475<p>A color effect will only be applied if
4476<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/>  OFF is always included in this list.<wbr/></p>
4477<p>This control has no effect on the operation of other control routines such
4478as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p>
4479            </td>
4480          </tr>
4481
4482
4483          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4484           <!-- end of entry -->
4485        
4486                
4487          <tr class="entry" id="static_android.control.availableSceneModes">
4488            <td class="entry_name
4489             " rowspan="3">
4490              android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
4491            </td>
4492            <td class="entry_type">
4493                <span class="entry_type_name">byte</span>
4494                <span class="entry_type_container">x</span>
4495
4496                <span class="entry_type_array">
4497                  n
4498                </span>
4499              <span class="entry_type_visibility"> [public as enumList]</span>
4500
4501
4502              <span class="entry_type_hwlevel">[legacy] </span>
4503
4504
4505                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
4506
4507
4508            </td> <!-- entry_type -->
4509
4510            <td class="entry_description">
4511              <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
4512device.<wbr/></p>
4513            </td>
4514
4515            <td class="entry_units">
4516            </td>
4517
4518            <td class="entry_range">
4519              <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
4520            </td>
4521
4522            <td class="entry_tags">
4523              <ul class="entry_tags">
4524                  <li><a href="#tag_BC">BC</a></li>
4525              </ul>
4526            </td>
4527
4528          </tr>
4529          <tr class="entries_header">
4530            <th class="th_details" colspan="5">Details</th>
4531          </tr>
4532          <tr class="entry_cont">
4533            <td class="entry_details" colspan="5">
4534              <p>This list contains scene modes that can be set for the camera device.<wbr/>
4535Only scene modes that have been fully implemented for the
4536camera device may be included here.<wbr/> Implementations are not expected
4537to be consistent across all devices.<wbr/></p>
4538<p>If no scene modes are supported by the camera device,<wbr/> this
4539will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p>
4540<p>FACE_<wbr/>PRIORITY is always listed if face detection is
4541supported (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;
45420</code>).<wbr/></p>
4543            </td>
4544          </tr>
4545
4546
4547          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4548           <!-- end of entry -->
4549        
4550                
4551          <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
4552            <td class="entry_name
4553             " rowspan="3">
4554              android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
4555            </td>
4556            <td class="entry_type">
4557                <span class="entry_type_name">byte</span>
4558                <span class="entry_type_container">x</span>
4559
4560                <span class="entry_type_array">
4561                  n
4562                </span>
4563              <span class="entry_type_visibility"> [public as enumList]</span>
4564
4565
4566              <span class="entry_type_hwlevel">[legacy] </span>
4567
4568
4569                <div class="entry_type_notes">List of enums.<wbr/></div>
4570
4571
4572            </td> <!-- entry_type -->
4573
4574            <td class="entry_description">
4575              <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>
4576that are supported by this camera device.<wbr/></p>
4577            </td>
4578
4579            <td class="entry_units">
4580            </td>
4581
4582            <td class="entry_range">
4583              <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
4584            </td>
4585
4586            <td class="entry_tags">
4587              <ul class="entry_tags">
4588                  <li><a href="#tag_BC">BC</a></li>
4589              </ul>
4590            </td>
4591
4592          </tr>
4593          <tr class="entries_header">
4594            <th class="th_details" colspan="5">Details</th>
4595          </tr>
4596          <tr class="entry_cont">
4597            <td class="entry_details" colspan="5">
4598              <p>OFF will always be listed.<wbr/></p>
4599            </td>
4600          </tr>
4601
4602
4603          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4604           <!-- end of entry -->
4605        
4606                
4607          <tr class="entry" id="static_android.control.awbAvailableModes">
4608            <td class="entry_name
4609             " rowspan="3">
4610              android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
4611            </td>
4612            <td class="entry_type">
4613                <span class="entry_type_name">byte</span>
4614                <span class="entry_type_container">x</span>
4615
4616                <span class="entry_type_array">
4617                  n
4618                </span>
4619              <span class="entry_type_visibility"> [public as enumList]</span>
4620
4621
4622              <span class="entry_type_hwlevel">[legacy] </span>
4623
4624
4625                <div class="entry_type_notes">List of enums</div>
4626
4627
4628            </td> <!-- entry_type -->
4629
4630            <td class="entry_description">
4631              <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
4632camera device.<wbr/></p>
4633            </td>
4634
4635            <td class="entry_units">
4636            </td>
4637
4638            <td class="entry_range">
4639              <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
4640            </td>
4641
4642            <td class="entry_tags">
4643              <ul class="entry_tags">
4644                  <li><a href="#tag_BC">BC</a></li>
4645              </ul>
4646            </td>
4647
4648          </tr>
4649          <tr class="entries_header">
4650            <th class="th_details" colspan="5">Details</th>
4651          </tr>
4652          <tr class="entry_cont">
4653            <td class="entry_details" colspan="5">
4654              <p>Not all the auto-white-balance modes may be supported by a
4655given camera device.<wbr/> This entry lists the valid modes for
4656<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
4657<p>All camera devices will support ON mode.<wbr/></p>
4658<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF
4659mode,<wbr/> which enables application control of white balance,<wbr/> by using
4660<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
4661mode camera devices.<wbr/></p>
4662            </td>
4663          </tr>
4664
4665
4666          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4667           <!-- end of entry -->
4668        
4669                
4670          <tr class="entry" id="static_android.control.maxRegions">
4671            <td class="entry_name
4672             " rowspan="1">
4673              android.<wbr/>control.<wbr/>max<wbr/>Regions
4674            </td>
4675            <td class="entry_type">
4676                <span class="entry_type_name">int32</span>
4677                <span class="entry_type_container">x</span>
4678
4679                <span class="entry_type_array">
4680                  3
4681                </span>
4682              <span class="entry_type_visibility"> [hidden]</span>
4683
4684
4685              <span class="entry_type_hwlevel">[legacy] </span>
4686
4687
4688
4689
4690            </td> <!-- entry_type -->
4691
4692            <td class="entry_description">
4693              <p>List of the maximum number of regions that can be used for metering in
4694auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
4695this corresponds to the the maximum number of elements in
4696<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/>
4697and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
4698            </td>
4699
4700            <td class="entry_units">
4701            </td>
4702
4703            <td class="entry_range">
4704              <p>Value must be &gt;= 0 for each element.<wbr/> For full-capability devices
4705this value must be &gt;= 1 for AE and AF.<wbr/> The order of the elements is:
4706<code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
4707            </td>
4708
4709            <td class="entry_tags">
4710              <ul class="entry_tags">
4711                  <li><a href="#tag_BC">BC</a></li>
4712              </ul>
4713            </td>
4714
4715          </tr>
4716
4717
4718          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4719           <!-- end of entry -->
4720        
4721                
4722          <tr class="entry" id="static_android.control.maxRegionsAe">
4723            <td class="entry_name
4724             " rowspan="5">
4725              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
4726            </td>
4727            <td class="entry_type">
4728                <span class="entry_type_name">int32</span>
4729
4730              <span class="entry_type_visibility"> [public]</span>
4731
4732              <span class="entry_type_synthetic">[synthetic] </span>
4733
4734              <span class="entry_type_hwlevel">[legacy] </span>
4735
4736
4737
4738
4739            </td> <!-- entry_type -->
4740
4741            <td class="entry_description">
4742              <p>The maximum number of metering regions that can be used by the auto-exposure (AE)
4743routine.<wbr/></p>
4744            </td>
4745
4746            <td class="entry_units">
4747            </td>
4748
4749            <td class="entry_range">
4750              <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
4751value will be &gt;= 1.<wbr/></p>
4752            </td>
4753
4754            <td class="entry_tags">
4755            </td>
4756
4757          </tr>
4758          <tr class="entries_header">
4759            <th class="th_details" colspan="5">Details</th>
4760          </tr>
4761          <tr class="entry_cont">
4762            <td class="entry_details" colspan="5">
4763              <p>This corresponds to the the maximum allowed number of elements in
4764<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
4765            </td>
4766          </tr>
4767
4768          <tr class="entries_header">
4769            <th class="th_details" colspan="5">HAL Implementation Details</th>
4770          </tr>
4771          <tr class="entry_cont">
4772            <td class="entry_details" colspan="5">
4773              <p>This entry is private to the framework.<wbr/> Fill in
4774maxRegions to have this entry be automatically populated.<wbr/></p>
4775            </td>
4776          </tr>
4777
4778          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4779           <!-- end of entry -->
4780        
4781                
4782          <tr class="entry" id="static_android.control.maxRegionsAwb">
4783            <td class="entry_name
4784             " rowspan="5">
4785              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
4786            </td>
4787            <td class="entry_type">
4788                <span class="entry_type_name">int32</span>
4789
4790              <span class="entry_type_visibility"> [public]</span>
4791
4792              <span class="entry_type_synthetic">[synthetic] </span>
4793
4794              <span class="entry_type_hwlevel">[legacy] </span>
4795
4796
4797
4798
4799            </td> <!-- entry_type -->
4800
4801            <td class="entry_description">
4802              <p>The maximum number of metering regions that can be used by the auto-white balance (AWB)
4803routine.<wbr/></p>
4804            </td>
4805
4806            <td class="entry_units">
4807            </td>
4808
4809            <td class="entry_range">
4810              <p>Value will be &gt;= 0.<wbr/></p>
4811            </td>
4812
4813            <td class="entry_tags">
4814            </td>
4815
4816          </tr>
4817          <tr class="entries_header">
4818            <th class="th_details" colspan="5">Details</th>
4819          </tr>
4820          <tr class="entry_cont">
4821            <td class="entry_details" colspan="5">
4822              <p>This corresponds to the the maximum allowed number of elements in
4823<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
4824            </td>
4825          </tr>
4826
4827          <tr class="entries_header">
4828            <th class="th_details" colspan="5">HAL Implementation Details</th>
4829          </tr>
4830          <tr class="entry_cont">
4831            <td class="entry_details" colspan="5">
4832              <p>This entry is private to the framework.<wbr/> Fill in
4833maxRegions to have this entry be automatically populated.<wbr/></p>
4834            </td>
4835          </tr>
4836
4837          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4838           <!-- end of entry -->
4839        
4840                
4841          <tr class="entry" id="static_android.control.maxRegionsAf">
4842            <td class="entry_name
4843             " rowspan="5">
4844              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
4845            </td>
4846            <td class="entry_type">
4847                <span class="entry_type_name">int32</span>
4848
4849              <span class="entry_type_visibility"> [public]</span>
4850
4851              <span class="entry_type_synthetic">[synthetic] </span>
4852
4853              <span class="entry_type_hwlevel">[legacy] </span>
4854
4855
4856
4857
4858            </td> <!-- entry_type -->
4859
4860            <td class="entry_description">
4861              <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<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.afRegions">android.<wbr/>control.<wbr/>af<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.sceneModeOverrides">
4901            <td class="entry_name
4902             " rowspan="5">
4903              android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
4904            </td>
4905            <td class="entry_type">
4906                <span class="entry_type_name">byte</span>
4907                <span class="entry_type_container">x</span>
4908
4909                <span class="entry_type_array">
4910                  3 x length(availableSceneModes)
4911                </span>
4912              <span class="entry_type_visibility"> [system]</span>
4913
4914
4915              <span class="entry_type_hwlevel">[limited] </span>
4916
4917
4918
4919
4920            </td> <!-- entry_type -->
4921
4922            <td class="entry_description">
4923              <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
4924settings to use with each available scene mode.<wbr/></p>
4925            </td>
4926
4927            <td class="entry_units">
4928            </td>
4929
4930            <td class="entry_range">
4931              <p>For each available scene mode,<wbr/> the list must contain three
4932entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4933<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
4934by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
4935where aeMode has the lowest index position.<wbr/></p>
4936            </td>
4937
4938            <td class="entry_tags">
4939              <ul class="entry_tags">
4940                  <li><a href="#tag_BC">BC</a></li>
4941              </ul>
4942            </td>
4943
4944          </tr>
4945          <tr class="entries_header">
4946            <th class="th_details" colspan="5">Details</th>
4947          </tr>
4948          <tr class="entry_cont">
4949            <td class="entry_details" colspan="5">
4950              <p>When a scene mode is enabled,<wbr/> the camera device is expected
4951to 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/>
4952and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
4953that scene mode.<wbr/></p>
4954<p>The order of this list matches that of availableSceneModes,<wbr/>
4955with 3 entries for each mode.<wbr/>  The overrides listed
4956for FACE_<wbr/>PRIORITY are ignored,<wbr/> since for that
4957mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4958<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
4959used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
4960is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY
4961overrides should be set to 0.<wbr/></p>
4962<p>For example,<wbr/> if availableSceneModes contains
4963<code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/>  then the camera framework
4964expects sceneModeOverrides to have 9 entries formatted like:
4965<code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
4966ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
4967            </td>
4968          </tr>
4969
4970          <tr class="entries_header">
4971            <th class="th_details" colspan="5">HAL Implementation Details</th>
4972          </tr>
4973          <tr class="entry_cont">
4974            <td class="entry_details" colspan="5">
4975              <p>To maintain backward compatibility,<wbr/> this list will be made available
4976in the static metadata of the camera service.<wbr/>  The camera service will
4977use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4978<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
4979mode other than FACE_<wbr/>PRIORITY.<wbr/></p>
4980            </td>
4981          </tr>
4982
4983          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4984           <!-- end of entry -->
4985        
4986                
4987          <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations">
4988            <td class="entry_name
4989             " rowspan="5">
4990              android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations
4991            </td>
4992            <td class="entry_type">
4993                <span class="entry_type_name">int32</span>
4994                <span class="entry_type_container">x</span>
4995
4996                <span class="entry_type_array">
4997                  4 x n
4998                </span>
4999              <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
5000
5001
5002              <span class="entry_type_hwlevel">[limited] </span>
5003
5004
5005
5006
5007            </td> <!-- entry_type -->
5008
5009            <td class="entry_description">
5010              <p>List of available high speed video size and fps range configurations
5011supported by the camera device,<wbr/> in the format of (width,<wbr/> height,<wbr/> fps_<wbr/>min,<wbr/> fps_<wbr/>max).<wbr/></p>
5012            </td>
5013
5014            <td class="entry_units">
5015            </td>
5016
5017            <td class="entry_range">
5018              <p>For each configuration,<wbr/> the fps_<wbr/>max &gt;= 60fps.<wbr/></p>
5019            </td>
5020
5021            <td class="entry_tags">
5022              <ul class="entry_tags">
5023                  <li><a href="#tag_V1">V1</a></li>
5024              </ul>
5025            </td>
5026
5027          </tr>
5028          <tr class="entries_header">
5029            <th class="th_details" colspan="5">Details</th>
5030          </tr>
5031          <tr class="entry_cont">
5032            <td class="entry_details" colspan="5">
5033              <p>When HIGH_<wbr/>SPEED_<wbr/>VIDEO is supported in <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>,<wbr/>
5034this metadata will list the supported high speed video size and fps range
5035configurations.<wbr/> All the sizes listed in this configuration will be a subset
5036of the sizes reported by StreamConfigurationMap#getOutputSizes for processed
5037non-stalling formats.<wbr/></p>
5038<p>For the high speed video use case,<wbr/> where the application will set
5039<a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> to HIGH_<wbr/>SPEED_<wbr/>VIDEO in capture requests,<wbr/> the application must
5040select the video size and fps range from this metadata to configure the recording and
5041preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends
5042to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to
5043configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata
5044by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the
5045recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application
5046must select one unique size from this metadata to use.<wbr/> Otherwise a request error might
5047occur.<wbr/></p>
5048<p>For normal video recording use case,<wbr/> where some application will NOT set
5049<a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> to HIGH_<wbr/>SPEED_<wbr/>VIDEO in capture requests,<wbr/> the fps ranges
5050reported in this metadata must not be used to setup capture requests,<wbr/> or it will cause
5051request error.<wbr/></p>
5052            </td>
5053          </tr>
5054
5055          <tr class="entries_header">
5056            <th class="th_details" colspan="5">HAL Implementation Details</th>
5057          </tr>
5058          <tr class="entry_cont">
5059            <td class="entry_details" colspan="5">
5060              <p>All the sizes listed in this configuration will be a subset of the sizes reported by
5061<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
5062Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
5063of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p>
5064<p>Since the HIGH_<wbr/>SPEED_<wbr/>VIDEO mode may be turned on for preview view only case,<wbr/> the preview
5065fps is bounded by device refresh rate (e.<wbr/>g.<wbr/> 60fps).<wbr/> For a given resolution,<wbr/> it is
5066recommended that this list includes some fps ranges (e.<wbr/>g.<wbr/> [30,<wbr/> 60]) that is suitable
5067for preview only streaming case.<wbr/></p>
5068            </td>
5069          </tr>
5070
5071          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5072           <!-- end of entry -->
5073        
5074                
5075          <tr class="entry" id="static_android.control.aeLockAvailable">
5076            <td class="entry_name
5077             " rowspan="3">
5078              android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available
5079            </td>
5080            <td class="entry_type">
5081                <span class="entry_type_name entry_type_name_enum">byte</span>
5082
5083              <span class="entry_type_visibility"> [public as boolean]</span>
5084
5085
5086              <span class="entry_type_hwlevel">[legacy] </span>
5087
5088
5089
5090                <ul class="entry_type_enum">
5091                  <li>
5092                    <span class="entry_type_enum_name">FALSE</span>
5093                  </li>
5094                  <li>
5095                    <span class="entry_type_enum_name">TRUE</span>
5096                  </li>
5097                </ul>
5098
5099            </td> <!-- entry_type -->
5100
5101            <td class="entry_description">
5102              <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p>
5103            </td>
5104
5105            <td class="entry_units">
5106            </td>
5107
5108            <td class="entry_range">
5109            </td>
5110
5111            <td class="entry_tags">
5112              <ul class="entry_tags">
5113                  <li><a href="#tag_BC">BC</a></li>
5114              </ul>
5115            </td>
5116
5117          </tr>
5118          <tr class="entries_header">
5119            <th class="th_details" colspan="5">Details</th>
5120          </tr>
5121          <tr class="entry_cont">
5122            <td class="entry_details" colspan="5">
5123              <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always
5124list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5125            </td>
5126          </tr>
5127
5128
5129          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5130           <!-- end of entry -->
5131        
5132                
5133          <tr class="entry" id="static_android.control.awbLockAvailable">
5134            <td class="entry_name
5135             " rowspan="3">
5136              android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available
5137            </td>
5138            <td class="entry_type">
5139                <span class="entry_type_name entry_type_name_enum">byte</span>
5140
5141              <span class="entry_type_visibility"> [public as boolean]</span>
5142
5143
5144              <span class="entry_type_hwlevel">[legacy] </span>
5145
5146
5147
5148                <ul class="entry_type_enum">
5149                  <li>
5150                    <span class="entry_type_enum_name">FALSE</span>
5151                  </li>
5152                  <li>
5153                    <span class="entry_type_enum_name">TRUE</span>
5154                  </li>
5155                </ul>
5156
5157            </td> <!-- entry_type -->
5158
5159            <td class="entry_description">
5160              <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p>
5161            </td>
5162
5163            <td class="entry_units">
5164            </td>
5165
5166            <td class="entry_range">
5167            </td>
5168
5169            <td class="entry_tags">
5170              <ul class="entry_tags">
5171                  <li><a href="#tag_BC">BC</a></li>
5172              </ul>
5173            </td>
5174
5175          </tr>
5176          <tr class="entries_header">
5177            <th class="th_details" colspan="5">Details</th>
5178          </tr>
5179          <tr class="entry_cont">
5180            <td class="entry_details" colspan="5">
5181              <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will
5182always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5183            </td>
5184          </tr>
5185
5186
5187          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5188           <!-- end of entry -->
5189        
5190                
5191          <tr class="entry" id="static_android.control.availableModes">
5192            <td class="entry_name
5193             " rowspan="3">
5194              android.<wbr/>control.<wbr/>available<wbr/>Modes
5195            </td>
5196            <td class="entry_type">
5197                <span class="entry_type_name">byte</span>
5198                <span class="entry_type_container">x</span>
5199
5200                <span class="entry_type_array">
5201                  n
5202                </span>
5203              <span class="entry_type_visibility"> [public as enumList]</span>
5204
5205
5206              <span class="entry_type_hwlevel">[legacy] </span>
5207
5208
5209                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div>
5210
5211
5212            </td> <!-- entry_type -->
5213
5214            <td class="entry_description">
5215              <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera
5216device.<wbr/></p>
5217            </td>
5218
5219            <td class="entry_units">
5220            </td>
5221
5222            <td class="entry_range">
5223              <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p>
5224            </td>
5225
5226            <td class="entry_tags">
5227            </td>
5228
5229          </tr>
5230          <tr class="entries_header">
5231            <th class="th_details" colspan="5">Details</th>
5232          </tr>
5233          <tr class="entry_cont">
5234            <td class="entry_details" colspan="5">
5235              <p>This list contains control modes that can be set for the camera device.<wbr/>
5236LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL
5237devices will always support OFF,<wbr/> AUTO modes.<wbr/></p>
5238            </td>
5239          </tr>
5240
5241
5242          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5243           <!-- end of entry -->
5244        
5245        
5246
5247      <!-- end of kind -->
5248      </tbody>
5249      <tr><td colspan="6" class="kind">dynamic</td></tr>
5250
5251      <thead class="entries_header">
5252        <tr>
5253          <th class="th_name">Property Name</th>
5254          <th class="th_type">Type</th>
5255          <th class="th_description">Description</th>
5256          <th class="th_units">Units</th>
5257          <th class="th_range">Range</th>
5258          <th class="th_tags">Tags</th>
5259        </tr>
5260      </thead>
5261
5262      <tbody>
5263
5264        
5265
5266        
5267
5268        
5269
5270        
5271
5272                
5273          <tr class="entry" id="dynamic_android.control.aePrecaptureId">
5274            <td class="entry_name
5275                entry_name_deprecated
5276             " rowspan="3">
5277              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
5278            </td>
5279            <td class="entry_type">
5280                <span class="entry_type_name">int32</span>
5281
5282              <span class="entry_type_visibility"> [system]</span>
5283
5284
5285
5286              <span class="entry_type_deprecated">[deprecated] </span>
5287
5288
5289
5290            </td> <!-- entry_type -->
5291
5292            <td class="entry_description">
5293              <p>The ID sent with the latest
5294CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
5295            </td>
5296
5297            <td class="entry_units">
5298            </td>
5299
5300            <td class="entry_range">
5301              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
5302            </td>
5303
5304            <td class="entry_tags">
5305            </td>
5306
5307          </tr>
5308          <tr class="entries_header">
5309            <th class="th_details" colspan="5">Details</th>
5310          </tr>
5311          <tr class="entry_cont">
5312            <td class="entry_details" colspan="5">
5313              <p>Must be 0 if no
5314CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
5315by HAL.<wbr/> Always updated even if AE algorithm ignores the
5316trigger</p>
5317            </td>
5318          </tr>
5319
5320
5321          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5322           <!-- end of entry -->
5323        
5324                
5325          <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
5326            <td class="entry_name
5327             " rowspan="5">
5328              android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
5329            </td>
5330            <td class="entry_type">
5331                <span class="entry_type_name entry_type_name_enum">byte</span>
5332
5333              <span class="entry_type_visibility"> [public]</span>
5334
5335
5336              <span class="entry_type_hwlevel">[legacy] </span>
5337
5338
5339
5340                <ul class="entry_type_enum">
5341                  <li>
5342                    <span class="entry_type_enum_name">OFF</span>
5343                    <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
5344avoid banding problems.<wbr/></p></span>
5345                  </li>
5346                  <li>
5347                    <span class="entry_type_enum_name">50HZ</span>
5348                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5349avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
5350                  </li>
5351                  <li>
5352                    <span class="entry_type_enum_name">60HZ</span>
5353                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5354avoid banding problems with 60Hz illumination
5355sources.<wbr/></p></span>
5356                  </li>
5357                  <li>
5358                    <span class="entry_type_enum_name">AUTO</span>
5359                    <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
5360antibanding routine to the current illumination
5361condition.<wbr/> This is the default mode if AUTO is
5362available on given camera device.<wbr/></p></span>
5363                  </li>
5364                </ul>
5365
5366            </td> <!-- entry_type -->
5367
5368            <td class="entry_description">
5369              <p>The desired setting for the camera device's auto-exposure
5370algorithm's antibanding compensation.<wbr/></p>
5371            </td>
5372
5373            <td class="entry_units">
5374            </td>
5375
5376            <td class="entry_range">
5377              <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
5378            </td>
5379
5380            <td class="entry_tags">
5381              <ul class="entry_tags">
5382                  <li><a href="#tag_BC">BC</a></li>
5383              </ul>
5384            </td>
5385
5386          </tr>
5387          <tr class="entries_header">
5388            <th class="th_details" colspan="5">Details</th>
5389          </tr>
5390          <tr class="entry_cont">
5391            <td class="entry_details" colspan="5">
5392              <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
5393lights,<wbr/> flicker at the rate of the power supply frequency
5394(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
5395typically not noticeable to a person,<wbr/> it can be visible to
5396a camera device.<wbr/> If a camera sets its exposure time to the
5397wrong value,<wbr/> the flicker may become visible in the
5398viewfinder as flicker or in a final captured image,<wbr/> as a
5399set of variable-brightness bands across the image.<wbr/></p>
5400<p>Therefore,<wbr/> the auto-exposure routines of camera devices
5401include antibanding routines that ensure that the chosen
5402exposure value will not cause such banding.<wbr/> The choice of
5403exposure time depends on the rate of flicker,<wbr/> which the
5404camera device can detect automatically,<wbr/> or the expected
5405rate can be selected by the application using this
5406control.<wbr/></p>
5407<p>A given camera device may not support all of the possible
5408options for the antibanding mode.<wbr/> The
5409<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
5410the available modes for a given camera device.<wbr/></p>
5411<p>AUTO mode is the default if it is available on given
5412camera device.<wbr/> When AUTO mode is not available,<wbr/> the
5413default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
5414and 60HZ will be available.<wbr/></p>
5415<p>If manual exposure control is enabled (by setting
5416<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/>
5417then this setting has no effect,<wbr/> and the application must
5418ensure it selects exposure times that do not cause banding
5419issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
5420the application in this.<wbr/></p>
5421            </td>
5422          </tr>
5423
5424          <tr class="entries_header">
5425            <th class="th_details" colspan="5">HAL Implementation Details</th>
5426          </tr>
5427          <tr class="entry_cont">
5428            <td class="entry_details" colspan="5">
5429              <p>For all capture request templates,<wbr/> this field must be set
5430to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
5431the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
543260HZ must be available.<wbr/></p>
5433<p>If manual exposure control is enabled (by setting
5434<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/>
5435then the exposure values provided by the application must not be
5436adjusted for antibanding.<wbr/></p>
5437            </td>
5438          </tr>
5439
5440          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5441           <!-- end of entry -->
5442        
5443                
5444          <tr class="entry" id="dynamic_android.control.aeExposureCompensation">
5445            <td class="entry_name
5446             " rowspan="3">
5447              android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
5448            </td>
5449            <td class="entry_type">
5450                <span class="entry_type_name">int32</span>
5451
5452              <span class="entry_type_visibility"> [public]</span>
5453
5454
5455              <span class="entry_type_hwlevel">[legacy] </span>
5456
5457
5458
5459
5460            </td> <!-- entry_type -->
5461
5462            <td class="entry_description">
5463              <p>Adjustment to auto-exposure (AE) target image
5464brightness.<wbr/></p>
5465            </td>
5466
5467            <td class="entry_units">
5468              Compensation steps
5469            </td>
5470
5471            <td class="entry_range">
5472              <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
5473            </td>
5474
5475            <td class="entry_tags">
5476              <ul class="entry_tags">
5477                  <li><a href="#tag_BC">BC</a></li>
5478              </ul>
5479            </td>
5480
5481          </tr>
5482          <tr class="entries_header">
5483            <th class="th_details" colspan="5">Details</th>
5484          </tr>
5485          <tr class="entry_cont">
5486            <td class="entry_details" colspan="5">
5487              <p>The adjustment is measured as a count of steps,<wbr/> with the
5488step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
5489allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
5490<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
5491will mean an exposure compensation of +2 EV; -3 will mean an
5492exposure compensation of -1 EV.<wbr/> One EV represents a doubling
5493of image brightness.<wbr/> Note that this control will only be
5494effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
5495will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
5496<p>In the event of exposure compensation value being changed,<wbr/> camera device
5497may take several frames to reach the newly requested exposure target.<wbr/>
5498During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
5499state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
5500change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
5501FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
5502            </td>
5503          </tr>
5504
5505
5506          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5507           <!-- end of entry -->
5508        
5509                
5510          <tr class="entry" id="dynamic_android.control.aeLock">
5511            <td class="entry_name
5512             " rowspan="3">
5513              android.<wbr/>control.<wbr/>ae<wbr/>Lock
5514            </td>
5515            <td class="entry_type">
5516                <span class="entry_type_name entry_type_name_enum">byte</span>
5517
5518              <span class="entry_type_visibility"> [public as boolean]</span>
5519
5520
5521              <span class="entry_type_hwlevel">[legacy] </span>
5522
5523
5524
5525                <ul class="entry_type_enum">
5526                  <li>
5527                    <span class="entry_type_enum_name">OFF</span>
5528                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
5529is free to update its parameters.<wbr/></p></span>
5530                  </li>
5531                  <li>
5532                    <span class="entry_type_enum_name">ON</span>
5533                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
5534must not update the exposure and sensitivity parameters
5535while the lock is active.<wbr/></p>
5536<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
5537will still take effect while auto-exposure is locked.<wbr/></p>
5538<p>Some rare LEGACY devices may not support
5539this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
5540                  </li>
5541                </ul>
5542
5543            </td> <!-- entry_type -->
5544
5545            <td class="entry_description">
5546              <p>Whether auto-exposure (AE) is currently locked to its latest
5547calculated values.<wbr/></p>
5548            </td>
5549
5550            <td class="entry_units">
5551            </td>
5552
5553            <td class="entry_range">
5554            </td>
5555
5556            <td class="entry_tags">
5557              <ul class="entry_tags">
5558                  <li><a href="#tag_BC">BC</a></li>
5559              </ul>
5560            </td>
5561
5562          </tr>
5563          <tr class="entries_header">
5564            <th class="th_details" colspan="5">Details</th>
5565          </tr>
5566          <tr class="entry_cont">
5567            <td class="entry_details" colspan="5">
5568              <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
5569and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
5570<p>Note that even when AE is locked,<wbr/> the flash may be fired if
5571the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
5572ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
5573<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
5574is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
5575<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
5576when AE is already locked,<wbr/> the camera device will not change the exposure time
5577(<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>)
5578parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
5579is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
5580<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/>
5581Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
5582<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
5583the AE if AE is locked by the camera device internally during precapture metering
5584sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
5585ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
5586will never succeed in a sequence of preview requests where AE lock is always set
5587to <code>false</code>.<wbr/></p>
5588<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
5589get locked do not necessarily correspond to the settings that were present in the
5590latest capture result received from the camera device,<wbr/> since additional captures
5591and AE updates may have occurred even before the result was sent out.<wbr/> If an
5592application is switching between automatic and manual control and wishes to eliminate
5593any flicker during the switch,<wbr/> the following procedure is recommended:</p>
5594<ol>
5595<li>Starting in auto-AE mode:</li>
5596<li>Lock AE</li>
5597<li>Wait for the first result to be output that has the AE locked</li>
5598<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
5599<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
5600</ol>
5601<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>
5602            </td>
5603          </tr>
5604
5605
5606          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5607           <!-- end of entry -->
5608        
5609                
5610          <tr class="entry" id="dynamic_android.control.aeMode">
5611            <td class="entry_name
5612             " rowspan="3">
5613              android.<wbr/>control.<wbr/>ae<wbr/>Mode
5614            </td>
5615            <td class="entry_type">
5616                <span class="entry_type_name entry_type_name_enum">byte</span>
5617
5618              <span class="entry_type_visibility"> [public]</span>
5619
5620
5621              <span class="entry_type_hwlevel">[legacy] </span>
5622
5623
5624
5625                <ul class="entry_type_enum">
5626                  <li>
5627                    <span class="entry_type_enum_name">OFF</span>
5628                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
5629<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
5630<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
5631<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
5632device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
5633a flash unit for this camera device.<wbr/></p>
5634<p>Note that auto-white balance (AWB) and auto-focus (AF)
5635behavior is device dependent when AE is in OFF mode.<wbr/>
5636To have consistent behavior across different devices,<wbr/>
5637it is recommended to either set AWB and AF to OFF mode
5638or lock AWB and AF before setting AE to OFF.<wbr/>
5639See <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/>
5640<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>
5641for more details.<wbr/></p>
5642<p>LEGACY devices do not support the OFF mode and will
5643override attempts to use this value to ON.<wbr/></p></span>
5644                  </li>
5645                  <li>
5646                    <span class="entry_type_enum_name">ON</span>
5647                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
5648with no flash control.<wbr/></p>
5649<p>The application's values for
5650<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
5651<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
5652<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
5653application has control over the various
5654android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
5655                  </li>
5656                  <li>
5657                    <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
5658                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
5659the camera's flash unit,<wbr/> firing it in low-light
5660conditions.<wbr/></p>
5661<p>The flash may be fired during a precapture sequence
5662(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
5663may be fired for captures for which the
5664<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
5665STILL_<wbr/>CAPTURE</p></span>
5666                  </li>
5667                  <li>
5668                    <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
5669                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
5670the camera's flash unit,<wbr/> always firing it for still
5671captures.<wbr/></p>
5672<p>The flash may be fired during a precapture sequence
5673(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
5674will always be fired for captures for which the
5675<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
5676STILL_<wbr/>CAPTURE</p></span>
5677                  </li>
5678                  <li>
5679                    <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
5680                    <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
5681reduction.<wbr/></p>
5682<p>If deemed necessary by the camera device,<wbr/> a red eye
5683reduction flash will fire during the precapture
5684sequence.<wbr/></p></span>
5685                  </li>
5686                </ul>
5687
5688            </td> <!-- entry_type -->
5689
5690            <td class="entry_description">
5691              <p>The desired mode for the camera device's
5692auto-exposure routine.<wbr/></p>
5693            </td>
5694
5695            <td class="entry_units">
5696            </td>
5697
5698            <td class="entry_range">
5699              <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
5700            </td>
5701
5702            <td class="entry_tags">
5703              <ul class="entry_tags">
5704                  <li><a href="#tag_BC">BC</a></li>
5705              </ul>
5706            </td>
5707
5708          </tr>
5709          <tr class="entries_header">
5710            <th class="th_details" colspan="5">Details</th>
5711          </tr>
5712          <tr class="entry_cont">
5713            <td class="entry_details" colspan="5">
5714              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
5715AUTO.<wbr/></p>
5716<p>When set to any of the ON modes,<wbr/> the camera device's
5717auto-exposure routine is enabled,<wbr/> overriding the
5718application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
5719and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
5720<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
5721<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
5722is selected,<wbr/> the camera device's flash unit controls are
5723also overridden.<wbr/></p>
5724<p>The FLASH modes are only available if the camera device
5725has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
5726<p>If flash TORCH mode is desired,<wbr/> this field must be set to
5727ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
5728<p>When set to any of the ON modes,<wbr/> the values chosen by the
5729camera device auto-exposure routine for the overridden
5730fields for a given capture will be available in its
5731CaptureResult.<wbr/></p>
5732            </td>
5733          </tr>
5734
5735
5736          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5737           <!-- end of entry -->
5738        
5739                
5740          <tr class="entry" id="dynamic_android.control.aeRegions">
5741            <td class="entry_name
5742             " rowspan="5">
5743              android.<wbr/>control.<wbr/>ae<wbr/>Regions
5744            </td>
5745            <td class="entry_type">
5746                <span class="entry_type_name">int32</span>
5747                <span class="entry_type_container">x</span>
5748
5749                <span class="entry_type_array">
5750                  5 x area_count
5751                </span>
5752              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
5753
5754
5755
5756
5757
5758
5759            </td> <!-- entry_type -->
5760
5761            <td class="entry_description">
5762              <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
5763            </td>
5764
5765            <td class="entry_units">
5766              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
5767            </td>
5768
5769            <td class="entry_range">
5770              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
5771<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
5772            </td>
5773
5774            <td class="entry_tags">
5775              <ul class="entry_tags">
5776                  <li><a href="#tag_BC">BC</a></li>
5777              </ul>
5778            </td>
5779
5780          </tr>
5781          <tr class="entries_header">
5782            <th class="th_details" colspan="5">Details</th>
5783          </tr>
5784          <tr class="entry_cont">
5785            <td class="entry_details" colspan="5">
5786              <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
5787Otherwise will always be present.<wbr/></p>
5788<p>The maximum number of regions supported by the device is determined by the value
5789of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
5790<p>The coordinate system is based on the active pixel array,<wbr/>
5791with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
5792(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
5793<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
5794bottom-right pixel in the active pixel array.<wbr/></p>
5795<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
5796for every pixel in the area.<wbr/> This means that a large metering area
5797with the same weight as a smaller area will have more effect in
5798the metering result.<wbr/> Metering areas can partially overlap and the
5799camera device will add the weights in the overlap region.<wbr/></p>
5800<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
5801region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
5802weight is ignored.<wbr/></p>
5803<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
5804camera device.<wbr/></p>
5805<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
5806capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
5807region and output only the intersection rectangle as the metering region in the result
5808metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
5809not reported in the result metadata.<wbr/></p>
5810            </td>
5811          </tr>
5812
5813          <tr class="entries_header">
5814            <th class="th_details" colspan="5">HAL Implementation Details</th>
5815          </tr>
5816          <tr class="entry_cont">
5817            <td class="entry_details" colspan="5">
5818              <p>The HAL level representation of MeteringRectangle[] is a
5819int[5 * area_<wbr/>count].<wbr/>
5820Every five elements represent a metering region of
5821(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
5822The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
5823exclusive on xmax and ymax.<wbr/></p>
5824            </td>
5825          </tr>
5826
5827          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5828           <!-- end of entry -->
5829        
5830                
5831          <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
5832            <td class="entry_name
5833             " rowspan="3">
5834              android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
5835            </td>
5836            <td class="entry_type">
5837                <span class="entry_type_name">int32</span>
5838                <span class="entry_type_container">x</span>
5839
5840                <span class="entry_type_array">
5841                  2
5842                </span>
5843              <span class="entry_type_visibility"> [public as rangeInt]</span>
5844
5845
5846              <span class="entry_type_hwlevel">[legacy] </span>
5847
5848
5849
5850
5851            </td> <!-- entry_type -->
5852
5853            <td class="entry_description">
5854              <p>Range over which the auto-exposure routine can
5855adjust the capture frame rate to maintain good
5856exposure.<wbr/></p>
5857            </td>
5858
5859            <td class="entry_units">
5860              Frames per second (FPS)
5861            </td>
5862
5863            <td class="entry_range">
5864              <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>
5865            </td>
5866
5867            <td class="entry_tags">
5868              <ul class="entry_tags">
5869                  <li><a href="#tag_BC">BC</a></li>
5870              </ul>
5871            </td>
5872
5873          </tr>
5874          <tr class="entries_header">
5875            <th class="th_details" colspan="5">Details</th>
5876          </tr>
5877          <tr class="entry_cont">
5878            <td class="entry_details" colspan="5">
5879              <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
5880manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
5881<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
5882            </td>
5883          </tr>
5884
5885
5886          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5887           <!-- end of entry -->
5888        
5889                
5890          <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
5891            <td class="entry_name
5892             " rowspan="3">
5893              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
5894            </td>
5895            <td class="entry_type">
5896                <span class="entry_type_name entry_type_name_enum">byte</span>
5897
5898              <span class="entry_type_visibility"> [public]</span>
5899
5900
5901              <span class="entry_type_hwlevel">[limited] </span>
5902
5903
5904
5905                <ul class="entry_type_enum">
5906                  <li>
5907                    <span class="entry_type_enum_name">IDLE</span>
5908                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
5909                  </li>
5910                  <li>
5911                    <span class="entry_type_enum_name">START</span>
5912                    <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
5913by the camera device.<wbr/></p>
5914<p>The exact effect of the precapture trigger depends on
5915the current AE mode and state.<wbr/></p></span>
5916                  </li>
5917                  <li>
5918                    <span class="entry_type_enum_name">CANCEL</span>
5919                    <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
5920precapture metering sequence,<wbr/> the auto-exposure routine will return to its
5921initial state.<wbr/></p></span>
5922                  </li>
5923                </ul>
5924
5925            </td> <!-- entry_type -->
5926
5927            <td class="entry_description">
5928              <p>Whether the camera device will trigger a precapture
5929metering sequence when it processes this request.<wbr/></p>
5930            </td>
5931
5932            <td class="entry_units">
5933            </td>
5934
5935            <td class="entry_range">
5936            </td>
5937
5938            <td class="entry_tags">
5939              <ul class="entry_tags">
5940                  <li><a href="#tag_BC">BC</a></li>
5941              </ul>
5942            </td>
5943
5944          </tr>
5945          <tr class="entries_header">
5946            <th class="th_details" colspan="5">Details</th>
5947          </tr>
5948          <tr class="entry_cont">
5949            <td class="entry_details" colspan="5">
5950              <p>This entry is normally set to IDLE,<wbr/> or is not
5951included at all in the request settings.<wbr/> When included and
5952set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
5953precapture metering sequence.<wbr/></p>
5954<p>When set to CANCEL,<wbr/> the camera device will cancel any active
5955precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
5956If a precapture metering sequence is already completed,<wbr/> and the camera
5957device has implicitly locked the AE for subsequent still capture,<wbr/> the
5958CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
5959<p>The precapture sequence should be triggered before starting a
5960high-quality still capture for final metering decisions to
5961be made,<wbr/> and for firing pre-capture flash pulses to estimate
5962scene brightness and required final capture flash power,<wbr/> when
5963the flash is enabled.<wbr/></p>
5964<p>Normally,<wbr/> this entry should be set to START for only a
5965single request,<wbr/> and the application should wait until the
5966sequence completes before starting a new one.<wbr/></p>
5967<p>When a precapture metering sequence is finished,<wbr/> the camera device
5968may lock the auto-exposure routine internally to be able to accurately expose the
5969subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
5970For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
5971submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
5972submit 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
5973with <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
5974still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
5975API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
5976internally locked AE if the application doesn't submit a still capture request after
5977the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
5978be used in devices that have earlier API levels.<wbr/></p>
5979<p>The exact effect of auto-exposure (AE) precapture trigger
5980depends on the current AE mode and state; see
5981<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
5982details.<wbr/></p>
5983<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
5984capturing a high-resolution JPEG image will automatically trigger a
5985precapture sequence before the high-resolution capture,<wbr/> including
5986potentially firing a pre-capture flash.<wbr/></p>
5987            </td>
5988          </tr>
5989
5990
5991          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5992           <!-- end of entry -->
5993        
5994                
5995          <tr class="entry" id="dynamic_android.control.aeState">
5996            <td class="entry_name
5997             " rowspan="3">
5998              android.<wbr/>control.<wbr/>ae<wbr/>State
5999            </td>
6000            <td class="entry_type">
6001                <span class="entry_type_name entry_type_name_enum">byte</span>
6002
6003              <span class="entry_type_visibility"> [public]</span>
6004
6005
6006              <span class="entry_type_hwlevel">[limited] </span>
6007
6008
6009
6010                <ul class="entry_type_enum">
6011                  <li>
6012                    <span class="entry_type_enum_name">INACTIVE</span>
6013                    <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
6014<p>When a camera device is opened,<wbr/> it starts in
6015this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
6016this state in capture result.<wbr/></p></span>
6017                  </li>
6018                  <li>
6019                    <span class="entry_type_enum_name">SEARCHING</span>
6020                    <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
6021for the current scene.<wbr/></p>
6022<p>This is a transient state,<wbr/> the camera device may skip
6023reporting this state in capture result.<wbr/></p></span>
6024                  </li>
6025                  <li>
6026                    <span class="entry_type_enum_name">CONVERGED</span>
6027                    <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
6028current scene.<wbr/></p></span>
6029                  </li>
6030                  <li>
6031                    <span class="entry_type_enum_name">LOCKED</span>
6032                    <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
6033                  </li>
6034                  <li>
6035                    <span class="entry_type_enum_name">FLASH_REQUIRED</span>
6036                    <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
6037needs to be fired for good quality still
6038capture.<wbr/></p></span>
6039                  </li>
6040                  <li>
6041                    <span class="entry_type_enum_name">PRECAPTURE</span>
6042                    <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
6043and is currently executing it.<wbr/></p>
6044<p>Precapture can be triggered through setting
6045<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently
6046active and completed (if it causes camera device internal AE lock) precapture
6047metering sequence can be canceled through setting
6048<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p>
6049<p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED
6050or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient
6051state,<wbr/> the camera device may skip reporting this state in
6052capture result.<wbr/></p></span>
6053                  </li>
6054                </ul>
6055
6056            </td> <!-- entry_type -->
6057
6058            <td class="entry_description">
6059              <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p>
6060            </td>
6061
6062            <td class="entry_units">
6063            </td>
6064
6065            <td class="entry_range">
6066            </td>
6067
6068            <td class="entry_tags">
6069            </td>
6070
6071          </tr>
6072          <tr class="entries_header">
6073            <th class="th_details" colspan="5">Details</th>
6074          </tr>
6075          <tr class="entry_cont">
6076            <td class="entry_details" colspan="5">
6077              <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
6078resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6079or <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
6080the algorithm states to INACTIVE.<wbr/></p>
6081<p>The camera device can do several state transitions between two results,<wbr/> if it is
6082allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6083seen in a result.<wbr/></p>
6084<p>The state in the result is the state for this image (in sync with this image): if
6085AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
6086be good to use.<wbr/></p>
6087<p>Below are state transition tables for different AE modes.<wbr/></p>
6088<table>
6089<thead>
6090<tr>
6091<th align="center">State</th>
6092<th align="center">Transition Cause</th>
6093<th align="center">New State</th>
6094<th align="center">Notes</th>
6095</tr>
6096</thead>
6097<tbody>
6098<tr>
6099<td align="center">INACTIVE</td>
6100<td align="center"></td>
6101<td align="center">INACTIVE</td>
6102<td align="center">Camera device auto exposure algorithm is disabled</td>
6103</tr>
6104</tbody>
6105</table>
6106<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p>
6107<table>
6108<thead>
6109<tr>
6110<th align="center">State</th>
6111<th align="center">Transition Cause</th>
6112<th align="center">New State</th>
6113<th align="center">Notes</th>
6114</tr>
6115</thead>
6116<tbody>
6117<tr>
6118<td align="center">INACTIVE</td>
6119<td align="center">Camera device initiates AE scan</td>
6120<td align="center">SEARCHING</td>
6121<td align="center">Values changing</td>
6122</tr>
6123<tr>
6124<td align="center">INACTIVE</td>
6125<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6126<td align="center">LOCKED</td>
6127<td align="center">Values locked</td>
6128</tr>
6129<tr>
6130<td align="center">SEARCHING</td>
6131<td align="center">Camera device finishes AE scan</td>
6132<td align="center">CONVERGED</td>
6133<td align="center">Good values,<wbr/> not changing</td>
6134</tr>
6135<tr>
6136<td align="center">SEARCHING</td>
6137<td align="center">Camera device finishes AE scan</td>
6138<td align="center">FLASH_<wbr/>REQUIRED</td>
6139<td align="center">Converged but too dark w/<wbr/>o flash</td>
6140</tr>
6141<tr>
6142<td align="center">SEARCHING</td>
6143<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6144<td align="center">LOCKED</td>
6145<td align="center">Values locked</td>
6146</tr>
6147<tr>
6148<td align="center">CONVERGED</td>
6149<td align="center">Camera device initiates AE scan</td>
6150<td align="center">SEARCHING</td>
6151<td align="center">Values changing</td>
6152</tr>
6153<tr>
6154<td align="center">CONVERGED</td>
6155<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6156<td align="center">LOCKED</td>
6157<td align="center">Values locked</td>
6158</tr>
6159<tr>
6160<td align="center">FLASH_<wbr/>REQUIRED</td>
6161<td align="center">Camera device initiates AE scan</td>
6162<td align="center">SEARCHING</td>
6163<td align="center">Values changing</td>
6164</tr>
6165<tr>
6166<td align="center">FLASH_<wbr/>REQUIRED</td>
6167<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6168<td align="center">LOCKED</td>
6169<td align="center">Values locked</td>
6170</tr>
6171<tr>
6172<td align="center">LOCKED</td>
6173<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6174<td align="center">SEARCHING</td>
6175<td align="center">Values not good after unlock</td>
6176</tr>
6177<tr>
6178<td align="center">LOCKED</td>
6179<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6180<td align="center">CONVERGED</td>
6181<td align="center">Values good after unlock</td>
6182</tr>
6183<tr>
6184<td align="center">LOCKED</td>
6185<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6186<td align="center">FLASH_<wbr/>REQUIRED</td>
6187<td align="center">Exposure good,<wbr/> but too dark</td>
6188</tr>
6189<tr>
6190<td align="center">PRECAPTURE</td>
6191<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6192<td align="center">CONVERGED</td>
6193<td align="center">Ready for high-quality capture</td>
6194</tr>
6195<tr>
6196<td align="center">PRECAPTURE</td>
6197<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6198<td align="center">LOCKED</td>
6199<td align="center">Ready for high-quality capture</td>
6200</tr>
6201<tr>
6202<td align="center">LOCKED</td>
6203<td align="center">aeLock is ON and aePrecaptureTrigger is START</td>
6204<td align="center">LOCKED</td>
6205<td align="center">Precapture trigger is ignored when AE is already locked</td>
6206</tr>
6207<tr>
6208<td align="center">LOCKED</td>
6209<td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td>
6210<td align="center">LOCKED</td>
6211<td align="center">Precapture trigger is ignored when AE is already locked</td>
6212</tr>
6213<tr>
6214<td align="center">Any state (excluding LOCKED)</td>
6215<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
6216<td align="center">PRECAPTURE</td>
6217<td align="center">Start AE precapture metering sequence</td>
6218</tr>
6219<tr>
6220<td align="center">Any state (excluding LOCKED)</td>
6221<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td>
6222<td align="center">INACTIVE</td>
6223<td align="center">Currently active precapture metering sequence is canceled</td>
6224</tr>
6225</tbody>
6226</table>
6227<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
6228without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
6229can be skipped in that manner is called a transient state.<wbr/></p>
6230<p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions
6231listed in above table,<wbr/> it is also legal for the camera device to skip one or more
6232transient states between two results.<wbr/> See below table for examples:</p>
6233<table>
6234<thead>
6235<tr>
6236<th align="center">State</th>
6237<th align="center">Transition Cause</th>
6238<th align="center">New State</th>
6239<th align="center">Notes</th>
6240</tr>
6241</thead>
6242<tbody>
6243<tr>
6244<td align="center">INACTIVE</td>
6245<td align="center">Camera device finished AE scan</td>
6246<td align="center">CONVERGED</td>
6247<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
6248</tr>
6249<tr>
6250<td align="center">Any state (excluding LOCKED)</td>
6251<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>
6252<td align="center">FLASH_<wbr/>REQUIRED</td>
6253<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>
6254</tr>
6255<tr>
6256<td align="center">Any state (excluding LOCKED)</td>
6257<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>
6258<td align="center">CONVERGED</td>
6259<td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
6260</tr>
6261<tr>
6262<td align="center">Any state (excluding LOCKED)</td>
6263<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6264<td align="center">FLASH_<wbr/>REQUIRED</td>
6265<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>
6266</tr>
6267<tr>
6268<td align="center">Any state (excluding LOCKED)</td>
6269<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6270<td align="center">CONVERGED</td>
6271<td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
6272</tr>
6273<tr>
6274<td align="center">CONVERGED</td>
6275<td align="center">Camera device finished AE scan</td>
6276<td align="center">FLASH_<wbr/>REQUIRED</td>
6277<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>
6278</tr>
6279<tr>
6280<td align="center">FLASH_<wbr/>REQUIRED</td>
6281<td align="center">Camera device finished AE scan</td>
6282<td align="center">CONVERGED</td>
6283<td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
6284</tr>
6285</tbody>
6286</table>
6287            </td>
6288          </tr>
6289
6290
6291          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6292           <!-- end of entry -->
6293        
6294                
6295          <tr class="entry" id="dynamic_android.control.afMode">
6296            <td class="entry_name
6297             " rowspan="5">
6298              android.<wbr/>control.<wbr/>af<wbr/>Mode
6299            </td>
6300            <td class="entry_type">
6301                <span class="entry_type_name entry_type_name_enum">byte</span>
6302
6303              <span class="entry_type_visibility"> [public]</span>
6304
6305
6306              <span class="entry_type_hwlevel">[legacy] </span>
6307
6308
6309
6310                <ul class="entry_type_enum">
6311                  <li>
6312                    <span class="entry_type_enum_name">OFF</span>
6313                    <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
6314<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
6315application.<wbr/></p></span>
6316                  </li>
6317                  <li>
6318                    <span class="entry_type_enum_name">AUTO</span>
6319                    <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
6320<p>In this mode,<wbr/> the lens does not move unless
6321the autofocus trigger action is called.<wbr/> When that trigger
6322is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
6323the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
6324<p>Always supported if lens is not fixed focus.<wbr/></p>
6325<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
6326is fixed-focus.<wbr/></p>
6327<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
6328and sets the AF state to INACTIVE.<wbr/></p></span>
6329                  </li>
6330                  <li>
6331                    <span class="entry_type_enum_name">MACRO</span>
6332                    <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
6333<p>In this mode,<wbr/> the lens does not move unless the
6334autofocus trigger action is called.<wbr/> When that trigger is
6335activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
6336the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
6337mode is optimized for focusing on objects very close to
6338the camera.<wbr/></p>
6339<p>When that trigger is activated,<wbr/> AF will transition to
6340ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
6341NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
6342position to default,<wbr/> and sets the AF state to
6343INACTIVE.<wbr/></p></span>
6344                  </li>
6345                  <li>
6346                    <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
6347                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
6348position continually to attempt to provide a
6349constantly-in-focus image stream.<wbr/></p>
6350<p>The focusing behavior should be suitable for good quality
6351video recording; typically this means slower focus
6352movement and no overshoots.<wbr/> When the AF trigger is not
6353involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
6354and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
6355states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
6356the algorithm should immediately transition into
6357AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
6358lens position until a cancel AF trigger is received.<wbr/></p>
6359<p>Once cancel is received,<wbr/> the algorithm should transition
6360back to INACTIVE and resume passive scan.<wbr/> Note that this
6361behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
6362ongoing PASSIVE_<wbr/>SCAN must immediately be
6363canceled.<wbr/></p></span>
6364                  </li>
6365                  <li>
6366                    <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
6367                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
6368position continually to attempt to provide a
6369constantly-in-focus image stream.<wbr/></p>
6370<p>The focusing behavior should be suitable for still image
6371capture; typically this means focusing as fast as
6372possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
6373algorithm should start in INACTIVE state,<wbr/> and then
6374transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
6375appropriate as it attempts to maintain focus.<wbr/> When the AF
6376trigger is activated,<wbr/> the algorithm should finish its
6377PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
6378AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
6379lens position until a cancel AF trigger is received.<wbr/></p>
6380<p>When the AF cancel trigger is activated,<wbr/> the algorithm
6381should transition back to INACTIVE and then act as if it
6382has just been started.<wbr/></p></span>
6383                  </li>
6384                  <li>
6385                    <span class="entry_type_enum_name">EDOF</span>
6386                    <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
6387<p>The camera device will produce images with an extended
6388depth of field automatically; no special focusing
6389operations need to be done before taking a picture.<wbr/></p>
6390<p>AF triggers are ignored,<wbr/> and the AF state will always be
6391INACTIVE.<wbr/></p></span>
6392                  </li>
6393                </ul>
6394
6395            </td> <!-- entry_type -->
6396
6397            <td class="entry_description">
6398              <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
6399mode it is set to.<wbr/></p>
6400            </td>
6401
6402            <td class="entry_units">
6403            </td>
6404
6405            <td class="entry_range">
6406              <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
6407            </td>
6408
6409            <td class="entry_tags">
6410              <ul class="entry_tags">
6411                  <li><a href="#tag_BC">BC</a></li>
6412              </ul>
6413            </td>
6414
6415          </tr>
6416          <tr class="entries_header">
6417            <th class="th_details" colspan="5">Details</th>
6418          </tr>
6419          <tr class="entry_cont">
6420            <td class="entry_details" colspan="5">
6421              <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
6422(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
6423when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
6424dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
6425setting <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>
6426<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
6427the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
6428in result metadata.<wbr/></p>
6429            </td>
6430          </tr>
6431
6432          <tr class="entries_header">
6433            <th class="th_details" colspan="5">HAL Implementation Details</th>
6434          </tr>
6435          <tr class="entry_cont">
6436            <td class="entry_details" colspan="5">
6437              <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
6438request (<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
6439up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
6440<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
6441locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
6442after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
6443the same focal plane remains in focus.<wbr/></p>
6444<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
6445scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
6446(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
6447same lock behavior as above.<wbr/></p>
6448<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
6449focus 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/>
6450However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
6451manual control.<wbr/></p>
6452<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
6453camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
6454remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
6455by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
6456that will arise on camera modules with open-loop VCMs.<wbr/></p>
6457            </td>
6458          </tr>
6459
6460          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6461           <!-- end of entry -->
6462        
6463                
6464          <tr class="entry" id="dynamic_android.control.afRegions">
6465            <td class="entry_name
6466             " rowspan="5">
6467              android.<wbr/>control.<wbr/>af<wbr/>Regions
6468            </td>
6469            <td class="entry_type">
6470                <span class="entry_type_name">int32</span>
6471                <span class="entry_type_container">x</span>
6472
6473                <span class="entry_type_array">
6474                  5 x area_count
6475                </span>
6476              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6477
6478
6479
6480
6481
6482
6483            </td> <!-- entry_type -->
6484
6485            <td class="entry_description">
6486              <p>List of metering areas to use for auto-focus.<wbr/></p>
6487            </td>
6488
6489            <td class="entry_units">
6490              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
6491            </td>
6492
6493            <td class="entry_range">
6494              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
6495<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
6496            </td>
6497
6498            <td class="entry_tags">
6499              <ul class="entry_tags">
6500                  <li><a href="#tag_BC">BC</a></li>
6501              </ul>
6502            </td>
6503
6504          </tr>
6505          <tr class="entries_header">
6506            <th class="th_details" colspan="5">Details</th>
6507          </tr>
6508          <tr class="entry_cont">
6509            <td class="entry_details" colspan="5">
6510              <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
6511Otherwise will always be present.<wbr/></p>
6512<p>The maximum number of focus areas supported by the device is determined by the value
6513of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
6514<p>The coordinate system is based on the active pixel array,<wbr/>
6515with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
6516(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6517<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
6518bottom-right pixel in the active pixel array.<wbr/></p>
6519<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
6520for every pixel in the area.<wbr/> This means that a large metering area
6521with the same weight as a smaller area will have more effect in
6522the metering result.<wbr/> Metering areas can partially overlap and the
6523camera device will add the weights in the overlap region.<wbr/></p>
6524<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
6525is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
6526ignored.<wbr/></p>
6527<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
6528camera device.<wbr/></p>
6529<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
6530capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
6531region and output only the intersection rectangle as the metering region in the result
6532metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
6533not reported in the result metadata.<wbr/></p>
6534            </td>
6535          </tr>
6536
6537          <tr class="entries_header">
6538            <th class="th_details" colspan="5">HAL Implementation Details</th>
6539          </tr>
6540          <tr class="entry_cont">
6541            <td class="entry_details" colspan="5">
6542              <p>The HAL level representation of MeteringRectangle[] is a
6543int[5 * area_<wbr/>count].<wbr/>
6544Every five elements represent a metering region of
6545(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6546The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6547exclusive on xmax and ymax.<wbr/></p>
6548            </td>
6549          </tr>
6550
6551          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6552           <!-- end of entry -->
6553        
6554                
6555          <tr class="entry" id="dynamic_android.control.afTrigger">
6556            <td class="entry_name
6557             " rowspan="3">
6558              android.<wbr/>control.<wbr/>af<wbr/>Trigger
6559            </td>
6560            <td class="entry_type">
6561                <span class="entry_type_name entry_type_name_enum">byte</span>
6562
6563              <span class="entry_type_visibility"> [public]</span>
6564
6565
6566              <span class="entry_type_hwlevel">[legacy] </span>
6567
6568
6569
6570                <ul class="entry_type_enum">
6571                  <li>
6572                    <span class="entry_type_enum_name">IDLE</span>
6573                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6574                  </li>
6575                  <li>
6576                    <span class="entry_type_enum_name">START</span>
6577                    <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
6578                  </li>
6579                  <li>
6580                    <span class="entry_type_enum_name">CANCEL</span>
6581                    <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
6582state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
6583                  </li>
6584                </ul>
6585
6586            </td> <!-- entry_type -->
6587
6588            <td class="entry_description">
6589              <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
6590            </td>
6591
6592            <td class="entry_units">
6593            </td>
6594
6595            <td class="entry_range">
6596            </td>
6597
6598            <td class="entry_tags">
6599              <ul class="entry_tags">
6600                  <li><a href="#tag_BC">BC</a></li>
6601              </ul>
6602            </td>
6603
6604          </tr>
6605          <tr class="entries_header">
6606            <th class="th_details" colspan="5">Details</th>
6607          </tr>
6608          <tr class="entry_cont">
6609            <td class="entry_details" colspan="5">
6610              <p>This entry is normally set to IDLE,<wbr/> or is not
6611included at all in the request settings.<wbr/></p>
6612<p>When included and set to START,<wbr/> the camera device will trigger the
6613autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
6614<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
6615and return to its initial AF state.<wbr/></p>
6616<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
6617single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
6618START for multiple captures in a row means restarting the AF operation over
6619and over again.<wbr/></p>
6620<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>
6621            </td>
6622          </tr>
6623
6624
6625          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6626           <!-- end of entry -->
6627        
6628                
6629          <tr class="entry" id="dynamic_android.control.afState">
6630            <td class="entry_name
6631             " rowspan="3">
6632              android.<wbr/>control.<wbr/>af<wbr/>State
6633            </td>
6634            <td class="entry_type">
6635                <span class="entry_type_name entry_type_name_enum">byte</span>
6636
6637              <span class="entry_type_visibility"> [public]</span>
6638
6639
6640              <span class="entry_type_hwlevel">[legacy] </span>
6641
6642
6643
6644                <ul class="entry_type_enum">
6645                  <li>
6646                    <span class="entry_type_enum_name">INACTIVE</span>
6647                    <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
6648to scan.<wbr/></p>
6649<p>When a camera device is opened,<wbr/> it starts in this
6650state.<wbr/> This is a transient state,<wbr/> the camera device may
6651skip reporting this state in capture
6652result.<wbr/></p></span>
6653                  </li>
6654                  <li>
6655                    <span class="entry_type_enum_name">PASSIVE_SCAN</span>
6656                    <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
6657camera device in a continuous autofocus mode.<wbr/></p>
6658<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
6659state,<wbr/> the camera device may skip reporting this state in
6660capture result.<wbr/></p></span>
6661                  </li>
6662                  <li>
6663                    <span class="entry_type_enum_name">PASSIVE_FOCUSED</span>
6664                    <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
6665restart scanning at any time.<wbr/></p>
6666<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
6667state,<wbr/> the camera device may skip reporting this state in
6668capture result.<wbr/></p></span>
6669                  </li>
6670                  <li>
6671                    <span class="entry_type_enum_name">ACTIVE_SCAN</span>
6672                    <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
6673triggered by AF trigger.<wbr/></p>
6674<p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
6675state,<wbr/> the camera device may skip reporting this state in
6676capture result.<wbr/></p></span>
6677                  </li>
6678                  <li>
6679                    <span class="entry_type_enum_name">FOCUSED_LOCKED</span>
6680                    <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
6681focus.<wbr/></p>
6682<p>This state is reached only after an explicit START AF trigger has been
6683sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p>
6684<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
6685a 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>
6686                  </li>
6687                  <li>
6688                    <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span>
6689                    <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
6690focus.<wbr/></p>
6691<p>This state is reached only after an explicit START AF trigger has been
6692sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p>
6693<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
6694a 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>
6695                  </li>
6696                  <li>
6697                    <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span>
6698                    <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
6699and may restart scanning at any time.<wbr/></p>
6700<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
6701device may skip reporting this state in capture result.<wbr/></p>
6702<p>LEGACY camera devices do not support this state.<wbr/> When a passive
6703scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span>
6704                  </li>
6705                </ul>
6706
6707            </td> <!-- entry_type -->
6708
6709            <td class="entry_description">
6710              <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
6711            </td>
6712
6713            <td class="entry_units">
6714            </td>
6715
6716            <td class="entry_range">
6717            </td>
6718
6719            <td class="entry_tags">
6720            </td>
6721
6722          </tr>
6723          <tr class="entries_header">
6724            <th class="th_details" colspan="5">Details</th>
6725          </tr>
6726          <tr class="entry_cont">
6727            <td class="entry_details" colspan="5">
6728              <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
6729resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6730or <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
6731the algorithm states to INACTIVE.<wbr/></p>
6732<p>The camera device can do several state transitions between two results,<wbr/> if it is
6733allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6734seen in a result.<wbr/></p>
6735<p>The state in the result is the state for this image (in sync with this image): if
6736AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
6737be sharp.<wbr/></p>
6738<p>Below are state transition tables for different AF modes.<wbr/></p>
6739<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>
6740<table>
6741<thead>
6742<tr>
6743<th align="center">State</th>
6744<th align="center">Transition Cause</th>
6745<th align="center">New State</th>
6746<th align="center">Notes</th>
6747</tr>
6748</thead>
6749<tbody>
6750<tr>
6751<td align="center">INACTIVE</td>
6752<td align="center"></td>
6753<td align="center">INACTIVE</td>
6754<td align="center">Never changes</td>
6755</tr>
6756</tbody>
6757</table>
6758<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>
6759<table>
6760<thead>
6761<tr>
6762<th align="center">State</th>
6763<th align="center">Transition Cause</th>
6764<th align="center">New State</th>
6765<th align="center">Notes</th>
6766</tr>
6767</thead>
6768<tbody>
6769<tr>
6770<td align="center">INACTIVE</td>
6771<td align="center">AF_<wbr/>TRIGGER</td>
6772<td align="center">ACTIVE_<wbr/>SCAN</td>
6773<td align="center">Start AF sweep,<wbr/> Lens now moving</td>
6774</tr>
6775<tr>
6776<td align="center">ACTIVE_<wbr/>SCAN</td>
6777<td align="center">AF sweep done</td>
6778<td align="center">FOCUSED_<wbr/>LOCKED</td>
6779<td align="center">Focused,<wbr/> Lens now locked</td>
6780</tr>
6781<tr>
6782<td align="center">ACTIVE_<wbr/>SCAN</td>
6783<td align="center">AF sweep done</td>
6784<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6785<td align="center">Not focused,<wbr/> Lens now locked</td>
6786</tr>
6787<tr>
6788<td align="center">ACTIVE_<wbr/>SCAN</td>
6789<td align="center">AF_<wbr/>CANCEL</td>
6790<td align="center">INACTIVE</td>
6791<td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
6792</tr>
6793<tr>
6794<td align="center">FOCUSED_<wbr/>LOCKED</td>
6795<td align="center">AF_<wbr/>CANCEL</td>
6796<td align="center">INACTIVE</td>
6797<td align="center">Cancel/<wbr/>reset AF</td>
6798</tr>
6799<tr>
6800<td align="center">FOCUSED_<wbr/>LOCKED</td>
6801<td align="center">AF_<wbr/>TRIGGER</td>
6802<td align="center">ACTIVE_<wbr/>SCAN</td>
6803<td align="center">Start new sweep,<wbr/> Lens now moving</td>
6804</tr>
6805<tr>
6806<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6807<td align="center">AF_<wbr/>CANCEL</td>
6808<td align="center">INACTIVE</td>
6809<td align="center">Cancel/<wbr/>reset AF</td>
6810</tr>
6811<tr>
6812<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6813<td align="center">AF_<wbr/>TRIGGER</td>
6814<td align="center">ACTIVE_<wbr/>SCAN</td>
6815<td align="center">Start new sweep,<wbr/> Lens now moving</td>
6816</tr>
6817<tr>
6818<td align="center">Any state</td>
6819<td align="center">Mode change</td>
6820<td align="center">INACTIVE</td>
6821<td align="center"></td>
6822</tr>
6823</tbody>
6824</table>
6825<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
6826without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
6827can be skipped in that manner is called a transient state.<wbr/></p>
6828<p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
6829state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
6830one or more transient states between two results.<wbr/> See below table for examples:</p>
6831<table>
6832<thead>
6833<tr>
6834<th align="center">State</th>
6835<th align="center">Transition Cause</th>
6836<th align="center">New State</th>
6837<th align="center">Notes</th>
6838</tr>
6839</thead>
6840<tbody>
6841<tr>
6842<td align="center">INACTIVE</td>
6843<td align="center">AF_<wbr/>TRIGGER</td>
6844<td align="center">FOCUSED_<wbr/>LOCKED</td>
6845<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
6846</tr>
6847<tr>
6848<td align="center">INACTIVE</td>
6849<td align="center">AF_<wbr/>TRIGGER</td>
6850<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6851<td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
6852</tr>
6853<tr>
6854<td align="center">FOCUSED_<wbr/>LOCKED</td>
6855<td align="center">AF_<wbr/>TRIGGER</td>
6856<td align="center">FOCUSED_<wbr/>LOCKED</td>
6857<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
6858</tr>
6859<tr>
6860<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6861<td align="center">AF_<wbr/>TRIGGER</td>
6862<td align="center">FOCUSED_<wbr/>LOCKED</td>
6863<td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
6864</tr>
6865</tbody>
6866</table>
6867<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>
6868<table>
6869<thead>
6870<tr>
6871<th align="center">State</th>
6872<th align="center">Transition Cause</th>
6873<th align="center">New State</th>
6874<th align="center">Notes</th>
6875</tr>
6876</thead>
6877<tbody>
6878<tr>
6879<td align="center">INACTIVE</td>
6880<td align="center">Camera device initiates new scan</td>
6881<td align="center">PASSIVE_<wbr/>SCAN</td>
6882<td align="center">Start AF scan,<wbr/> Lens now moving</td>
6883</tr>
6884<tr>
6885<td align="center">INACTIVE</td>
6886<td align="center">AF_<wbr/>TRIGGER</td>
6887<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6888<td align="center">AF state query,<wbr/> Lens now locked</td>
6889</tr>
6890<tr>
6891<td align="center">PASSIVE_<wbr/>SCAN</td>
6892<td align="center">Camera device completes current scan</td>
6893<td align="center">PASSIVE_<wbr/>FOCUSED</td>
6894<td align="center">End AF scan,<wbr/> Lens now locked</td>
6895</tr>
6896<tr>
6897<td align="center">PASSIVE_<wbr/>SCAN</td>
6898<td align="center">Camera device fails current scan</td>
6899<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
6900<td align="center">End AF scan,<wbr/> Lens now locked</td>
6901</tr>
6902<tr>
6903<td align="center">PASSIVE_<wbr/>SCAN</td>
6904<td align="center">AF_<wbr/>TRIGGER</td>
6905<td align="center">FOCUSED_<wbr/>LOCKED</td>
6906<td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td>
6907</tr>
6908<tr>
6909<td align="center">PASSIVE_<wbr/>SCAN</td>
6910<td align="center">AF_<wbr/>TRIGGER</td>
6911<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6912<td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td>
6913</tr>
6914<tr>
6915<td align="center">PASSIVE_<wbr/>SCAN</td>
6916<td align="center">AF_<wbr/>CANCEL</td>
6917<td align="center">INACTIVE</td>
6918<td align="center">Reset lens position,<wbr/> Lens now locked</td>
6919</tr>
6920<tr>
6921<td align="center">PASSIVE_<wbr/>FOCUSED</td>
6922<td align="center">Camera device initiates new scan</td>
6923<td align="center">PASSIVE_<wbr/>SCAN</td>
6924<td align="center">Start AF scan,<wbr/> Lens now moving</td>
6925</tr>
6926<tr>
6927<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
6928<td align="center">Camera device initiates new scan</td>
6929<td align="center">PASSIVE_<wbr/>SCAN</td>
6930<td align="center">Start AF scan,<wbr/> Lens now moving</td>
6931</tr>
6932<tr>
6933<td align="center">PASSIVE_<wbr/>FOCUSED</td>
6934<td align="center">AF_<wbr/>TRIGGER</td>
6935<td align="center">FOCUSED_<wbr/>LOCKED</td>
6936<td align="center">Immediate transition,<wbr/> lens now locked</td>
6937</tr>
6938<tr>
6939<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
6940<td align="center">AF_<wbr/>TRIGGER</td>
6941<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6942<td align="center">Immediate transition,<wbr/> lens now locked</td>
6943</tr>
6944<tr>
6945<td align="center">FOCUSED_<wbr/>LOCKED</td>
6946<td align="center">AF_<wbr/>TRIGGER</td>
6947<td align="center">FOCUSED_<wbr/>LOCKED</td>
6948<td align="center">No effect</td>
6949</tr>
6950<tr>
6951<td align="center">FOCUSED_<wbr/>LOCKED</td>
6952<td align="center">AF_<wbr/>CANCEL</td>
6953<td align="center">INACTIVE</td>
6954<td align="center">Restart AF scan</td>
6955</tr>
6956<tr>
6957<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6958<td align="center">AF_<wbr/>TRIGGER</td>
6959<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6960<td align="center">No effect</td>
6961</tr>
6962<tr>
6963<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6964<td align="center">AF_<wbr/>CANCEL</td>
6965<td align="center">INACTIVE</td>
6966<td align="center">Restart AF scan</td>
6967</tr>
6968</tbody>
6969</table>
6970<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>
6971<table>
6972<thead>
6973<tr>
6974<th align="center">State</th>
6975<th align="center">Transition Cause</th>
6976<th align="center">New State</th>
6977<th align="center">Notes</th>
6978</tr>
6979</thead>
6980<tbody>
6981<tr>
6982<td align="center">INACTIVE</td>
6983<td align="center">Camera device initiates new scan</td>
6984<td align="center">PASSIVE_<wbr/>SCAN</td>
6985<td align="center">Start AF scan,<wbr/> Lens now moving</td>
6986</tr>
6987<tr>
6988<td align="center">INACTIVE</td>
6989<td align="center">AF_<wbr/>TRIGGER</td>
6990<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6991<td align="center">AF state query,<wbr/> Lens now locked</td>
6992</tr>
6993<tr>
6994<td align="center">PASSIVE_<wbr/>SCAN</td>
6995<td align="center">Camera device completes current scan</td>
6996<td align="center">PASSIVE_<wbr/>FOCUSED</td>
6997<td align="center">End AF scan,<wbr/> Lens now locked</td>
6998</tr>
6999<tr>
7000<td align="center">PASSIVE_<wbr/>SCAN</td>
7001<td align="center">Camera device fails current scan</td>
7002<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7003<td align="center">End AF scan,<wbr/> Lens now locked</td>
7004</tr>
7005<tr>
7006<td align="center">PASSIVE_<wbr/>SCAN</td>
7007<td align="center">AF_<wbr/>TRIGGER</td>
7008<td align="center">FOCUSED_<wbr/>LOCKED</td>
7009<td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td>
7010</tr>
7011<tr>
7012<td align="center">PASSIVE_<wbr/>SCAN</td>
7013<td align="center">AF_<wbr/>TRIGGER</td>
7014<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7015<td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td>
7016</tr>
7017<tr>
7018<td align="center">PASSIVE_<wbr/>SCAN</td>
7019<td align="center">AF_<wbr/>CANCEL</td>
7020<td align="center">INACTIVE</td>
7021<td align="center">Reset lens position,<wbr/> Lens now locked</td>
7022</tr>
7023<tr>
7024<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7025<td align="center">Camera device initiates new scan</td>
7026<td align="center">PASSIVE_<wbr/>SCAN</td>
7027<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7028</tr>
7029<tr>
7030<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7031<td align="center">Camera device initiates new scan</td>
7032<td align="center">PASSIVE_<wbr/>SCAN</td>
7033<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7034</tr>
7035<tr>
7036<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7037<td align="center">AF_<wbr/>TRIGGER</td>
7038<td align="center">FOCUSED_<wbr/>LOCKED</td>
7039<td align="center">Immediate trans.<wbr/> Lens now locked</td>
7040</tr>
7041<tr>
7042<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7043<td align="center">AF_<wbr/>TRIGGER</td>
7044<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7045<td align="center">Immediate trans.<wbr/> Lens now locked</td>
7046</tr>
7047<tr>
7048<td align="center">FOCUSED_<wbr/>LOCKED</td>
7049<td align="center">AF_<wbr/>TRIGGER</td>
7050<td align="center">FOCUSED_<wbr/>LOCKED</td>
7051<td align="center">No effect</td>
7052</tr>
7053<tr>
7054<td align="center">FOCUSED_<wbr/>LOCKED</td>
7055<td align="center">AF_<wbr/>CANCEL</td>
7056<td align="center">INACTIVE</td>
7057<td align="center">Restart AF scan</td>
7058</tr>
7059<tr>
7060<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7061<td align="center">AF_<wbr/>TRIGGER</td>
7062<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7063<td align="center">No effect</td>
7064</tr>
7065<tr>
7066<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7067<td align="center">AF_<wbr/>CANCEL</td>
7068<td align="center">INACTIVE</td>
7069<td align="center">Restart AF scan</td>
7070</tr>
7071</tbody>
7072</table>
7073<p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
7074(AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
7075camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
7076will be evaluated in the context of the new mode in the request.<wbr/>
7077See below table for examples:</p>
7078<table>
7079<thead>
7080<tr>
7081<th align="center">State</th>
7082<th align="center">Transition Cause</th>
7083<th align="center">New State</th>
7084<th align="center">Notes</th>
7085</tr>
7086</thead>
7087<tbody>
7088<tr>
7089<td align="center">any state</td>
7090<td align="center">CAF--&gt;AUTO mode switch</td>
7091<td align="center">INACTIVE</td>
7092<td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
7093</tr>
7094<tr>
7095<td align="center">any state</td>
7096<td align="center">CAF--&gt;AUTO mode switch with AF_<wbr/>TRIGGER</td>
7097<td align="center">trigger-reachable states from INACTIVE</td>
7098<td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
7099</tr>
7100<tr>
7101<td align="center">any state</td>
7102<td align="center">AUTO--&gt;CAF mode switch</td>
7103<td align="center">passively reachable states from INACTIVE</td>
7104<td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
7105</tr>
7106</tbody>
7107</table>
7108            </td>
7109          </tr>
7110
7111
7112          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7113           <!-- end of entry -->
7114        
7115                
7116          <tr class="entry" id="dynamic_android.control.afTriggerId">
7117            <td class="entry_name
7118                entry_name_deprecated
7119             " rowspan="3">
7120              android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
7121            </td>
7122            <td class="entry_type">
7123                <span class="entry_type_name">int32</span>
7124
7125              <span class="entry_type_visibility"> [system]</span>
7126
7127
7128
7129              <span class="entry_type_deprecated">[deprecated] </span>
7130
7131
7132
7133            </td> <!-- entry_type -->
7134
7135            <td class="entry_description">
7136              <p>The ID sent with the latest
7137CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
7138            </td>
7139
7140            <td class="entry_units">
7141            </td>
7142
7143            <td class="entry_range">
7144              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
7145            </td>
7146
7147            <td class="entry_tags">
7148            </td>
7149
7150          </tr>
7151          <tr class="entries_header">
7152            <th class="th_details" colspan="5">Details</th>
7153          </tr>
7154          <tr class="entry_cont">
7155            <td class="entry_details" colspan="5">
7156              <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
7157received yet by HAL.<wbr/> Always updated even if AF algorithm
7158ignores the trigger</p>
7159            </td>
7160          </tr>
7161
7162
7163          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7164           <!-- end of entry -->
7165        
7166                
7167          <tr class="entry" id="dynamic_android.control.awbLock">
7168            <td class="entry_name
7169             " rowspan="3">
7170              android.<wbr/>control.<wbr/>awb<wbr/>Lock
7171            </td>
7172            <td class="entry_type">
7173                <span class="entry_type_name entry_type_name_enum">byte</span>
7174
7175              <span class="entry_type_visibility"> [public as boolean]</span>
7176
7177
7178              <span class="entry_type_hwlevel">[legacy] </span>
7179
7180
7181
7182                <ul class="entry_type_enum">
7183                  <li>
7184                    <span class="entry_type_enum_name">OFF</span>
7185                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
7186algorithm is free to update its parameters if in AUTO
7187mode.<wbr/></p></span>
7188                  </li>
7189                  <li>
7190                    <span class="entry_type_enum_name">ON</span>
7191                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
7192algorithm will not update its parameters while the lock
7193is active.<wbr/></p></span>
7194                  </li>
7195                </ul>
7196
7197            </td> <!-- entry_type -->
7198
7199            <td class="entry_description">
7200              <p>Whether auto-white balance (AWB) is currently locked to its
7201latest calculated values.<wbr/></p>
7202            </td>
7203
7204            <td class="entry_units">
7205            </td>
7206
7207            <td class="entry_range">
7208            </td>
7209
7210            <td class="entry_tags">
7211              <ul class="entry_tags">
7212                  <li><a href="#tag_BC">BC</a></li>
7213              </ul>
7214            </td>
7215
7216          </tr>
7217          <tr class="entries_header">
7218            <th class="th_details" colspan="5">Details</th>
7219          </tr>
7220          <tr class="entry_cont">
7221            <td class="entry_details" colspan="5">
7222              <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
7223and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
7224<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
7225get locked do not necessarily correspond to the settings that were present in the
7226latest capture result received from the camera device,<wbr/> since additional captures
7227and AWB updates may have occurred even before the result was sent out.<wbr/> If an
7228application is switching between automatic and manual control and wishes to eliminate
7229any flicker during the switch,<wbr/> the following procedure is recommended:</p>
7230<ol>
7231<li>Starting in auto-AWB mode:</li>
7232<li>Lock AWB</li>
7233<li>Wait for the first result to be output that has the AWB locked</li>
7234<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
7235<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
7236</ol>
7237<p>Note that AWB lock is only meaningful when
7238<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
7239AWB is already fixed to a specific setting.<wbr/></p>
7240<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
7241            </td>
7242          </tr>
7243
7244
7245          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7246           <!-- end of entry -->
7247        
7248                
7249          <tr class="entry" id="dynamic_android.control.awbMode">
7250            <td class="entry_name
7251             " rowspan="3">
7252              android.<wbr/>control.<wbr/>awb<wbr/>Mode
7253            </td>
7254            <td class="entry_type">
7255                <span class="entry_type_name entry_type_name_enum">byte</span>
7256
7257              <span class="entry_type_visibility"> [public]</span>
7258
7259
7260              <span class="entry_type_hwlevel">[legacy] </span>
7261
7262
7263
7264                <ul class="entry_type_enum">
7265                  <li>
7266                    <span class="entry_type_enum_name">OFF</span>
7267                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
7268<p>The application-selected color transform matrix
7269(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
7270(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
7271device for manual white balance control.<wbr/></p></span>
7272                  </li>
7273                  <li>
7274                    <span class="entry_type_enum_name">AUTO</span>
7275                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
7276<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7277and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7278For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7279values used by the camera device for the transform and gains
7280will be available in the capture result for this request.<wbr/></p></span>
7281                  </li>
7282                  <li>
7283                    <span class="entry_type_enum_name">INCANDESCENT</span>
7284                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7285the camera device uses incandescent light as the assumed scene
7286illumination for white balance.<wbr/></p>
7287<p>While the exact white balance transforms are up to the
7288camera device,<wbr/> they will approximately match the CIE
7289standard illuminant A.<wbr/></p>
7290<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7291and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7292For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7293values used by the camera device for the transform and gains
7294will be available in the capture result for this request.<wbr/></p></span>
7295                  </li>
7296                  <li>
7297                    <span class="entry_type_enum_name">FLUORESCENT</span>
7298                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7299the camera device uses fluorescent light as the assumed scene
7300illumination for white balance.<wbr/></p>
7301<p>While the exact white balance transforms are up to the
7302camera device,<wbr/> they will approximately match the CIE
7303standard illuminant F2.<wbr/></p>
7304<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7305and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7306For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7307values used by the camera device for the transform and gains
7308will be available in the capture result for this request.<wbr/></p></span>
7309                  </li>
7310                  <li>
7311                    <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
7312                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7313the camera device uses warm fluorescent light as the assumed scene
7314illumination for white balance.<wbr/></p>
7315<p>While the exact white balance transforms are up to the
7316camera device,<wbr/> they will approximately match the CIE
7317standard illuminant F4.<wbr/></p>
7318<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7319and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7320For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7321values used by the camera device for the transform and gains
7322will be available in the capture result for this request.<wbr/></p></span>
7323                  </li>
7324                  <li>
7325                    <span class="entry_type_enum_name">DAYLIGHT</span>
7326                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7327the camera device uses daylight light as the assumed scene
7328illumination for white balance.<wbr/></p>
7329<p>While the exact white balance transforms are up to the
7330camera device,<wbr/> they will approximately match the CIE
7331standard illuminant D65.<wbr/></p>
7332<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7333and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7334For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7335values used by the camera device for the transform and gains
7336will be available in the capture result for this request.<wbr/></p></span>
7337                  </li>
7338                  <li>
7339                    <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
7340                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7341the camera device uses cloudy daylight light as the assumed scene
7342illumination for white balance.<wbr/></p>
7343<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7344and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7345For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7346values used by the camera device for the transform and gains
7347will be available in the capture result for this request.<wbr/></p></span>
7348                  </li>
7349                  <li>
7350                    <span class="entry_type_enum_name">TWILIGHT</span>
7351                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7352the camera device uses twilight light as the assumed scene
7353illumination for white balance.<wbr/></p>
7354<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7355and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7356For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7357values used by the camera device for the transform and gains
7358will be available in the capture result for this request.<wbr/></p></span>
7359                  </li>
7360                  <li>
7361                    <span class="entry_type_enum_name">SHADE</span>
7362                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7363the camera device uses shade light as the assumed scene
7364illumination for white balance.<wbr/></p>
7365<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7366and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7367For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7368values used by the camera device for the transform and gains
7369will be available in the capture result for this request.<wbr/></p></span>
7370                  </li>
7371                </ul>
7372
7373            </td> <!-- entry_type -->
7374
7375            <td class="entry_description">
7376              <p>Whether auto-white balance (AWB) is currently setting the color
7377transform fields,<wbr/> and what its illumination target
7378is.<wbr/></p>
7379            </td>
7380
7381            <td class="entry_units">
7382            </td>
7383
7384            <td class="entry_range">
7385              <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
7386            </td>
7387
7388            <td class="entry_tags">
7389              <ul class="entry_tags">
7390                  <li><a href="#tag_BC">BC</a></li>
7391              </ul>
7392            </td>
7393
7394          </tr>
7395          <tr class="entries_header">
7396            <th class="th_details" colspan="5">Details</th>
7397          </tr>
7398          <tr class="entry_cont">
7399            <td class="entry_details" colspan="5">
7400              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
7401<p>When set to the ON mode,<wbr/> the camera device's auto-white balance
7402routine is enabled,<wbr/> overriding the application's selected
7403<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
7404<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>
7405is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
7406also 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
7407setting AE mode to OFF.<wbr/></p>
7408<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
7409routine is disabled.<wbr/> The application manually controls the white
7410balance 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>
7411and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
7412<p>When set to any other modes,<wbr/> the camera device's auto-white
7413balance routine is disabled.<wbr/> The camera device uses each
7414particular illumination target for white balance
7415adjustment.<wbr/> The application's values for
7416<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
7417<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
7418<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
7419            </td>
7420          </tr>
7421
7422
7423          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7424           <!-- end of entry -->
7425        
7426                
7427          <tr class="entry" id="dynamic_android.control.awbRegions">
7428            <td class="entry_name
7429             " rowspan="5">
7430              android.<wbr/>control.<wbr/>awb<wbr/>Regions
7431            </td>
7432            <td class="entry_type">
7433                <span class="entry_type_name">int32</span>
7434                <span class="entry_type_container">x</span>
7435
7436                <span class="entry_type_array">
7437                  5 x area_count
7438                </span>
7439              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
7440
7441
7442
7443
7444
7445
7446            </td> <!-- entry_type -->
7447
7448            <td class="entry_description">
7449              <p>List of metering areas to use for auto-white-balance illuminant
7450estimation.<wbr/></p>
7451            </td>
7452
7453            <td class="entry_units">
7454              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
7455            </td>
7456
7457            <td class="entry_range">
7458              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
7459<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
7460            </td>
7461
7462            <td class="entry_tags">
7463              <ul class="entry_tags">
7464                  <li><a href="#tag_BC">BC</a></li>
7465              </ul>
7466            </td>
7467
7468          </tr>
7469          <tr class="entries_header">
7470            <th class="th_details" colspan="5">Details</th>
7471          </tr>
7472          <tr class="entry_cont">
7473            <td class="entry_details" colspan="5">
7474              <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
7475Otherwise will always be present.<wbr/></p>
7476<p>The maximum number of regions supported by the device is determined by the value
7477of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
7478<p>The coordinate system is based on the active pixel array,<wbr/>
7479with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
7480(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7481<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
7482bottom-right pixel in the active pixel array.<wbr/></p>
7483<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
7484for every pixel in the area.<wbr/> This means that a large metering area
7485with the same weight as a smaller area will have more effect in
7486the metering result.<wbr/> Metering areas can partially overlap and the
7487camera device will add the weights in the overlap region.<wbr/></p>
7488<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
7489only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
74900 weight is ignored.<wbr/></p>
7491<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
7492camera device.<wbr/></p>
7493<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
7494capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
7495region and output only the intersection rectangle as the metering region in the result
7496metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
7497not reported in the result metadata.<wbr/></p>
7498            </td>
7499          </tr>
7500
7501          <tr class="entries_header">
7502            <th class="th_details" colspan="5">HAL Implementation Details</th>
7503          </tr>
7504          <tr class="entry_cont">
7505            <td class="entry_details" colspan="5">
7506              <p>The HAL level representation of MeteringRectangle[] is a
7507int[5 * area_<wbr/>count].<wbr/>
7508Every five elements represent a metering region of
7509(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
7510The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
7511exclusive on xmax and ymax.<wbr/></p>
7512            </td>
7513          </tr>
7514
7515          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7516           <!-- end of entry -->
7517        
7518                
7519          <tr class="entry" id="dynamic_android.control.captureIntent">
7520            <td class="entry_name
7521             " rowspan="3">
7522              android.<wbr/>control.<wbr/>capture<wbr/>Intent
7523            </td>
7524            <td class="entry_type">
7525                <span class="entry_type_name entry_type_name_enum">byte</span>
7526
7527              <span class="entry_type_visibility"> [public]</span>
7528
7529
7530              <span class="entry_type_hwlevel">[legacy] </span>
7531
7532
7533
7534                <ul class="entry_type_enum">
7535                  <li>
7536                    <span class="entry_type_enum_name">CUSTOM</span>
7537                    <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
7538categories.<wbr/> The camera device will default to preview-like
7539behavior.<wbr/></p></span>
7540                  </li>
7541                  <li>
7542                    <span class="entry_type_enum_name">PREVIEW</span>
7543                    <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
7544<p>The precapture trigger may be used to start off a metering
7545w/<wbr/>flash sequence.<wbr/></p></span>
7546                  </li>
7547                  <li>
7548                    <span class="entry_type_enum_name">STILL_CAPTURE</span>
7549                    <span class="entry_type_enum_notes"><p>This request is for a still capture-type
7550use case.<wbr/></p>
7551<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
7552                  </li>
7553                  <li>
7554                    <span class="entry_type_enum_name">VIDEO_RECORD</span>
7555                    <span class="entry_type_enum_notes"><p>This request is for a video recording
7556use case.<wbr/></p></span>
7557                  </li>
7558                  <li>
7559                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
7560                    <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
7561image while recording video) use case.<wbr/></p>
7562<p>The camera device should take the highest-quality image
7563possible (given the other settings) without disrupting the
7564frame rate of video recording.<wbr/>  </p></span>
7565                  </li>
7566                  <li>
7567                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
7568                    <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
7569application will stream full-resolution images and
7570reprocess one or several later for a final
7571capture.<wbr/></p></span>
7572                  </li>
7573                  <li>
7574                    <span class="entry_type_enum_name">MANUAL</span>
7575                    <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
7576the applications want to directly control the capture parameters.<wbr/></p>
7577<p>For example,<wbr/> the application may wish to manually control
7578<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>
7579                  </li>
7580                </ul>
7581
7582            </td> <!-- entry_type -->
7583
7584            <td class="entry_description">
7585              <p>Information to the camera device 3A (auto-exposure,<wbr/>
7586auto-focus,<wbr/> auto-white balance) routines about the purpose
7587of this capture,<wbr/> to help the camera device to decide optimal 3A
7588strategy.<wbr/></p>
7589            </td>
7590
7591            <td class="entry_units">
7592            </td>
7593
7594            <td class="entry_range">
7595            </td>
7596
7597            <td class="entry_tags">
7598              <ul class="entry_tags">
7599                  <li><a href="#tag_BC">BC</a></li>
7600              </ul>
7601            </td>
7602
7603          </tr>
7604          <tr class="entries_header">
7605            <th class="th_details" colspan="5">Details</th>
7606          </tr>
7607          <tr class="entry_cont">
7608            <td class="entry_details" colspan="5">
7609              <p>This control (except for MANUAL) is only effective if
7610<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
7611<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
7612contains OPAQUE_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
7613contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are always supported.<wbr/></p>
7614            </td>
7615          </tr>
7616
7617
7618          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7619           <!-- end of entry -->
7620        
7621                
7622          <tr class="entry" id="dynamic_android.control.awbState">
7623            <td class="entry_name
7624             " rowspan="3">
7625              android.<wbr/>control.<wbr/>awb<wbr/>State
7626            </td>
7627            <td class="entry_type">
7628                <span class="entry_type_name entry_type_name_enum">byte</span>
7629
7630              <span class="entry_type_visibility"> [public]</span>
7631
7632
7633              <span class="entry_type_hwlevel">[limited] </span>
7634
7635
7636
7637                <ul class="entry_type_enum">
7638                  <li>
7639                    <span class="entry_type_enum_name">INACTIVE</span>
7640                    <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
7641<p>When a camera device is opened,<wbr/> it starts in this
7642state.<wbr/> This is a transient state,<wbr/> the camera device may
7643skip reporting this state in capture
7644result.<wbr/></p></span>
7645                  </li>
7646                  <li>
7647                    <span class="entry_type_enum_name">SEARCHING</span>
7648                    <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
7649values for the current scene.<wbr/></p>
7650<p>This is a transient state,<wbr/> the camera device
7651may skip reporting this state in capture result.<wbr/></p></span>
7652                  </li>
7653                  <li>
7654                    <span class="entry_type_enum_name">CONVERGED</span>
7655                    <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
7656current scene.<wbr/></p></span>
7657                  </li>
7658                  <li>
7659                    <span class="entry_type_enum_name">LOCKED</span>
7660                    <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
7661                  </li>
7662                </ul>
7663
7664            </td> <!-- entry_type -->
7665
7666            <td class="entry_description">
7667              <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
7668            </td>
7669
7670            <td class="entry_units">
7671            </td>
7672
7673            <td class="entry_range">
7674            </td>
7675
7676            <td class="entry_tags">
7677            </td>
7678
7679          </tr>
7680          <tr class="entries_header">
7681            <th class="th_details" colspan="5">Details</th>
7682          </tr>
7683          <tr class="entry_cont">
7684            <td class="entry_details" colspan="5">
7685              <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
7686resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
7687or <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
7688the algorithm states to INACTIVE.<wbr/></p>
7689<p>The camera device can do several state transitions between two results,<wbr/> if it is
7690allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
7691a result.<wbr/></p>
7692<p>The state in the result is the state for this image (in sync with this image): if
7693AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
7694be good to use.<wbr/></p>
7695<p>Below are state transition tables for different AWB modes.<wbr/></p>
7696<p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p>
7697<table>
7698<thead>
7699<tr>
7700<th align="center">State</th>
7701<th align="center">Transition Cause</th>
7702<th align="center">New State</th>
7703<th align="center">Notes</th>
7704</tr>
7705</thead>
7706<tbody>
7707<tr>
7708<td align="center">INACTIVE</td>
7709<td align="center"></td>
7710<td align="center">INACTIVE</td>
7711<td align="center">Camera device auto white balance algorithm is disabled</td>
7712</tr>
7713</tbody>
7714</table>
7715<p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
7716<table>
7717<thead>
7718<tr>
7719<th align="center">State</th>
7720<th align="center">Transition Cause</th>
7721<th align="center">New State</th>
7722<th align="center">Notes</th>
7723</tr>
7724</thead>
7725<tbody>
7726<tr>
7727<td align="center">INACTIVE</td>
7728<td align="center">Camera device initiates AWB scan</td>
7729<td align="center">SEARCHING</td>
7730<td align="center">Values changing</td>
7731</tr>
7732<tr>
7733<td align="center">INACTIVE</td>
7734<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
7735<td align="center">LOCKED</td>
7736<td align="center">Values locked</td>
7737</tr>
7738<tr>
7739<td align="center">SEARCHING</td>
7740<td align="center">Camera device finishes AWB scan</td>
7741<td align="center">CONVERGED</td>
7742<td align="center">Good values,<wbr/> not changing</td>
7743</tr>
7744<tr>
7745<td align="center">SEARCHING</td>
7746<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
7747<td align="center">LOCKED</td>
7748<td align="center">Values locked</td>
7749</tr>
7750<tr>
7751<td align="center">CONVERGED</td>
7752<td align="center">Camera device initiates AWB scan</td>
7753<td align="center">SEARCHING</td>
7754<td align="center">Values changing</td>
7755</tr>
7756<tr>
7757<td align="center">CONVERGED</td>
7758<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
7759<td align="center">LOCKED</td>
7760<td align="center">Values locked</td>
7761</tr>
7762<tr>
7763<td align="center">LOCKED</td>
7764<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
7765<td align="center">SEARCHING</td>
7766<td align="center">Values not good after unlock</td>
7767</tr>
7768</tbody>
7769</table>
7770<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7771without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7772can be skipped in that manner is called a transient state.<wbr/></p>
7773<p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
7774listed in above table,<wbr/> it is also legal for the camera device to skip one or more
7775transient states between two results.<wbr/> See below table for examples:</p>
7776<table>
7777<thead>
7778<tr>
7779<th align="center">State</th>
7780<th align="center">Transition Cause</th>
7781<th align="center">New State</th>
7782<th align="center">Notes</th>
7783</tr>
7784</thead>
7785<tbody>
7786<tr>
7787<td align="center">INACTIVE</td>
7788<td align="center">Camera device finished AWB scan</td>
7789<td align="center">CONVERGED</td>
7790<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
7791</tr>
7792<tr>
7793<td align="center">LOCKED</td>
7794<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
7795<td align="center">CONVERGED</td>
7796<td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
7797</tr>
7798</tbody>
7799</table>
7800            </td>
7801          </tr>
7802
7803
7804          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7805           <!-- end of entry -->
7806        
7807                
7808          <tr class="entry" id="dynamic_android.control.effectMode">
7809            <td class="entry_name
7810             " rowspan="3">
7811              android.<wbr/>control.<wbr/>effect<wbr/>Mode
7812            </td>
7813            <td class="entry_type">
7814                <span class="entry_type_name entry_type_name_enum">byte</span>
7815
7816              <span class="entry_type_visibility"> [public]</span>
7817
7818
7819              <span class="entry_type_hwlevel">[legacy] </span>
7820
7821
7822
7823                <ul class="entry_type_enum">
7824                  <li>
7825                    <span class="entry_type_enum_name">OFF</span>
7826                    <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
7827                  </li>
7828                  <li>
7829                    <span class="entry_type_enum_name">MONO</span>
7830                    <span class="entry_type_enum_optional">[optional]</span>
7831                    <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
7832a single color.<wbr/></p>
7833<p>This will typically be grayscale.<wbr/></p></span>
7834                  </li>
7835                  <li>
7836                    <span class="entry_type_enum_name">NEGATIVE</span>
7837                    <span class="entry_type_enum_optional">[optional]</span>
7838                    <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
7839are inverted.<wbr/></p></span>
7840                  </li>
7841                  <li>
7842                    <span class="entry_type_enum_name">SOLARIZE</span>
7843                    <span class="entry_type_enum_optional">[optional]</span>
7844                    <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
7845image is wholly or partially reversed in
7846tone.<wbr/></p></span>
7847                  </li>
7848                  <li>
7849                    <span class="entry_type_enum_name">SEPIA</span>
7850                    <span class="entry_type_enum_optional">[optional]</span>
7851                    <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
7852gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
7853                  </li>
7854                  <li>
7855                    <span class="entry_type_enum_name">POSTERIZE</span>
7856                    <span class="entry_type_enum_optional">[optional]</span>
7857                    <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
7858discrete regions of tone rather than a continuous
7859gradient of tones.<wbr/></p></span>
7860                  </li>
7861                  <li>
7862                    <span class="entry_type_enum_name">WHITEBOARD</span>
7863                    <span class="entry_type_enum_optional">[optional]</span>
7864                    <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
7865as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
7866                  </li>
7867                  <li>
7868                    <span class="entry_type_enum_name">BLACKBOARD</span>
7869                    <span class="entry_type_enum_optional">[optional]</span>
7870                    <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
7871as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
7872                  </li>
7873                  <li>
7874                    <span class="entry_type_enum_name">AQUA</span>
7875                    <span class="entry_type_enum_optional">[optional]</span>
7876                    <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
7877                  </li>
7878                </ul>
7879
7880            </td> <!-- entry_type -->
7881
7882            <td class="entry_description">
7883              <p>A special color effect to apply.<wbr/></p>
7884            </td>
7885
7886            <td class="entry_units">
7887            </td>
7888
7889            <td class="entry_range">
7890              <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
7891            </td>
7892
7893            <td class="entry_tags">
7894              <ul class="entry_tags">
7895                  <li><a href="#tag_BC">BC</a></li>
7896              </ul>
7897            </td>
7898
7899          </tr>
7900          <tr class="entries_header">
7901            <th class="th_details" colspan="5">Details</th>
7902          </tr>
7903          <tr class="entry_cont">
7904            <td class="entry_details" colspan="5">
7905              <p>When this mode is set,<wbr/> a color effect will be applied
7906to images produced by the camera device.<wbr/> The interpretation
7907and implementation of these color effects is left to the
7908implementor of the camera device,<wbr/> and should not be
7909depended on to be consistent (or present) across all
7910devices.<wbr/></p>
7911            </td>
7912          </tr>
7913
7914
7915          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7916           <!-- end of entry -->
7917        
7918                
7919          <tr class="entry" id="dynamic_android.control.mode">
7920            <td class="entry_name
7921             " rowspan="3">
7922              android.<wbr/>control.<wbr/>mode
7923            </td>
7924            <td class="entry_type">
7925                <span class="entry_type_name entry_type_name_enum">byte</span>
7926
7927              <span class="entry_type_visibility"> [public]</span>
7928
7929
7930              <span class="entry_type_hwlevel">[legacy] </span>
7931
7932
7933
7934                <ul class="entry_type_enum">
7935                  <li>
7936                    <span class="entry_type_enum_name">OFF</span>
7937                    <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
7938<p>All control by the device's metering and focusing (3A)
7939routines is disabled,<wbr/> and no other settings in
7940android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
7941<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
7942device to select post-processing values for processing
7943blocks that do not allow for manual control,<wbr/> or are not
7944exposed by the camera API.<wbr/></p>
7945<p>However,<wbr/> the camera device's 3A routines may continue to
7946collect statistics and update their internal state so that
7947when control is switched to AUTO mode,<wbr/> good control values
7948can be immediately applied.<wbr/></p></span>
7949                  </li>
7950                  <li>
7951                    <span class="entry_type_enum_name">AUTO</span>
7952                    <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
7953<p>Manual control of capture parameters is disabled.<wbr/> All
7954controls in android.<wbr/>control.<wbr/>* besides sceneMode take
7955effect.<wbr/></p></span>
7956                  </li>
7957                  <li>
7958                    <span class="entry_type_enum_name">USE_SCENE_MODE</span>
7959                    <span class="entry_type_enum_optional">[optional]</span>
7960                    <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
7961<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
7962control.<wbr/>afMode controls; the camera device will ignore
7963those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
7964FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still
7965active.<wbr/>  This setting can only be used if scene mode is
7966supported (i.<wbr/>e.<wbr/> <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
7967contain some modes other than DISABLED).<wbr/></p></span>
7968                  </li>
7969                  <li>
7970                    <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
7971                    <span class="entry_type_enum_optional">[optional]</span>
7972                    <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
7973used by camera device background auto-exposure,<wbr/> auto-white balance and
7974auto-focus algorithms (3A) to update their statistics.<wbr/></p>
7975<p>Specifically,<wbr/> the 3A routines are locked to the last
7976values set from a request with AUTO,<wbr/> OFF,<wbr/> or
7977USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
7978collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
7979discarded by the camera device.<wbr/></p></span>
7980                  </li>
7981                </ul>
7982
7983            </td> <!-- entry_type -->
7984
7985            <td class="entry_description">
7986              <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
7987routines.<wbr/></p>
7988            </td>
7989
7990            <td class="entry_units">
7991            </td>
7992
7993            <td class="entry_range">
7994              <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
7995            </td>
7996
7997            <td class="entry_tags">
7998              <ul class="entry_tags">
7999                  <li><a href="#tag_BC">BC</a></li>
8000              </ul>
8001            </td>
8002
8003          </tr>
8004          <tr class="entries_header">
8005            <th class="th_details" colspan="5">Details</th>
8006          </tr>
8007          <tr class="entry_cont">
8008            <td class="entry_details" colspan="5">
8009              <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
8010by the camera device is disabled.<wbr/> The application must set the fields for
8011capture parameters itself.<wbr/></p>
8012<p>When set to AUTO,<wbr/> the individual algorithm controls in
8013android.<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>
8014<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
8015android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
8016one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
8017as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
8018<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
8019<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
8020is that this frame will not be used by camera device background 3A statistics
8021update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
8022where the application doesn't want a 3A manual control capture to affect
8023the subsequent auto 3A capture results.<wbr/></p>
8024            </td>
8025          </tr>
8026
8027
8028          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8029           <!-- end of entry -->
8030        
8031                
8032          <tr class="entry" id="dynamic_android.control.sceneMode">
8033            <td class="entry_name
8034             " rowspan="5">
8035              android.<wbr/>control.<wbr/>scene<wbr/>Mode
8036            </td>
8037            <td class="entry_type">
8038                <span class="entry_type_name entry_type_name_enum">byte</span>
8039
8040              <span class="entry_type_visibility"> [public]</span>
8041
8042
8043              <span class="entry_type_hwlevel">[legacy] </span>
8044
8045
8046
8047                <ul class="entry_type_enum">
8048                  <li>
8049                    <span class="entry_type_enum_name">DISABLED</span>
8050                    <span class="entry_type_enum_value">0</span>
8051                    <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
8052                  </li>
8053                  <li>
8054                    <span class="entry_type_enum_name">FACE_PRIORITY</span>
8055                    <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
8056detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
8057auto-exposure routines.<wbr/></p>
8058<p>If face detection statistics are disabled
8059(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/>
8060this should still operate correctly (but will not return
8061face detection statistics to the framework).<wbr/></p>
8062<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8063<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>
8064remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
8065                  </li>
8066                  <li>
8067                    <span class="entry_type_enum_name">ACTION</span>
8068                    <span class="entry_type_enum_optional">[optional]</span>
8069                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
8070<p>Similar to SPORTS.<wbr/></p></span>
8071                  </li>
8072                  <li>
8073                    <span class="entry_type_enum_name">PORTRAIT</span>
8074                    <span class="entry_type_enum_optional">[optional]</span>
8075                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
8076                  </li>
8077                  <li>
8078                    <span class="entry_type_enum_name">LANDSCAPE</span>
8079                    <span class="entry_type_enum_optional">[optional]</span>
8080                    <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
8081                  </li>
8082                  <li>
8083                    <span class="entry_type_enum_name">NIGHT</span>
8084                    <span class="entry_type_enum_optional">[optional]</span>
8085                    <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
8086                  </li>
8087                  <li>
8088                    <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
8089                    <span class="entry_type_enum_optional">[optional]</span>
8090                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
8091settings.<wbr/></p></span>
8092                  </li>
8093                  <li>
8094                    <span class="entry_type_enum_name">THEATRE</span>
8095                    <span class="entry_type_enum_optional">[optional]</span>
8096                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
8097remain off.<wbr/></p></span>
8098                  </li>
8099                  <li>
8100                    <span class="entry_type_enum_name">BEACH</span>
8101                    <span class="entry_type_enum_optional">[optional]</span>
8102                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
8103                  </li>
8104                  <li>
8105                    <span class="entry_type_enum_name">SNOW</span>
8106                    <span class="entry_type_enum_optional">[optional]</span>
8107                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
8108                  </li>
8109                  <li>
8110                    <span class="entry_type_enum_name">SUNSET</span>
8111                    <span class="entry_type_enum_optional">[optional]</span>
8112                    <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
8113                  </li>
8114                  <li>
8115                    <span class="entry_type_enum_name">STEADYPHOTO</span>
8116                    <span class="entry_type_enum_optional">[optional]</span>
8117                    <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
8118device motion (for example: due to hand shake).<wbr/></p></span>
8119                  </li>
8120                  <li>
8121                    <span class="entry_type_enum_name">FIREWORKS</span>
8122                    <span class="entry_type_enum_optional">[optional]</span>
8123                    <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
8124                  </li>
8125                  <li>
8126                    <span class="entry_type_enum_name">SPORTS</span>
8127                    <span class="entry_type_enum_optional">[optional]</span>
8128                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
8129<p>Similar to ACTION.<wbr/></p></span>
8130                  </li>
8131                  <li>
8132                    <span class="entry_type_enum_name">PARTY</span>
8133                    <span class="entry_type_enum_optional">[optional]</span>
8134                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
8135people.<wbr/></p></span>
8136                  </li>
8137                  <li>
8138                    <span class="entry_type_enum_name">CANDLELIGHT</span>
8139                    <span class="entry_type_enum_optional">[optional]</span>
8140                    <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
8141is a flame.<wbr/></p></span>
8142                  </li>
8143                  <li>
8144                    <span class="entry_type_enum_name">BARCODE</span>
8145                    <span class="entry_type_enum_optional">[optional]</span>
8146                    <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
8147for use by camera applications that wish to read the
8148barcode value.<wbr/></p></span>
8149                  </li>
8150                  <li>
8151                    <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
8152                    <span class="entry_type_enum_optional">[optional]</span>
8153                    <span class="entry_type_enum_notes"><p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
8154<p>The supported high speed video sizes and fps ranges are specified in
8155<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
8156output frame rates,<wbr/> the application is only allowed to select video size
8157and fps range combinations listed in this static metadata.<wbr/> The fps range
8158can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
8159<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
8160ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
8161controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
8162and post-processing parameters is possible.<wbr/> All other controls operate the
8163same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
8164android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
8165<ul>
8166<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
8167<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
8168<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
8169<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
8170<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
8171<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
8172<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
8173<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
8174<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
8175<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
8176</ul>
8177<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
8178<ul>
8179<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>
8180<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
8181<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
8182<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
8183</ul>
8184<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
8185be lower than what camera can output,<wbr/> depending on the destination Surfaces for
8186the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
8187the application need check if the video encoder is capable of supporting the
8188high frame rate for a given video size,<wbr/> or it will end up with lower recording
8189frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
8190rate will be bounded by the screen refresh rate.<wbr/></p>
8191<p>The camera device will only support up to 2 output high speed streams
8192(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
8193in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
8194<ul>
8195<li>The application created no more than maxNumHighSpeedStreams processed non-stalling
8196format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
8197min(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>
8198<li>The stream sizes are selected from the sizes reported by
8199<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
8200<li>No processed non-stalling or raw streams are configured.<wbr/></li>
8201</ul>
8202<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
8203<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/>
8204the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
8205and the returned capture result metadata will give the fps range choosen
8206by the camera device.<wbr/></p>
8207<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
8208reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
8209the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
8210                  </li>
8211                  <li>
8212                    <span class="entry_type_enum_name">HDR</span>
8213                    <span class="entry_type_enum_optional">[optional]</span>
8214                    <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
8215<p>In this scene mode,<wbr/> the camera device captures images
8216that keep a larger range of scene illumination levels
8217visible in the final image.<wbr/> For example,<wbr/> when taking a
8218picture of a object in front of a bright window,<wbr/> both
8219the object and the scene through the window may be
8220visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
8221one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
8222HDR mode generally takes much longer to capture a single
8223image,<wbr/> has no user control,<wbr/> and may have other artifacts
8224depending on the HDR method used.<wbr/></p>
8225<p>Therefore,<wbr/> HDR captures operate at a much slower rate
8226than regular captures.<wbr/></p>
8227<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
8228is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
8229STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
8230using a high dynamic range capture technique.<wbr/>  On LEGACY
8231devices,<wbr/> captures that target a JPEG-format output will
8232be captured with HDR,<wbr/> and the capture intent is not
8233relevant.<wbr/></p>
8234<p>The HDR capture may involve the device capturing a burst
8235of images internally and combining them into one,<wbr/> or it
8236may involve the device using specialized high dynamic
8237range capture hardware.<wbr/> In all cases,<wbr/> a single image is
8238produced in response to a capture request submitted
8239while in HDR mode.<wbr/></p>
8240<p>Since substantial post-processing is generally needed to
8241produce an HDR image,<wbr/> only YUV and JPEG outputs are
8242supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only
8243JPEG outputs are supported for LEGACY HDR
8244captures.<wbr/> Using a RAW output for HDR capture is not
8245supported.<wbr/></p></span>
8246                  </li>
8247                </ul>
8248
8249            </td> <!-- entry_type -->
8250
8251            <td class="entry_description">
8252              <p>Control for which scene mode is currently active.<wbr/></p>
8253            </td>
8254
8255            <td class="entry_units">
8256            </td>
8257
8258            <td class="entry_range">
8259              <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
8260            </td>
8261
8262            <td class="entry_tags">
8263              <ul class="entry_tags">
8264                  <li><a href="#tag_BC">BC</a></li>
8265              </ul>
8266            </td>
8267
8268          </tr>
8269          <tr class="entries_header">
8270            <th class="th_details" colspan="5">Details</th>
8271          </tr>
8272          <tr class="entry_cont">
8273            <td class="entry_details" colspan="5">
8274              <p>Scene modes are custom camera modes optimized for a certain set of conditions and
8275capture settings.<wbr/></p>
8276<p>This is the mode that that is active when
8277<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/>
8278these modes will disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8279<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> while in use.<wbr/></p>
8280<p>The interpretation and implementation of these scene modes is left
8281to the implementor of the camera device.<wbr/> Their behavior will not be
8282consistent across all devices,<wbr/> and any given device may only implement
8283a subset of these modes.<wbr/></p>
8284            </td>
8285          </tr>
8286
8287          <tr class="entries_header">
8288            <th class="th_details" colspan="5">HAL Implementation Details</th>
8289          </tr>
8290          <tr class="entry_cont">
8291            <td class="entry_details" colspan="5">
8292              <p>HAL implementations that include scene modes are expected to provide
8293the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8294<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
8295<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
8296<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/>
8297the HAL must list supported video size and fps range in
8298<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/>
82991280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming
8300mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture
8301requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/></p>
8302            </td>
8303          </tr>
8304
8305          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8306           <!-- end of entry -->
8307        
8308                
8309          <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
8310            <td class="entry_name
8311             " rowspan="3">
8312              android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
8313            </td>
8314            <td class="entry_type">
8315                <span class="entry_type_name entry_type_name_enum">byte</span>
8316
8317              <span class="entry_type_visibility"> [public]</span>
8318
8319
8320              <span class="entry_type_hwlevel">[legacy] </span>
8321
8322
8323
8324                <ul class="entry_type_enum">
8325                  <li>
8326                    <span class="entry_type_enum_name">OFF</span>
8327                    <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
8328                  </li>
8329                  <li>
8330                    <span class="entry_type_enum_name">ON</span>
8331                    <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
8332                  </li>
8333                </ul>
8334
8335            </td> <!-- entry_type -->
8336
8337            <td class="entry_description">
8338              <p>Whether video stabilization is
8339active.<wbr/></p>
8340            </td>
8341
8342            <td class="entry_units">
8343            </td>
8344
8345            <td class="entry_range">
8346            </td>
8347
8348            <td class="entry_tags">
8349              <ul class="entry_tags">
8350                  <li><a href="#tag_BC">BC</a></li>
8351              </ul>
8352            </td>
8353
8354          </tr>
8355          <tr class="entries_header">
8356            <th class="th_details" colspan="5">Details</th>
8357          </tr>
8358          <tr class="entry_cont">
8359            <td class="entry_details" colspan="5">
8360              <p>Video stabilization automatically translates and scales images from
8361the camera in order to stabilize motion between consecutive frames.<wbr/></p>
8362<p>If enabled,<wbr/> video stabilization can modify the
8363<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
8364<p>Switching between different video stabilization modes may take several
8365frames to initialize,<wbr/> the camera device will report the current mode
8366in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
8367the video stabilization modes in the first several capture results may
8368still be "OFF",<wbr/> and it will become "ON" when the initialization is
8369done.<wbr/></p>
8370<p>If a camera device supports both this mode and OIS
8371(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
8372produce undesirable interaction,<wbr/> so it is recommended not to enable
8373both at the same time.<wbr/></p>
8374            </td>
8375          </tr>
8376
8377
8378          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8379           <!-- end of entry -->
8380        
8381        
8382
8383      <!-- end of kind -->
8384      </tbody>
8385
8386  <!-- end of section -->
8387  <tr><td colspan="6" id="section_demosaic" class="section">demosaic</td></tr>
8388
8389
8390      <tr><td colspan="6" class="kind">controls</td></tr>
8391
8392      <thead class="entries_header">
8393        <tr>
8394          <th class="th_name">Property Name</th>
8395          <th class="th_type">Type</th>
8396          <th class="th_description">Description</th>
8397          <th class="th_units">Units</th>
8398          <th class="th_range">Range</th>
8399          <th class="th_tags">Tags</th>
8400        </tr>
8401      </thead>
8402
8403      <tbody>
8404
8405        
8406
8407        
8408
8409        
8410
8411        
8412
8413                
8414          <tr class="entry" id="controls_android.demosaic.mode">
8415            <td class="entry_name
8416             " rowspan="1">
8417              android.<wbr/>demosaic.<wbr/>mode
8418            </td>
8419            <td class="entry_type">
8420                <span class="entry_type_name entry_type_name_enum">byte</span>
8421
8422              <span class="entry_type_visibility"> [system]</span>
8423
8424
8425
8426
8427
8428                <ul class="entry_type_enum">
8429                  <li>
8430                    <span class="entry_type_enum_name">FAST</span>
8431                    <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
8432Bayer RAW output.<wbr/></p></span>
8433                  </li>
8434                  <li>
8435                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
8436                    <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down
8437relative to raw output.<wbr/></p></span>
8438                  </li>
8439                </ul>
8440
8441            </td> <!-- entry_type -->
8442
8443            <td class="entry_description">
8444              <p>Controls the quality of the demosaicing
8445processing.<wbr/></p>
8446            </td>
8447
8448            <td class="entry_units">
8449            </td>
8450
8451            <td class="entry_range">
8452            </td>
8453
8454            <td class="entry_tags">
8455              <ul class="entry_tags">
8456                  <li><a href="#tag_FUTURE">FUTURE</a></li>
8457              </ul>
8458            </td>
8459
8460          </tr>
8461
8462
8463          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8464           <!-- end of entry -->
8465        
8466        
8467
8468      <!-- end of kind -->
8469      </tbody>
8470
8471  <!-- end of section -->
8472  <tr><td colspan="6" id="section_edge" class="section">edge</td></tr>
8473
8474
8475      <tr><td colspan="6" class="kind">controls</td></tr>
8476
8477      <thead class="entries_header">
8478        <tr>
8479          <th class="th_name">Property Name</th>
8480          <th class="th_type">Type</th>
8481          <th class="th_description">Description</th>
8482          <th class="th_units">Units</th>
8483          <th class="th_range">Range</th>
8484          <th class="th_tags">Tags</th>
8485        </tr>
8486      </thead>
8487
8488      <tbody>
8489
8490        
8491
8492        
8493
8494        
8495
8496        
8497
8498                
8499          <tr class="entry" id="controls_android.edge.mode">
8500            <td class="entry_name
8501             " rowspan="5">
8502              android.<wbr/>edge.<wbr/>mode
8503            </td>
8504            <td class="entry_type">
8505                <span class="entry_type_name entry_type_name_enum">byte</span>
8506
8507              <span class="entry_type_visibility"> [public]</span>
8508
8509
8510              <span class="entry_type_hwlevel">[full] </span>
8511
8512
8513
8514                <ul class="entry_type_enum">
8515                  <li>
8516                    <span class="entry_type_enum_name">OFF</span>
8517                    <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
8518                  </li>
8519                  <li>
8520                    <span class="entry_type_enum_name">FAST</span>
8521                    <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate relative to sensor
8522output</p></span>
8523                  </li>
8524                  <li>
8525                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
8526                    <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>
8527                  </li>
8528                </ul>
8529
8530            </td> <!-- entry_type -->
8531
8532            <td class="entry_description">
8533              <p>Operation mode for edge
8534enhancement.<wbr/></p>
8535            </td>
8536
8537            <td class="entry_units">
8538            </td>
8539
8540            <td class="entry_range">
8541              <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
8542            </td>
8543
8544            <td class="entry_tags">
8545              <ul class="entry_tags">
8546                  <li><a href="#tag_V1">V1</a></li>
8547              </ul>
8548            </td>
8549
8550          </tr>
8551          <tr class="entries_header">
8552            <th class="th_details" colspan="5">Details</th>
8553          </tr>
8554          <tr class="entry_cont">
8555            <td class="entry_details" colspan="5">
8556              <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
8557no enhancement will be applied by the camera device.<wbr/></p>
8558<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
8559will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
8560camera device will use the highest-quality enhancement algorithms,<wbr/>
8561even if it slows down capture rate.<wbr/> FAST means the camera device will
8562not slow down capture rate when applying edge enhancement.<wbr/></p>
8563<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
8564device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
8565The camera device may adjust its internal noise reduction parameters for best
8566image 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>
8567            </td>
8568          </tr>
8569
8570          <tr class="entries_header">
8571            <th class="th_details" colspan="5">HAL Implementation Details</th>
8572          </tr>
8573          <tr class="entry_cont">
8574            <td class="entry_details" colspan="5">
8575              <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
8576adjust the internal edge enhancement reduction parameters appropriately to get the best
8577quality images.<wbr/></p>
8578            </td>
8579          </tr>
8580
8581          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8582           <!-- end of entry -->
8583        
8584                
8585          <tr class="entry" id="controls_android.edge.strength">
8586            <td class="entry_name
8587             " rowspan="1">
8588              android.<wbr/>edge.<wbr/>strength
8589            </td>
8590            <td class="entry_type">
8591                <span class="entry_type_name">byte</span>
8592
8593              <span class="entry_type_visibility"> [system]</span>
8594
8595
8596
8597
8598
8599
8600            </td> <!-- entry_type -->
8601
8602            <td class="entry_description">
8603              <p>Control the amount of edge enhancement
8604applied to the images</p>
8605            </td>
8606
8607            <td class="entry_units">
8608              1-10; 10 is maximum sharpening
8609            </td>
8610
8611            <td class="entry_range">
8612            </td>
8613
8614            <td class="entry_tags">
8615              <ul class="entry_tags">
8616                  <li><a href="#tag_FUTURE">FUTURE</a></li>
8617              </ul>
8618            </td>
8619
8620          </tr>
8621
8622
8623          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8624           <!-- end of entry -->
8625        
8626        
8627
8628      <!-- end of kind -->
8629      </tbody>
8630      <tr><td colspan="6" class="kind">static</td></tr>
8631
8632      <thead class="entries_header">
8633        <tr>
8634          <th class="th_name">Property Name</th>
8635          <th class="th_type">Type</th>
8636          <th class="th_description">Description</th>
8637          <th class="th_units">Units</th>
8638          <th class="th_range">Range</th>
8639          <th class="th_tags">Tags</th>
8640        </tr>
8641      </thead>
8642
8643      <tbody>
8644
8645        
8646
8647        
8648
8649        
8650
8651        
8652
8653                
8654          <tr class="entry" id="static_android.edge.availableEdgeModes">
8655            <td class="entry_name
8656             " rowspan="5">
8657              android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
8658            </td>
8659            <td class="entry_type">
8660                <span class="entry_type_name">byte</span>
8661                <span class="entry_type_container">x</span>
8662
8663                <span class="entry_type_array">
8664                  n
8665                </span>
8666              <span class="entry_type_visibility"> [public as enumList]</span>
8667
8668
8669              <span class="entry_type_hwlevel">[full] </span>
8670
8671
8672                <div class="entry_type_notes">list of enums</div>
8673
8674
8675            </td> <!-- entry_type -->
8676
8677            <td class="entry_description">
8678              <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
8679device.<wbr/></p>
8680            </td>
8681
8682            <td class="entry_units">
8683            </td>
8684
8685            <td class="entry_range">
8686              <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
8687            </td>
8688
8689            <td class="entry_tags">
8690              <ul class="entry_tags">
8691                  <li><a href="#tag_V1">V1</a></li>
8692              </ul>
8693            </td>
8694
8695          </tr>
8696          <tr class="entries_header">
8697            <th class="th_details" colspan="5">Details</th>
8698          </tr>
8699          <tr class="entry_cont">
8700            <td class="entry_details" colspan="5">
8701              <p>Full-capability camera devices must always support OFF; all devices will list FAST.<wbr/></p>
8702            </td>
8703          </tr>
8704
8705          <tr class="entries_header">
8706            <th class="th_details" colspan="5">HAL Implementation Details</th>
8707          </tr>
8708          <tr class="entry_cont">
8709            <td class="entry_details" colspan="5">
8710              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available
8711on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
8712That is,<wbr/> if the highest quality implementation on the camera device does not slow down
8713capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
8714            </td>
8715          </tr>
8716
8717          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8718           <!-- end of entry -->
8719        
8720        
8721
8722      <!-- end of kind -->
8723      </tbody>
8724      <tr><td colspan="6" class="kind">dynamic</td></tr>
8725
8726      <thead class="entries_header">
8727        <tr>
8728          <th class="th_name">Property Name</th>
8729          <th class="th_type">Type</th>
8730          <th class="th_description">Description</th>
8731          <th class="th_units">Units</th>
8732          <th class="th_range">Range</th>
8733          <th class="th_tags">Tags</th>
8734        </tr>
8735      </thead>
8736
8737      <tbody>
8738
8739        
8740
8741        
8742
8743        
8744
8745        
8746
8747                
8748          <tr class="entry" id="dynamic_android.edge.mode">
8749            <td class="entry_name
8750             " rowspan="5">
8751              android.<wbr/>edge.<wbr/>mode
8752            </td>
8753            <td class="entry_type">
8754                <span class="entry_type_name entry_type_name_enum">byte</span>
8755
8756              <span class="entry_type_visibility"> [public]</span>
8757
8758
8759              <span class="entry_type_hwlevel">[full] </span>
8760
8761
8762
8763                <ul class="entry_type_enum">
8764                  <li>
8765                    <span class="entry_type_enum_name">OFF</span>
8766                    <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
8767                  </li>
8768                  <li>
8769                    <span class="entry_type_enum_name">FAST</span>
8770                    <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate relative to sensor
8771output</p></span>
8772                  </li>
8773                  <li>
8774                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
8775                    <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>
8776                  </li>
8777                </ul>
8778
8779            </td> <!-- entry_type -->
8780
8781            <td class="entry_description">
8782              <p>Operation mode for edge
8783enhancement.<wbr/></p>
8784            </td>
8785
8786            <td class="entry_units">
8787            </td>
8788
8789            <td class="entry_range">
8790              <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
8791            </td>
8792
8793            <td class="entry_tags">
8794              <ul class="entry_tags">
8795                  <li><a href="#tag_V1">V1</a></li>
8796              </ul>
8797            </td>
8798
8799          </tr>
8800          <tr class="entries_header">
8801            <th class="th_details" colspan="5">Details</th>
8802          </tr>
8803          <tr class="entry_cont">
8804            <td class="entry_details" colspan="5">
8805              <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
8806no enhancement will be applied by the camera device.<wbr/></p>
8807<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
8808will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
8809camera device will use the highest-quality enhancement algorithms,<wbr/>
8810even if it slows down capture rate.<wbr/> FAST means the camera device will
8811not slow down capture rate when applying edge enhancement.<wbr/></p>
8812<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
8813device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
8814The camera device may adjust its internal noise reduction parameters for best
8815image 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>
8816            </td>
8817          </tr>
8818
8819          <tr class="entries_header">
8820            <th class="th_details" colspan="5">HAL Implementation Details</th>
8821          </tr>
8822          <tr class="entry_cont">
8823            <td class="entry_details" colspan="5">
8824              <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
8825adjust the internal edge enhancement reduction parameters appropriately to get the best
8826quality images.<wbr/></p>
8827            </td>
8828          </tr>
8829
8830          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8831           <!-- end of entry -->
8832        
8833        
8834
8835      <!-- end of kind -->
8836      </tbody>
8837
8838  <!-- end of section -->
8839  <tr><td colspan="6" id="section_flash" class="section">flash</td></tr>
8840
8841
8842      <tr><td colspan="6" class="kind">controls</td></tr>
8843
8844      <thead class="entries_header">
8845        <tr>
8846          <th class="th_name">Property Name</th>
8847          <th class="th_type">Type</th>
8848          <th class="th_description">Description</th>
8849          <th class="th_units">Units</th>
8850          <th class="th_range">Range</th>
8851          <th class="th_tags">Tags</th>
8852        </tr>
8853      </thead>
8854
8855      <tbody>
8856
8857        
8858
8859        
8860
8861        
8862
8863        
8864
8865                
8866          <tr class="entry" id="controls_android.flash.firingPower">
8867            <td class="entry_name
8868             " rowspan="3">
8869              android.<wbr/>flash.<wbr/>firing<wbr/>Power
8870            </td>
8871            <td class="entry_type">
8872                <span class="entry_type_name">byte</span>
8873
8874              <span class="entry_type_visibility"> [system]</span>
8875
8876
8877
8878
8879
8880
8881            </td> <!-- entry_type -->
8882
8883            <td class="entry_description">
8884              <p>Power for flash firing/<wbr/>torch</p>
8885            </td>
8886
8887            <td class="entry_units">
8888              10 is max power; 0 is no flash.<wbr/> Linear
8889            </td>
8890
8891            <td class="entry_range">
8892              <p>0 - 10</p>
8893            </td>
8894
8895            <td class="entry_tags">
8896              <ul class="entry_tags">
8897                  <li><a href="#tag_FUTURE">FUTURE</a></li>
8898              </ul>
8899            </td>
8900
8901          </tr>
8902          <tr class="entries_header">
8903            <th class="th_details" colspan="5">Details</th>
8904          </tr>
8905          <tr class="entry_cont">
8906            <td class="entry_details" colspan="5">
8907              <p>Power for snapshot may use a different scale than
8908for torch mode.<wbr/> Only one entry for torch mode will be
8909used</p>
8910            </td>
8911          </tr>
8912
8913
8914          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8915           <!-- end of entry -->
8916        
8917                
8918          <tr class="entry" id="controls_android.flash.firingTime">
8919            <td class="entry_name
8920             " rowspan="3">
8921              android.<wbr/>flash.<wbr/>firing<wbr/>Time
8922            </td>
8923            <td class="entry_type">
8924                <span class="entry_type_name">int64</span>
8925
8926              <span class="entry_type_visibility"> [system]</span>
8927
8928
8929
8930
8931
8932
8933            </td> <!-- entry_type -->
8934
8935            <td class="entry_description">
8936              <p>Firing time of flash relative to start of
8937exposure</p>
8938            </td>
8939
8940            <td class="entry_units">
8941              nanoseconds
8942            </td>
8943
8944            <td class="entry_range">
8945              <p>0-(exposure time-flash duration)</p>
8946            </td>
8947
8948            <td class="entry_tags">
8949              <ul class="entry_tags">
8950                  <li><a href="#tag_FUTURE">FUTURE</a></li>
8951              </ul>
8952            </td>
8953
8954          </tr>
8955          <tr class="entries_header">
8956            <th class="th_details" colspan="5">Details</th>
8957          </tr>
8958          <tr class="entry_cont">
8959            <td class="entry_details" colspan="5">
8960              <p>Clamped to (0,<wbr/> exposure time - flash
8961duration).<wbr/></p>
8962            </td>
8963          </tr>
8964
8965
8966          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8967           <!-- end of entry -->
8968        
8969                
8970          <tr class="entry" id="controls_android.flash.mode">
8971            <td class="entry_name
8972             " rowspan="3">
8973              android.<wbr/>flash.<wbr/>mode
8974            </td>
8975            <td class="entry_type">
8976                <span class="entry_type_name entry_type_name_enum">byte</span>
8977
8978              <span class="entry_type_visibility"> [public]</span>
8979
8980
8981              <span class="entry_type_hwlevel">[legacy] </span>
8982
8983
8984
8985                <ul class="entry_type_enum">
8986                  <li>
8987                    <span class="entry_type_enum_name">OFF</span>
8988                    <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
8989                  </li>
8990                  <li>
8991                    <span class="entry_type_enum_name">SINGLE</span>
8992                    <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
8993for this capture.<wbr/></p></span>
8994                  </li>
8995                  <li>
8996                    <span class="entry_type_enum_name">TORCH</span>
8997                    <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
8998                  </li>
8999                </ul>
9000
9001            </td> <!-- entry_type -->
9002
9003            <td class="entry_description">
9004              <p>The desired mode for for the camera device's flash control.<wbr/></p>
9005            </td>
9006
9007            <td class="entry_units">
9008            </td>
9009
9010            <td class="entry_range">
9011            </td>
9012
9013            <td class="entry_tags">
9014              <ul class="entry_tags">
9015                  <li><a href="#tag_BC">BC</a></li>
9016              </ul>
9017            </td>
9018
9019          </tr>
9020          <tr class="entries_header">
9021            <th class="th_details" colspan="5">Details</th>
9022          </tr>
9023          <tr class="entry_cont">
9024            <td class="entry_details" colspan="5">
9025              <p>This control is only effective when flash unit is available
9026(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
9027<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/>
9028Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
9029ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
9030<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
9031<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
9032device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
9033control should be used along with auto-exposure (AE) precapture metering sequence
9034(<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>
9035<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
9036for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
9037<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>
9038            </td>
9039          </tr>
9040
9041
9042          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9043           <!-- end of entry -->
9044        
9045        
9046
9047      <!-- end of kind -->
9048      </tbody>
9049      <tr><td colspan="6" class="kind">static</td></tr>
9050
9051      <thead class="entries_header">
9052        <tr>
9053          <th class="th_name">Property Name</th>
9054          <th class="th_type">Type</th>
9055          <th class="th_description">Description</th>
9056          <th class="th_units">Units</th>
9057          <th class="th_range">Range</th>
9058          <th class="th_tags">Tags</th>
9059        </tr>
9060      </thead>
9061
9062      <tbody>
9063
9064        
9065
9066        
9067
9068        
9069
9070        
9071                
9072            
9073
9074                
9075          <tr class="entry" id="static_android.flash.info.available">
9076            <td class="entry_name
9077             " rowspan="3">
9078              android.<wbr/>flash.<wbr/>info.<wbr/>available
9079            </td>
9080            <td class="entry_type">
9081                <span class="entry_type_name entry_type_name_enum">byte</span>
9082
9083              <span class="entry_type_visibility"> [public as boolean]</span>
9084
9085
9086              <span class="entry_type_hwlevel">[legacy] </span>
9087
9088
9089
9090                <ul class="entry_type_enum">
9091                  <li>
9092                    <span class="entry_type_enum_name">FALSE</span>
9093                  </li>
9094                  <li>
9095                    <span class="entry_type_enum_name">TRUE</span>
9096                  </li>
9097                </ul>
9098
9099            </td> <!-- entry_type -->
9100
9101            <td class="entry_description">
9102              <p>Whether this camera device has a
9103flash unit.<wbr/></p>
9104            </td>
9105
9106            <td class="entry_units">
9107            </td>
9108
9109            <td class="entry_range">
9110            </td>
9111
9112            <td class="entry_tags">
9113              <ul class="entry_tags">
9114                  <li><a href="#tag_BC">BC</a></li>
9115              </ul>
9116            </td>
9117
9118          </tr>
9119          <tr class="entries_header">
9120            <th class="th_details" colspan="5">Details</th>
9121          </tr>
9122          <tr class="entry_cont">
9123            <td class="entry_details" colspan="5">
9124              <p>Will be <code>false</code> if no flash is available.<wbr/></p>
9125<p>If there is no flash unit,<wbr/> none of the flash controls do
9126anything.<wbr/></p>
9127            </td>
9128          </tr>
9129
9130
9131          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9132           <!-- end of entry -->
9133        
9134                
9135          <tr class="entry" id="static_android.flash.info.chargeDuration">
9136            <td class="entry_name
9137             " rowspan="3">
9138              android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
9139            </td>
9140            <td class="entry_type">
9141                <span class="entry_type_name">int64</span>
9142
9143              <span class="entry_type_visibility"> [system]</span>
9144
9145
9146
9147
9148
9149
9150            </td> <!-- entry_type -->
9151
9152            <td class="entry_description">
9153              <p>Time taken before flash can fire
9154again</p>
9155            </td>
9156
9157            <td class="entry_units">
9158              nanoseconds
9159            </td>
9160
9161            <td class="entry_range">
9162              <p>0-1e9</p>
9163            </td>
9164
9165            <td class="entry_tags">
9166              <ul class="entry_tags">
9167                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9168              </ul>
9169            </td>
9170
9171          </tr>
9172          <tr class="entries_header">
9173            <th class="th_details" colspan="5">Details</th>
9174          </tr>
9175          <tr class="entry_cont">
9176            <td class="entry_details" colspan="5">
9177              <p>1 second too long/<wbr/>too short for recharge? Should
9178this be power-dependent?</p>
9179            </td>
9180          </tr>
9181
9182
9183          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9184           <!-- end of entry -->
9185        
9186        
9187        
9188
9189                
9190          <tr class="entry" id="static_android.flash.colorTemperature">
9191            <td class="entry_name
9192             " rowspan="1">
9193              android.<wbr/>flash.<wbr/>color<wbr/>Temperature
9194            </td>
9195            <td class="entry_type">
9196                <span class="entry_type_name">byte</span>
9197
9198              <span class="entry_type_visibility"> [system]</span>
9199
9200
9201
9202
9203
9204
9205            </td> <!-- entry_type -->
9206
9207            <td class="entry_description">
9208              <p>The x,<wbr/>y whitepoint of the
9209flash</p>
9210            </td>
9211
9212            <td class="entry_units">
9213              pair of floats
9214            </td>
9215
9216            <td class="entry_range">
9217              <p>0-1 for both</p>
9218            </td>
9219
9220            <td class="entry_tags">
9221              <ul class="entry_tags">
9222                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9223              </ul>
9224            </td>
9225
9226          </tr>
9227
9228
9229          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9230           <!-- end of entry -->
9231        
9232                
9233          <tr class="entry" id="static_android.flash.maxEnergy">
9234            <td class="entry_name
9235             " rowspan="1">
9236              android.<wbr/>flash.<wbr/>max<wbr/>Energy
9237            </td>
9238            <td class="entry_type">
9239                <span class="entry_type_name">byte</span>
9240
9241              <span class="entry_type_visibility"> [system]</span>
9242
9243
9244
9245
9246
9247
9248            </td> <!-- entry_type -->
9249
9250            <td class="entry_description">
9251              <p>Max energy output of the flash for a full
9252power single flash</p>
9253            </td>
9254
9255            <td class="entry_units">
9256              lumen-seconds
9257            </td>
9258
9259            <td class="entry_range">
9260              <p>&gt;= 0</p>
9261            </td>
9262
9263            <td class="entry_tags">
9264              <ul class="entry_tags">
9265                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9266              </ul>
9267            </td>
9268
9269          </tr>
9270
9271
9272          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9273           <!-- end of entry -->
9274        
9275        
9276
9277      <!-- end of kind -->
9278      </tbody>
9279      <tr><td colspan="6" class="kind">dynamic</td></tr>
9280
9281      <thead class="entries_header">
9282        <tr>
9283          <th class="th_name">Property Name</th>
9284          <th class="th_type">Type</th>
9285          <th class="th_description">Description</th>
9286          <th class="th_units">Units</th>
9287          <th class="th_range">Range</th>
9288          <th class="th_tags">Tags</th>
9289        </tr>
9290      </thead>
9291
9292      <tbody>
9293
9294        
9295
9296        
9297
9298        
9299
9300        
9301
9302                
9303          <tr class="entry" id="dynamic_android.flash.firingPower">
9304            <td class="entry_name
9305             " rowspan="3">
9306              android.<wbr/>flash.<wbr/>firing<wbr/>Power
9307            </td>
9308            <td class="entry_type">
9309                <span class="entry_type_name">byte</span>
9310
9311              <span class="entry_type_visibility"> [system]</span>
9312
9313
9314
9315
9316
9317
9318            </td> <!-- entry_type -->
9319
9320            <td class="entry_description">
9321              <p>Power for flash firing/<wbr/>torch</p>
9322            </td>
9323
9324            <td class="entry_units">
9325              10 is max power; 0 is no flash.<wbr/> Linear
9326            </td>
9327
9328            <td class="entry_range">
9329              <p>0 - 10</p>
9330            </td>
9331
9332            <td class="entry_tags">
9333              <ul class="entry_tags">
9334                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9335              </ul>
9336            </td>
9337
9338          </tr>
9339          <tr class="entries_header">
9340            <th class="th_details" colspan="5">Details</th>
9341          </tr>
9342          <tr class="entry_cont">
9343            <td class="entry_details" colspan="5">
9344              <p>Power for snapshot may use a different scale than
9345for torch mode.<wbr/> Only one entry for torch mode will be
9346used</p>
9347            </td>
9348          </tr>
9349
9350
9351          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9352           <!-- end of entry -->
9353        
9354                
9355          <tr class="entry" id="dynamic_android.flash.firingTime">
9356            <td class="entry_name
9357             " rowspan="3">
9358              android.<wbr/>flash.<wbr/>firing<wbr/>Time
9359            </td>
9360            <td class="entry_type">
9361                <span class="entry_type_name">int64</span>
9362
9363              <span class="entry_type_visibility"> [system]</span>
9364
9365
9366
9367
9368
9369
9370            </td> <!-- entry_type -->
9371
9372            <td class="entry_description">
9373              <p>Firing time of flash relative to start of
9374exposure</p>
9375            </td>
9376
9377            <td class="entry_units">
9378              nanoseconds
9379            </td>
9380
9381            <td class="entry_range">
9382              <p>0-(exposure time-flash duration)</p>
9383            </td>
9384
9385            <td class="entry_tags">
9386              <ul class="entry_tags">
9387                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9388              </ul>
9389            </td>
9390
9391          </tr>
9392          <tr class="entries_header">
9393            <th class="th_details" colspan="5">Details</th>
9394          </tr>
9395          <tr class="entry_cont">
9396            <td class="entry_details" colspan="5">
9397              <p>Clamped to (0,<wbr/> exposure time - flash
9398duration).<wbr/></p>
9399            </td>
9400          </tr>
9401
9402
9403          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9404           <!-- end of entry -->
9405        
9406                
9407          <tr class="entry" id="dynamic_android.flash.mode">
9408            <td class="entry_name
9409             " rowspan="3">
9410              android.<wbr/>flash.<wbr/>mode
9411            </td>
9412            <td class="entry_type">
9413                <span class="entry_type_name entry_type_name_enum">byte</span>
9414
9415              <span class="entry_type_visibility"> [public]</span>
9416
9417
9418              <span class="entry_type_hwlevel">[legacy] </span>
9419
9420
9421
9422                <ul class="entry_type_enum">
9423                  <li>
9424                    <span class="entry_type_enum_name">OFF</span>
9425                    <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
9426                  </li>
9427                  <li>
9428                    <span class="entry_type_enum_name">SINGLE</span>
9429                    <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
9430for this capture.<wbr/></p></span>
9431                  </li>
9432                  <li>
9433                    <span class="entry_type_enum_name">TORCH</span>
9434                    <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
9435                  </li>
9436                </ul>
9437
9438            </td> <!-- entry_type -->
9439
9440            <td class="entry_description">
9441              <p>The desired mode for for the camera device's flash control.<wbr/></p>
9442            </td>
9443
9444            <td class="entry_units">
9445            </td>
9446
9447            <td class="entry_range">
9448            </td>
9449
9450            <td class="entry_tags">
9451              <ul class="entry_tags">
9452                  <li><a href="#tag_BC">BC</a></li>
9453              </ul>
9454            </td>
9455
9456          </tr>
9457          <tr class="entries_header">
9458            <th class="th_details" colspan="5">Details</th>
9459          </tr>
9460          <tr class="entry_cont">
9461            <td class="entry_details" colspan="5">
9462              <p>This control is only effective when flash unit is available
9463(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
9464<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/>
9465Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
9466ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
9467<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
9468<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
9469device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
9470control should be used along with auto-exposure (AE) precapture metering sequence
9471(<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>
9472<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
9473for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
9474<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>
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          <tr class="entry" id="dynamic_android.flash.state">
9484            <td class="entry_name
9485             " rowspan="3">
9486              android.<wbr/>flash.<wbr/>state
9487            </td>
9488            <td class="entry_type">
9489                <span class="entry_type_name entry_type_name_enum">byte</span>
9490
9491              <span class="entry_type_visibility"> [public]</span>
9492
9493
9494              <span class="entry_type_hwlevel">[limited] </span>
9495
9496
9497
9498                <ul class="entry_type_enum">
9499                  <li>
9500                    <span class="entry_type_enum_name">UNAVAILABLE</span>
9501                    <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
9502                  </li>
9503                  <li>
9504                    <span class="entry_type_enum_name">CHARGING</span>
9505                    <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
9506                  </li>
9507                  <li>
9508                    <span class="entry_type_enum_name">READY</span>
9509                    <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
9510                  </li>
9511                  <li>
9512                    <span class="entry_type_enum_name">FIRED</span>
9513                    <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
9514                  </li>
9515                  <li>
9516                    <span class="entry_type_enum_name">PARTIAL</span>
9517                    <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
9518<p>This is usually due to the next or previous frame having
9519the flash fire,<wbr/> and the flash spilling into this capture
9520due to hardware limitations.<wbr/></p></span>
9521                  </li>
9522                </ul>
9523
9524            </td> <!-- entry_type -->
9525
9526            <td class="entry_description">
9527              <p>Current state of the flash
9528unit.<wbr/></p>
9529            </td>
9530
9531            <td class="entry_units">
9532            </td>
9533
9534            <td class="entry_range">
9535            </td>
9536
9537            <td class="entry_tags">
9538            </td>
9539
9540          </tr>
9541          <tr class="entries_header">
9542            <th class="th_details" colspan="5">Details</th>
9543          </tr>
9544          <tr class="entry_cont">
9545            <td class="entry_details" colspan="5">
9546              <p>When the camera device doesn't have flash unit
9547(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/>
9548Other states indicate the current flash status.<wbr/></p>
9549<p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p>
9550<ul>
9551<li>Flash-less cameras always return UNAVAILABLE.<wbr/></li>
9552<li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH
9553   will always return FIRED.<wbr/></li>
9554<li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH
9555   will always return FIRED.<wbr/></li>
9556</ul>
9557<p>In all other conditions the state will not be available on
9558LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p>
9559            </td>
9560          </tr>
9561
9562
9563          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9564           <!-- end of entry -->
9565        
9566        
9567
9568      <!-- end of kind -->
9569      </tbody>
9570
9571  <!-- end of section -->
9572  <tr><td colspan="6" id="section_hotPixel" class="section">hotPixel</td></tr>
9573
9574
9575      <tr><td colspan="6" class="kind">controls</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="controls_android.hotPixel.mode">
9600            <td class="entry_name
9601             " rowspan="3">
9602              android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
9603            </td>
9604            <td class="entry_type">
9605                <span class="entry_type_name entry_type_name_enum">byte</span>
9606
9607              <span class="entry_type_visibility"> [public]</span>
9608
9609
9610
9611
9612
9613                <ul class="entry_type_enum">
9614                  <li>
9615                    <span class="entry_type_enum_name">OFF</span>
9616                    <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
9617<p>The frame rate must not be reduced relative to sensor raw output
9618for this option.<wbr/></p>
9619<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>
9620                  </li>
9621                  <li>
9622                    <span class="entry_type_enum_name">FAST</span>
9623                    <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
9624rate relative to sensor raw output.<wbr/></p>
9625<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>
9626                  </li>
9627                  <li>
9628                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
9629                    <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
9630of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
9631<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>
9632                  </li>
9633                </ul>
9634
9635            </td> <!-- entry_type -->
9636
9637            <td class="entry_description">
9638              <p>Operational mode for hot pixel correction.<wbr/></p>
9639            </td>
9640
9641            <td class="entry_units">
9642            </td>
9643
9644            <td class="entry_range">
9645              <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
9646            </td>
9647
9648            <td class="entry_tags">
9649              <ul class="entry_tags">
9650                  <li><a href="#tag_V1">V1</a></li>
9651                  <li><a href="#tag_RAW">RAW</a></li>
9652              </ul>
9653            </td>
9654
9655          </tr>
9656          <tr class="entries_header">
9657            <th class="th_details" colspan="5">Details</th>
9658          </tr>
9659          <tr class="entry_cont">
9660            <td class="entry_details" colspan="5">
9661              <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
9662that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
9663are stuck at an arbitrary value or are oversensitive).<wbr/></p>
9664            </td>
9665          </tr>
9666
9667
9668          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9669           <!-- end of entry -->
9670        
9671        
9672
9673      <!-- end of kind -->
9674      </tbody>
9675      <tr><td colspan="6" class="kind">static</td></tr>
9676
9677      <thead class="entries_header">
9678        <tr>
9679          <th class="th_name">Property Name</th>
9680          <th class="th_type">Type</th>
9681          <th class="th_description">Description</th>
9682          <th class="th_units">Units</th>
9683          <th class="th_range">Range</th>
9684          <th class="th_tags">Tags</th>
9685        </tr>
9686      </thead>
9687
9688      <tbody>
9689
9690        
9691
9692        
9693
9694        
9695
9696        
9697
9698                
9699          <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
9700            <td class="entry_name
9701             " rowspan="5">
9702              android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
9703            </td>
9704            <td class="entry_type">
9705                <span class="entry_type_name">byte</span>
9706                <span class="entry_type_container">x</span>
9707
9708                <span class="entry_type_array">
9709                  n
9710                </span>
9711              <span class="entry_type_visibility"> [public as enumList]</span>
9712
9713
9714
9715
9716                <div class="entry_type_notes">list of enums</div>
9717
9718
9719            </td> <!-- entry_type -->
9720
9721            <td class="entry_description">
9722              <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
9723camera device.<wbr/></p>
9724            </td>
9725
9726            <td class="entry_units">
9727            </td>
9728
9729            <td class="entry_range">
9730              <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
9731            </td>
9732
9733            <td class="entry_tags">
9734              <ul class="entry_tags">
9735                  <li><a href="#tag_V1">V1</a></li>
9736                  <li><a href="#tag_RAW">RAW</a></li>
9737              </ul>
9738            </td>
9739
9740          </tr>
9741          <tr class="entries_header">
9742            <th class="th_details" colspan="5">Details</th>
9743          </tr>
9744          <tr class="entry_cont">
9745            <td class="entry_details" colspan="5">
9746              <p>FULL mode camera devices will always support FAST.<wbr/></p>
9747            </td>
9748          </tr>
9749
9750          <tr class="entries_header">
9751            <th class="th_details" colspan="5">HAL Implementation Details</th>
9752          </tr>
9753          <tr class="entry_cont">
9754            <td class="entry_details" colspan="5">
9755              <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
9756pixels than actual pixels on the camera sensor.<wbr/>
9757HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available
9758on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
9759That is,<wbr/> if the highest quality implementation on the camera device does not slow down
9760capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
9761            </td>
9762          </tr>
9763
9764          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9765           <!-- end of entry -->
9766        
9767        
9768
9769      <!-- end of kind -->
9770      </tbody>
9771      <tr><td colspan="6" class="kind">dynamic</td></tr>
9772
9773      <thead class="entries_header">
9774        <tr>
9775          <th class="th_name">Property Name</th>
9776          <th class="th_type">Type</th>
9777          <th class="th_description">Description</th>
9778          <th class="th_units">Units</th>
9779          <th class="th_range">Range</th>
9780          <th class="th_tags">Tags</th>
9781        </tr>
9782      </thead>
9783
9784      <tbody>
9785
9786        
9787
9788        
9789
9790        
9791
9792        
9793
9794                
9795          <tr class="entry" id="dynamic_android.hotPixel.mode">
9796            <td class="entry_name
9797             " rowspan="3">
9798              android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
9799            </td>
9800            <td class="entry_type">
9801                <span class="entry_type_name entry_type_name_enum">byte</span>
9802
9803              <span class="entry_type_visibility"> [public]</span>
9804
9805
9806
9807
9808
9809                <ul class="entry_type_enum">
9810                  <li>
9811                    <span class="entry_type_enum_name">OFF</span>
9812                    <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
9813<p>The frame rate must not be reduced relative to sensor raw output
9814for this option.<wbr/></p>
9815<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>
9816                  </li>
9817                  <li>
9818                    <span class="entry_type_enum_name">FAST</span>
9819                    <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
9820rate relative to sensor raw output.<wbr/></p>
9821<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>
9822                  </li>
9823                  <li>
9824                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
9825                    <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
9826of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
9827<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>
9828                  </li>
9829                </ul>
9830
9831            </td> <!-- entry_type -->
9832
9833            <td class="entry_description">
9834              <p>Operational mode for hot pixel correction.<wbr/></p>
9835            </td>
9836
9837            <td class="entry_units">
9838            </td>
9839
9840            <td class="entry_range">
9841              <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
9842            </td>
9843
9844            <td class="entry_tags">
9845              <ul class="entry_tags">
9846                  <li><a href="#tag_V1">V1</a></li>
9847                  <li><a href="#tag_RAW">RAW</a></li>
9848              </ul>
9849            </td>
9850
9851          </tr>
9852          <tr class="entries_header">
9853            <th class="th_details" colspan="5">Details</th>
9854          </tr>
9855          <tr class="entry_cont">
9856            <td class="entry_details" colspan="5">
9857              <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
9858that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
9859are stuck at an arbitrary value or are oversensitive).<wbr/></p>
9860            </td>
9861          </tr>
9862
9863
9864          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9865           <!-- end of entry -->
9866        
9867        
9868
9869      <!-- end of kind -->
9870      </tbody>
9871
9872  <!-- end of section -->
9873  <tr><td colspan="6" id="section_jpeg" class="section">jpeg</td></tr>
9874
9875
9876      <tr><td colspan="6" class="kind">controls</td></tr>
9877
9878      <thead class="entries_header">
9879        <tr>
9880          <th class="th_name">Property Name</th>
9881          <th class="th_type">Type</th>
9882          <th class="th_description">Description</th>
9883          <th class="th_units">Units</th>
9884          <th class="th_range">Range</th>
9885          <th class="th_tags">Tags</th>
9886        </tr>
9887      </thead>
9888
9889      <tbody>
9890
9891        
9892
9893        
9894
9895        
9896
9897        
9898
9899                
9900          <tr class="entry" id="controls_android.jpeg.gpsLocation">
9901            <td class="entry_name
9902             " rowspan="3">
9903              android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
9904            </td>
9905            <td class="entry_type">
9906                <span class="entry_type_name">byte</span>
9907
9908              <span class="entry_type_visibility"> [public as location]</span>
9909
9910              <span class="entry_type_synthetic">[synthetic] </span>
9911
9912              <span class="entry_type_hwlevel">[legacy] </span>
9913
9914
9915
9916
9917            </td> <!-- entry_type -->
9918
9919            <td class="entry_description">
9920              <p>A location object to use when generating image GPS metadata.<wbr/></p>
9921            </td>
9922
9923            <td class="entry_units">
9924            </td>
9925
9926            <td class="entry_range">
9927            </td>
9928
9929            <td class="entry_tags">
9930            </td>
9931
9932          </tr>
9933          <tr class="entries_header">
9934            <th class="th_details" colspan="5">Details</th>
9935          </tr>
9936          <tr class="entry_cont">
9937            <td class="entry_details" colspan="5">
9938              <p>Setting a location object in a request will include the GPS coordinates of the location
9939into any JPEG images captured based on the request.<wbr/> These coordinates can then be
9940viewed by anyone who receives the JPEG image.<wbr/></p>
9941            </td>
9942          </tr>
9943
9944
9945          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9946           <!-- end of entry -->
9947        
9948                
9949          <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
9950            <td class="entry_name
9951             " rowspan="1">
9952              android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
9953            </td>
9954            <td class="entry_type">
9955                <span class="entry_type_name">double</span>
9956                <span class="entry_type_container">x</span>
9957
9958                <span class="entry_type_array">
9959                  3
9960                </span>
9961              <span class="entry_type_visibility"> [hidden]</span>
9962
9963
9964              <span class="entry_type_hwlevel">[legacy] </span>
9965
9966
9967                <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
9968
9969
9970            </td> <!-- entry_type -->
9971
9972            <td class="entry_description">
9973              <p>GPS coordinates to include in output JPEG
9974EXIF.<wbr/></p>
9975            </td>
9976
9977            <td class="entry_units">
9978            </td>
9979
9980            <td class="entry_range">
9981              <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
9982            </td>
9983
9984            <td class="entry_tags">
9985              <ul class="entry_tags">
9986                  <li><a href="#tag_BC">BC</a></li>
9987              </ul>
9988            </td>
9989
9990          </tr>
9991
9992
9993          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9994           <!-- end of entry -->
9995        
9996                
9997          <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
9998            <td class="entry_name
9999             " rowspan="1">
10000              android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
10001            </td>
10002            <td class="entry_type">
10003                <span class="entry_type_name">byte</span>
10004
10005              <span class="entry_type_visibility"> [hidden as string]</span>
10006
10007
10008              <span class="entry_type_hwlevel">[legacy] </span>
10009
10010
10011
10012
10013            </td> <!-- entry_type -->
10014
10015            <td class="entry_description">
10016              <p>32 characters describing GPS algorithm to
10017include in EXIF.<wbr/></p>
10018            </td>
10019
10020            <td class="entry_units">
10021              UTF-8 null-terminated string
10022            </td>
10023
10024            <td class="entry_range">
10025            </td>
10026
10027            <td class="entry_tags">
10028              <ul class="entry_tags">
10029                  <li><a href="#tag_BC">BC</a></li>
10030              </ul>
10031            </td>
10032
10033          </tr>
10034
10035
10036          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10037           <!-- end of entry -->
10038        
10039                
10040          <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
10041            <td class="entry_name
10042             " rowspan="1">
10043              android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
10044            </td>
10045            <td class="entry_type">
10046                <span class="entry_type_name">int64</span>
10047
10048              <span class="entry_type_visibility"> [hidden]</span>
10049
10050
10051              <span class="entry_type_hwlevel">[legacy] </span>
10052
10053
10054
10055
10056            </td> <!-- entry_type -->
10057
10058            <td class="entry_description">
10059              <p>Time GPS fix was made to include in
10060EXIF.<wbr/></p>
10061            </td>
10062
10063            <td class="entry_units">
10064              UTC in seconds since January 1,<wbr/> 1970
10065            </td>
10066
10067            <td class="entry_range">
10068            </td>
10069
10070            <td class="entry_tags">
10071              <ul class="entry_tags">
10072                  <li><a href="#tag_BC">BC</a></li>
10073              </ul>
10074            </td>
10075
10076          </tr>
10077
10078
10079          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10080           <!-- end of entry -->
10081        
10082                
10083          <tr class="entry" id="controls_android.jpeg.orientation">
10084            <td class="entry_name
10085             " rowspan="3">
10086              android.<wbr/>jpeg.<wbr/>orientation
10087            </td>
10088            <td class="entry_type">
10089                <span class="entry_type_name">int32</span>
10090
10091              <span class="entry_type_visibility"> [public]</span>
10092
10093
10094              <span class="entry_type_hwlevel">[legacy] </span>
10095
10096
10097
10098
10099            </td> <!-- entry_type -->
10100
10101            <td class="entry_description">
10102              <p>The orientation for a JPEG image.<wbr/></p>
10103            </td>
10104
10105            <td class="entry_units">
10106              Degrees in multiples of 90
10107            </td>
10108
10109            <td class="entry_range">
10110              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
10111            </td>
10112
10113            <td class="entry_tags">
10114              <ul class="entry_tags">
10115                  <li><a href="#tag_BC">BC</a></li>
10116              </ul>
10117            </td>
10118
10119          </tr>
10120          <tr class="entries_header">
10121            <th class="th_details" colspan="5">Details</th>
10122          </tr>
10123          <tr class="entry_cont">
10124            <td class="entry_details" colspan="5">
10125              <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
10126to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
10127upright.<wbr/></p>
10128<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
10129rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
10130the thumbnail data will also be rotated.<wbr/></p>
10131<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
10132by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
10133<p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
10134sample code may be used:</p>
10135<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
10136    if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
10137    int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
10138
10139    //<wbr/> Round device orientation to a multiple of 90
10140    deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
10141
10142    //<wbr/> Reverse device orientation for front-facing cameras
10143    boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
10144    if (facingFront) deviceOrientation = -deviceOrientation;
10145
10146    //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
10147    //<wbr/> the image upright relative to the device orientation
10148    int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
10149
10150    return jpegOrientation;
10151}
10152</code></pre>
10153            </td>
10154          </tr>
10155
10156
10157          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10158           <!-- end of entry -->
10159        
10160                
10161          <tr class="entry" id="controls_android.jpeg.quality">
10162            <td class="entry_name
10163             " rowspan="3">
10164              android.<wbr/>jpeg.<wbr/>quality
10165            </td>
10166            <td class="entry_type">
10167                <span class="entry_type_name">byte</span>
10168
10169              <span class="entry_type_visibility"> [public]</span>
10170
10171
10172              <span class="entry_type_hwlevel">[legacy] </span>
10173
10174
10175
10176
10177            </td> <!-- entry_type -->
10178
10179            <td class="entry_description">
10180              <p>Compression quality of the final JPEG
10181image.<wbr/></p>
10182            </td>
10183
10184            <td class="entry_units">
10185            </td>
10186
10187            <td class="entry_range">
10188              <p>1-100; larger is higher quality</p>
10189            </td>
10190
10191            <td class="entry_tags">
10192              <ul class="entry_tags">
10193                  <li><a href="#tag_BC">BC</a></li>
10194              </ul>
10195            </td>
10196
10197          </tr>
10198          <tr class="entries_header">
10199            <th class="th_details" colspan="5">Details</th>
10200          </tr>
10201          <tr class="entry_cont">
10202            <td class="entry_details" colspan="5">
10203              <p>85-95 is typical usage range.<wbr/></p>
10204            </td>
10205          </tr>
10206
10207
10208          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10209           <!-- end of entry -->
10210        
10211                
10212          <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
10213            <td class="entry_name
10214             " rowspan="1">
10215              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
10216            </td>
10217            <td class="entry_type">
10218                <span class="entry_type_name">byte</span>
10219
10220              <span class="entry_type_visibility"> [public]</span>
10221
10222
10223              <span class="entry_type_hwlevel">[legacy] </span>
10224
10225
10226
10227
10228            </td> <!-- entry_type -->
10229
10230            <td class="entry_description">
10231              <p>Compression quality of JPEG
10232thumbnail.<wbr/></p>
10233            </td>
10234
10235            <td class="entry_units">
10236            </td>
10237
10238            <td class="entry_range">
10239              <p>1-100; larger is higher quality</p>
10240            </td>
10241
10242            <td class="entry_tags">
10243              <ul class="entry_tags">
10244                  <li><a href="#tag_BC">BC</a></li>
10245              </ul>
10246            </td>
10247
10248          </tr>
10249
10250
10251          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10252           <!-- end of entry -->
10253        
10254                
10255          <tr class="entry" id="controls_android.jpeg.thumbnailSize">
10256            <td class="entry_name
10257             " rowspan="5">
10258              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
10259            </td>
10260            <td class="entry_type">
10261                <span class="entry_type_name">int32</span>
10262                <span class="entry_type_container">x</span>
10263
10264                <span class="entry_type_array">
10265                  2
10266                </span>
10267              <span class="entry_type_visibility"> [public as size]</span>
10268
10269
10270              <span class="entry_type_hwlevel">[legacy] </span>
10271
10272
10273
10274
10275            </td> <!-- entry_type -->
10276
10277            <td class="entry_description">
10278              <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
10279            </td>
10280
10281            <td class="entry_units">
10282            </td>
10283
10284            <td class="entry_range">
10285              <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
10286            </td>
10287
10288            <td class="entry_tags">
10289              <ul class="entry_tags">
10290                  <li><a href="#tag_BC">BC</a></li>
10291              </ul>
10292            </td>
10293
10294          </tr>
10295          <tr class="entries_header">
10296            <th class="th_details" colspan="5">Details</th>
10297          </tr>
10298          <tr class="entry_cont">
10299            <td class="entry_details" colspan="5">
10300              <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
10301but the captured JPEG will still be a valid image.<wbr/></p>
10302<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
10303should have the same aspect ratio as the main JPEG output.<wbr/></p>
10304<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
10305ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
10306For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
1030716:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
10308generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
10309Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
10310            </td>
10311          </tr>
10312
10313          <tr class="entries_header">
10314            <th class="th_details" colspan="5">HAL Implementation Details</th>
10315          </tr>
10316          <tr class="entry_cont">
10317            <td class="entry_details" colspan="5">
10318              <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
10319The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
10320The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
10321thumbnail image cropping.<wbr/></p>
10322            </td>
10323          </tr>
10324
10325          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10326           <!-- end of entry -->
10327        
10328        
10329
10330      <!-- end of kind -->
10331      </tbody>
10332      <tr><td colspan="6" class="kind">static</td></tr>
10333
10334      <thead class="entries_header">
10335        <tr>
10336          <th class="th_name">Property Name</th>
10337          <th class="th_type">Type</th>
10338          <th class="th_description">Description</th>
10339          <th class="th_units">Units</th>
10340          <th class="th_range">Range</th>
10341          <th class="th_tags">Tags</th>
10342        </tr>
10343      </thead>
10344
10345      <tbody>
10346
10347        
10348
10349        
10350
10351        
10352
10353        
10354
10355                
10356          <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
10357            <td class="entry_name
10358             " rowspan="3">
10359              android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
10360            </td>
10361            <td class="entry_type">
10362                <span class="entry_type_name">int32</span>
10363                <span class="entry_type_container">x</span>
10364
10365                <span class="entry_type_array">
10366                  2 x n
10367                </span>
10368              <span class="entry_type_visibility"> [public as size]</span>
10369
10370
10371              <span class="entry_type_hwlevel">[legacy] </span>
10372
10373
10374
10375
10376            </td> <!-- entry_type -->
10377
10378            <td class="entry_description">
10379              <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
10380camera device.<wbr/></p>
10381            </td>
10382
10383            <td class="entry_units">
10384            </td>
10385
10386            <td class="entry_range">
10387            </td>
10388
10389            <td class="entry_tags">
10390              <ul class="entry_tags">
10391                  <li><a href="#tag_BC">BC</a></li>
10392              </ul>
10393            </td>
10394
10395          </tr>
10396          <tr class="entries_header">
10397            <th class="th_details" colspan="5">Details</th>
10398          </tr>
10399          <tr class="entry_cont">
10400            <td class="entry_details" colspan="5">
10401              <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
10402thumbnail should be generated.<wbr/></p>
10403<p>Below condiditions will be satisfied for this size list:</p>
10404<ul>
10405<li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
10406If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
10407<li>The aspect ratio of the largest thumbnail size will be same as the
10408aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
10409The largest size is defined as the size that has the largest pixel area
10410in a given size list.<wbr/></li>
10411<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
10412one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
10413and vice versa.<wbr/></li>
10414<li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
10415</ul>
10416            </td>
10417          </tr>
10418
10419
10420          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10421           <!-- end of entry -->
10422        
10423                
10424          <tr class="entry" id="static_android.jpeg.maxSize">
10425            <td class="entry_name
10426             " rowspan="3">
10427              android.<wbr/>jpeg.<wbr/>max<wbr/>Size
10428            </td>
10429            <td class="entry_type">
10430                <span class="entry_type_name">int32</span>
10431
10432              <span class="entry_type_visibility"> [system]</span>
10433
10434
10435
10436
10437
10438
10439            </td> <!-- entry_type -->
10440
10441            <td class="entry_description">
10442              <p>Maximum size in bytes for the compressed
10443JPEG buffer</p>
10444            </td>
10445
10446            <td class="entry_units">
10447            </td>
10448
10449            <td class="entry_range">
10450              <p>Must be large enough to fit any JPEG produced by
10451the camera</p>
10452            </td>
10453
10454            <td class="entry_tags">
10455            </td>
10456
10457          </tr>
10458          <tr class="entries_header">
10459            <th class="th_details" colspan="5">Details</th>
10460          </tr>
10461          <tr class="entry_cont">
10462            <td class="entry_details" colspan="5">
10463              <p>This is used for sizing the gralloc buffers for
10464JPEG</p>
10465            </td>
10466          </tr>
10467
10468
10469          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10470           <!-- end of entry -->
10471        
10472        
10473
10474      <!-- end of kind -->
10475      </tbody>
10476      <tr><td colspan="6" class="kind">dynamic</td></tr>
10477
10478      <thead class="entries_header">
10479        <tr>
10480          <th class="th_name">Property Name</th>
10481          <th class="th_type">Type</th>
10482          <th class="th_description">Description</th>
10483          <th class="th_units">Units</th>
10484          <th class="th_range">Range</th>
10485          <th class="th_tags">Tags</th>
10486        </tr>
10487      </thead>
10488
10489      <tbody>
10490
10491        
10492
10493        
10494
10495        
10496
10497        
10498
10499                
10500          <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
10501            <td class="entry_name
10502             " rowspan="3">
10503              android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
10504            </td>
10505            <td class="entry_type">
10506                <span class="entry_type_name">byte</span>
10507
10508              <span class="entry_type_visibility"> [public as location]</span>
10509
10510              <span class="entry_type_synthetic">[synthetic] </span>
10511
10512              <span class="entry_type_hwlevel">[legacy] </span>
10513
10514
10515
10516
10517            </td> <!-- entry_type -->
10518
10519            <td class="entry_description">
10520              <p>A location object to use when generating image GPS metadata.<wbr/></p>
10521            </td>
10522
10523            <td class="entry_units">
10524            </td>
10525
10526            <td class="entry_range">
10527            </td>
10528
10529            <td class="entry_tags">
10530            </td>
10531
10532          </tr>
10533          <tr class="entries_header">
10534            <th class="th_details" colspan="5">Details</th>
10535          </tr>
10536          <tr class="entry_cont">
10537            <td class="entry_details" colspan="5">
10538              <p>Setting a location object in a request will include the GPS coordinates of the location
10539into any JPEG images captured based on the request.<wbr/> These coordinates can then be
10540viewed by anyone who receives the JPEG image.<wbr/></p>
10541            </td>
10542          </tr>
10543
10544
10545          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10546           <!-- end of entry -->
10547        
10548                
10549          <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
10550            <td class="entry_name
10551             " rowspan="1">
10552              android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
10553            </td>
10554            <td class="entry_type">
10555                <span class="entry_type_name">double</span>
10556                <span class="entry_type_container">x</span>
10557
10558                <span class="entry_type_array">
10559                  3
10560                </span>
10561              <span class="entry_type_visibility"> [hidden]</span>
10562
10563
10564              <span class="entry_type_hwlevel">[legacy] </span>
10565
10566
10567                <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
10568
10569
10570            </td> <!-- entry_type -->
10571
10572            <td class="entry_description">
10573              <p>GPS coordinates to include in output JPEG
10574EXIF.<wbr/></p>
10575            </td>
10576
10577            <td class="entry_units">
10578            </td>
10579
10580            <td class="entry_range">
10581              <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</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
10592
10593          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10594           <!-- end of entry -->
10595        
10596                
10597          <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
10598            <td class="entry_name
10599             " rowspan="1">
10600              android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
10601            </td>
10602            <td class="entry_type">
10603                <span class="entry_type_name">byte</span>
10604
10605              <span class="entry_type_visibility"> [hidden as string]</span>
10606
10607
10608              <span class="entry_type_hwlevel">[legacy] </span>
10609
10610
10611
10612
10613            </td> <!-- entry_type -->
10614
10615            <td class="entry_description">
10616              <p>32 characters describing GPS algorithm to
10617include in EXIF.<wbr/></p>
10618            </td>
10619
10620            <td class="entry_units">
10621              UTF-8 null-terminated string
10622            </td>
10623
10624            <td class="entry_range">
10625            </td>
10626
10627            <td class="entry_tags">
10628              <ul class="entry_tags">
10629                  <li><a href="#tag_BC">BC</a></li>
10630              </ul>
10631            </td>
10632
10633          </tr>
10634
10635
10636          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10637           <!-- end of entry -->
10638        
10639                
10640          <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
10641            <td class="entry_name
10642             " rowspan="1">
10643              android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
10644            </td>
10645            <td class="entry_type">
10646                <span class="entry_type_name">int64</span>
10647
10648              <span class="entry_type_visibility"> [hidden]</span>
10649
10650
10651              <span class="entry_type_hwlevel">[legacy] </span>
10652
10653
10654
10655
10656            </td> <!-- entry_type -->
10657
10658            <td class="entry_description">
10659              <p>Time GPS fix was made to include in
10660EXIF.<wbr/></p>
10661            </td>
10662
10663            <td class="entry_units">
10664              UTC in seconds since January 1,<wbr/> 1970
10665            </td>
10666
10667            <td class="entry_range">
10668            </td>
10669
10670            <td class="entry_tags">
10671              <ul class="entry_tags">
10672                  <li><a href="#tag_BC">BC</a></li>
10673              </ul>
10674            </td>
10675
10676          </tr>
10677
10678
10679          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10680           <!-- end of entry -->
10681        
10682                
10683          <tr class="entry" id="dynamic_android.jpeg.orientation">
10684            <td class="entry_name
10685             " rowspan="3">
10686              android.<wbr/>jpeg.<wbr/>orientation
10687            </td>
10688            <td class="entry_type">
10689                <span class="entry_type_name">int32</span>
10690
10691              <span class="entry_type_visibility"> [public]</span>
10692
10693
10694              <span class="entry_type_hwlevel">[legacy] </span>
10695
10696
10697
10698
10699            </td> <!-- entry_type -->
10700
10701            <td class="entry_description">
10702              <p>The orientation for a JPEG image.<wbr/></p>
10703            </td>
10704
10705            <td class="entry_units">
10706              Degrees in multiples of 90
10707            </td>
10708
10709            <td class="entry_range">
10710              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
10711            </td>
10712
10713            <td class="entry_tags">
10714              <ul class="entry_tags">
10715                  <li><a href="#tag_BC">BC</a></li>
10716              </ul>
10717            </td>
10718
10719          </tr>
10720          <tr class="entries_header">
10721            <th class="th_details" colspan="5">Details</th>
10722          </tr>
10723          <tr class="entry_cont">
10724            <td class="entry_details" colspan="5">
10725              <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
10726to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
10727upright.<wbr/></p>
10728<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
10729rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
10730the thumbnail data will also be rotated.<wbr/></p>
10731<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
10732by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
10733<p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
10734sample code may be used:</p>
10735<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
10736    if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
10737    int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
10738
10739    //<wbr/> Round device orientation to a multiple of 90
10740    deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
10741
10742    //<wbr/> Reverse device orientation for front-facing cameras
10743    boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
10744    if (facingFront) deviceOrientation = -deviceOrientation;
10745
10746    //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
10747    //<wbr/> the image upright relative to the device orientation
10748    int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
10749
10750    return jpegOrientation;
10751}
10752</code></pre>
10753            </td>
10754          </tr>
10755
10756
10757          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10758           <!-- end of entry -->
10759        
10760                
10761          <tr class="entry" id="dynamic_android.jpeg.quality">
10762            <td class="entry_name
10763             " rowspan="3">
10764              android.<wbr/>jpeg.<wbr/>quality
10765            </td>
10766            <td class="entry_type">
10767                <span class="entry_type_name">byte</span>
10768
10769              <span class="entry_type_visibility"> [public]</span>
10770
10771
10772              <span class="entry_type_hwlevel">[legacy] </span>
10773
10774
10775
10776
10777            </td> <!-- entry_type -->
10778
10779            <td class="entry_description">
10780              <p>Compression quality of the final JPEG
10781image.<wbr/></p>
10782            </td>
10783
10784            <td class="entry_units">
10785            </td>
10786
10787            <td class="entry_range">
10788              <p>1-100; larger is higher quality</p>
10789            </td>
10790
10791            <td class="entry_tags">
10792              <ul class="entry_tags">
10793                  <li><a href="#tag_BC">BC</a></li>
10794              </ul>
10795            </td>
10796
10797          </tr>
10798          <tr class="entries_header">
10799            <th class="th_details" colspan="5">Details</th>
10800          </tr>
10801          <tr class="entry_cont">
10802            <td class="entry_details" colspan="5">
10803              <p>85-95 is typical usage range.<wbr/></p>
10804            </td>
10805          </tr>
10806
10807
10808          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10809           <!-- end of entry -->
10810        
10811                
10812          <tr class="entry" id="dynamic_android.jpeg.size">
10813            <td class="entry_name
10814             " rowspan="3">
10815              android.<wbr/>jpeg.<wbr/>size
10816            </td>
10817            <td class="entry_type">
10818                <span class="entry_type_name">int32</span>
10819
10820              <span class="entry_type_visibility"> [system]</span>
10821
10822
10823
10824
10825
10826
10827            </td> <!-- entry_type -->
10828
10829            <td class="entry_description">
10830              <p>The size of the compressed JPEG image,<wbr/> in
10831bytes</p>
10832            </td>
10833
10834            <td class="entry_units">
10835            </td>
10836
10837            <td class="entry_range">
10838              <p>&gt;= 0</p>
10839            </td>
10840
10841            <td class="entry_tags">
10842              <ul class="entry_tags">
10843                  <li><a href="#tag_FUTURE">FUTURE</a></li>
10844              </ul>
10845            </td>
10846
10847          </tr>
10848          <tr class="entries_header">
10849            <th class="th_details" colspan="5">Details</th>
10850          </tr>
10851          <tr class="entry_cont">
10852            <td class="entry_details" colspan="5">
10853              <p>If no JPEG output is produced for the request,<wbr/>
10854this must be 0.<wbr/></p>
10855<p>Otherwise,<wbr/> this describes the real size of the compressed
10856JPEG image placed in the output stream.<wbr/>  More specifically,<wbr/>
10857if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
10858has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
10859the JPEG stream will be 1000000 bytes,<wbr/> of which the first
10860500000 make up the real data.<wbr/></p>
10861            </td>
10862          </tr>
10863
10864
10865          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10866           <!-- end of entry -->
10867        
10868                
10869          <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
10870            <td class="entry_name
10871             " rowspan="1">
10872              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
10873            </td>
10874            <td class="entry_type">
10875                <span class="entry_type_name">byte</span>
10876
10877              <span class="entry_type_visibility"> [public]</span>
10878
10879
10880              <span class="entry_type_hwlevel">[legacy] </span>
10881
10882
10883
10884
10885            </td> <!-- entry_type -->
10886
10887            <td class="entry_description">
10888              <p>Compression quality of JPEG
10889thumbnail.<wbr/></p>
10890            </td>
10891
10892            <td class="entry_units">
10893            </td>
10894
10895            <td class="entry_range">
10896              <p>1-100; larger is higher quality</p>
10897            </td>
10898
10899            <td class="entry_tags">
10900              <ul class="entry_tags">
10901                  <li><a href="#tag_BC">BC</a></li>
10902              </ul>
10903            </td>
10904
10905          </tr>
10906
10907
10908          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10909           <!-- end of entry -->
10910        
10911                
10912          <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
10913            <td class="entry_name
10914             " rowspan="5">
10915              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
10916            </td>
10917            <td class="entry_type">
10918                <span class="entry_type_name">int32</span>
10919                <span class="entry_type_container">x</span>
10920
10921                <span class="entry_type_array">
10922                  2
10923                </span>
10924              <span class="entry_type_visibility"> [public as size]</span>
10925
10926
10927              <span class="entry_type_hwlevel">[legacy] </span>
10928
10929
10930
10931
10932            </td> <!-- entry_type -->
10933
10934            <td class="entry_description">
10935              <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
10936            </td>
10937
10938            <td class="entry_units">
10939            </td>
10940
10941            <td class="entry_range">
10942              <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
10943            </td>
10944
10945            <td class="entry_tags">
10946              <ul class="entry_tags">
10947                  <li><a href="#tag_BC">BC</a></li>
10948              </ul>
10949            </td>
10950
10951          </tr>
10952          <tr class="entries_header">
10953            <th class="th_details" colspan="5">Details</th>
10954          </tr>
10955          <tr class="entry_cont">
10956            <td class="entry_details" colspan="5">
10957              <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
10958but the captured JPEG will still be a valid image.<wbr/></p>
10959<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
10960should have the same aspect ratio as the main JPEG output.<wbr/></p>
10961<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
10962ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
10963For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
1096416:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
10965generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
10966Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
10967            </td>
10968          </tr>
10969
10970          <tr class="entries_header">
10971            <th class="th_details" colspan="5">HAL Implementation Details</th>
10972          </tr>
10973          <tr class="entry_cont">
10974            <td class="entry_details" colspan="5">
10975              <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
10976The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
10977The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
10978thumbnail image cropping.<wbr/></p>
10979            </td>
10980          </tr>
10981
10982          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10983           <!-- end of entry -->
10984        
10985        
10986
10987      <!-- end of kind -->
10988      </tbody>
10989
10990  <!-- end of section -->
10991  <tr><td colspan="6" id="section_lens" class="section">lens</td></tr>
10992
10993
10994      <tr><td colspan="6" class="kind">controls</td></tr>
10995
10996      <thead class="entries_header">
10997        <tr>
10998          <th class="th_name">Property Name</th>
10999          <th class="th_type">Type</th>
11000          <th class="th_description">Description</th>
11001          <th class="th_units">Units</th>
11002          <th class="th_range">Range</th>
11003          <th class="th_tags">Tags</th>
11004        </tr>
11005      </thead>
11006
11007      <tbody>
11008
11009        
11010
11011        
11012
11013        
11014
11015        
11016
11017                
11018          <tr class="entry" id="controls_android.lens.aperture">
11019            <td class="entry_name
11020             " rowspan="3">
11021              android.<wbr/>lens.<wbr/>aperture
11022            </td>
11023            <td class="entry_type">
11024                <span class="entry_type_name">float</span>
11025
11026              <span class="entry_type_visibility"> [public]</span>
11027
11028
11029              <span class="entry_type_hwlevel">[full] </span>
11030
11031
11032
11033
11034            </td> <!-- entry_type -->
11035
11036            <td class="entry_description">
11037              <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
11038effective aperture diameter.<wbr/></p>
11039            </td>
11040
11041            <td class="entry_units">
11042              The f-number (f/<wbr/>N)
11043            </td>
11044
11045            <td class="entry_range">
11046              <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
11047            </td>
11048
11049            <td class="entry_tags">
11050              <ul class="entry_tags">
11051                  <li><a href="#tag_V1">V1</a></li>
11052              </ul>
11053            </td>
11054
11055          </tr>
11056          <tr class="entries_header">
11057            <th class="th_details" colspan="5">Details</th>
11058          </tr>
11059          <tr class="entry_cont">
11060            <td class="entry_details" colspan="5">
11061              <p>Setting this value is only supported on the camera devices that have a variable
11062aperture lens.<wbr/></p>
11063<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
11064this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
11065<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>
11066to achieve manual exposure control.<wbr/></p>
11067<p>The requested aperture value may take several frames to reach the
11068requested value; the camera device will report the current (intermediate)
11069aperture size in capture result metadata while the aperture is changing.<wbr/>
11070While 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>
11071<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
11072the ON modes,<wbr/> this will be overridden by the camera device
11073auto-exposure algorithm,<wbr/> the overridden values are then provided
11074back to the user in the corresponding result.<wbr/></p>
11075            </td>
11076          </tr>
11077
11078
11079          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11080           <!-- end of entry -->
11081        
11082                
11083          <tr class="entry" id="controls_android.lens.filterDensity">
11084            <td class="entry_name
11085             " rowspan="3">
11086              android.<wbr/>lens.<wbr/>filter<wbr/>Density
11087            </td>
11088            <td class="entry_type">
11089                <span class="entry_type_name">float</span>
11090
11091              <span class="entry_type_visibility"> [public]</span>
11092
11093
11094              <span class="entry_type_hwlevel">[full] </span>
11095
11096
11097
11098
11099            </td> <!-- entry_type -->
11100
11101            <td class="entry_description">
11102              <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
11103            </td>
11104
11105            <td class="entry_units">
11106              Exposure Value (EV)
11107            </td>
11108
11109            <td class="entry_range">
11110              <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
11111            </td>
11112
11113            <td class="entry_tags">
11114              <ul class="entry_tags">
11115                  <li><a href="#tag_V1">V1</a></li>
11116              </ul>
11117            </td>
11118
11119          </tr>
11120          <tr class="entries_header">
11121            <th class="th_details" colspan="5">Details</th>
11122          </tr>
11123          <tr class="entry_cont">
11124            <td class="entry_details" colspan="5">
11125              <p>This control will not be supported on most camera devices.<wbr/></p>
11126<p>Lens filters are typically used to lower the amount of light the
11127sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
11128step is the standard logarithmic representation,<wbr/> which are
11129non-negative,<wbr/> and inversely proportional to the amount of light
11130hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
11131in no reduction of the incoming light,<wbr/> and setting this to 2 would
11132mean that the filter is set to reduce incoming light by two stops
11133(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
11134<p>It may take several frames before the lens filter density changes
11135to the requested value.<wbr/> While the filter density is still changing,<wbr/>
11136<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
11137            </td>
11138          </tr>
11139
11140
11141          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11142           <!-- end of entry -->
11143        
11144                
11145          <tr class="entry" id="controls_android.lens.focalLength">
11146            <td class="entry_name
11147             " rowspan="3">
11148              android.<wbr/>lens.<wbr/>focal<wbr/>Length
11149            </td>
11150            <td class="entry_type">
11151                <span class="entry_type_name">float</span>
11152
11153              <span class="entry_type_visibility"> [public]</span>
11154
11155
11156              <span class="entry_type_hwlevel">[legacy] </span>
11157
11158
11159
11160
11161            </td> <!-- entry_type -->
11162
11163            <td class="entry_description">
11164              <p>The desired lens focal length; used for optical zoom.<wbr/></p>
11165            </td>
11166
11167            <td class="entry_units">
11168              Millimeters
11169            </td>
11170
11171            <td class="entry_range">
11172              <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
11173            </td>
11174
11175            <td class="entry_tags">
11176              <ul class="entry_tags">
11177                  <li><a href="#tag_V1">V1</a></li>
11178              </ul>
11179            </td>
11180
11181          </tr>
11182          <tr class="entries_header">
11183            <th class="th_details" colspan="5">Details</th>
11184          </tr>
11185          <tr class="entry_cont">
11186            <td class="entry_details" colspan="5">
11187              <p>This setting controls the physical focal length of the camera
11188device's lens.<wbr/> Changing the focal length changes the field of
11189view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
11190<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
11191setting won't be applied instantaneously,<wbr/> and it may take several
11192frames before the lens can change to the requested focal length.<wbr/>
11193While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
11194be set to MOVING.<wbr/></p>
11195<p>Optical zoom will not be supported on most devices.<wbr/></p>
11196            </td>
11197          </tr>
11198
11199
11200          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11201           <!-- end of entry -->
11202        
11203                
11204          <tr class="entry" id="controls_android.lens.focusDistance">
11205            <td class="entry_name
11206             " rowspan="3">
11207              android.<wbr/>lens.<wbr/>focus<wbr/>Distance
11208            </td>
11209            <td class="entry_type">
11210                <span class="entry_type_name">float</span>
11211
11212              <span class="entry_type_visibility"> [public]</span>
11213
11214
11215              <span class="entry_type_hwlevel">[full] </span>
11216
11217
11218
11219
11220            </td> <!-- entry_type -->
11221
11222            <td class="entry_description">
11223              <p>Desired distance to plane of sharpest focus,<wbr/>
11224measured from frontmost surface of the lens.<wbr/></p>
11225            </td>
11226
11227            <td class="entry_units">
11228              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
11229            </td>
11230
11231            <td class="entry_range">
11232              <p>&gt;= 0</p>
11233            </td>
11234
11235            <td class="entry_tags">
11236              <ul class="entry_tags">
11237                  <li><a href="#tag_BC">BC</a></li>
11238                  <li><a href="#tag_V1">V1</a></li>
11239              </ul>
11240            </td>
11241
11242          </tr>
11243          <tr class="entries_header">
11244            <th class="th_details" colspan="5">Details</th>
11245          </tr>
11246          <tr class="entry_cont">
11247            <td class="entry_details" colspan="5">
11248              <p>This control can be used for setting manual focus,<wbr/> on devices that support
11249the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
11250<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
11251<p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
11252<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>
11253<p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
11254instantaneously,<wbr/> and it may take several frames before the lens
11255can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
11256<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
11257<p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
11258for infinity focus.<wbr/></p>
11259            </td>
11260          </tr>
11261
11262
11263          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11264           <!-- end of entry -->
11265        
11266                
11267          <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
11268            <td class="entry_name
11269             " rowspan="3">
11270              android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
11271            </td>
11272            <td class="entry_type">
11273                <span class="entry_type_name entry_type_name_enum">byte</span>
11274
11275              <span class="entry_type_visibility"> [public]</span>
11276
11277
11278              <span class="entry_type_hwlevel">[limited] </span>
11279
11280
11281
11282                <ul class="entry_type_enum">
11283                  <li>
11284                    <span class="entry_type_enum_name">OFF</span>
11285                    <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
11286                  </li>
11287                  <li>
11288                    <span class="entry_type_enum_name">ON</span>
11289                    <span class="entry_type_enum_optional">[optional]</span>
11290                    <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
11291                  </li>
11292                </ul>
11293
11294            </td> <!-- entry_type -->
11295
11296            <td class="entry_description">
11297              <p>Sets whether the camera device uses optical image stabilization (OIS)
11298when capturing images.<wbr/></p>
11299            </td>
11300
11301            <td class="entry_units">
11302            </td>
11303
11304            <td class="entry_range">
11305              <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
11306            </td>
11307
11308            <td class="entry_tags">
11309              <ul class="entry_tags">
11310                  <li><a href="#tag_V1">V1</a></li>
11311              </ul>
11312            </td>
11313
11314          </tr>
11315          <tr class="entries_header">
11316            <th class="th_details" colspan="5">Details</th>
11317          </tr>
11318          <tr class="entry_cont">
11319            <td class="entry_details" colspan="5">
11320              <p>OIS is used to compensate for motion blur due to small
11321movements of the camera during capture.<wbr/> Unlike digital image
11322stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
11323makes use of mechanical elements to stabilize the camera
11324sensor,<wbr/> and thus allows for longer exposure times before
11325camera shake becomes apparent.<wbr/></p>
11326<p>Switching between different optical stabilization modes may take several
11327frames to initialize,<wbr/> the camera device will report the current mode in
11328capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
11329optical stabilization modes in the first several capture results may still
11330be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
11331<p>If a camera device supports both OIS and digital image stabilization
11332(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
11333interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
11334<p>Not all devices will support OIS; see
11335<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
11336available controls.<wbr/></p>
11337            </td>
11338          </tr>
11339
11340
11341          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11342           <!-- end of entry -->
11343        
11344        
11345
11346      <!-- end of kind -->
11347      </tbody>
11348      <tr><td colspan="6" class="kind">static</td></tr>
11349
11350      <thead class="entries_header">
11351        <tr>
11352          <th class="th_name">Property Name</th>
11353          <th class="th_type">Type</th>
11354          <th class="th_description">Description</th>
11355          <th class="th_units">Units</th>
11356          <th class="th_range">Range</th>
11357          <th class="th_tags">Tags</th>
11358        </tr>
11359      </thead>
11360
11361      <tbody>
11362
11363        
11364
11365        
11366
11367        
11368
11369        
11370                
11371            
11372
11373                
11374          <tr class="entry" id="static_android.lens.info.availableApertures">
11375            <td class="entry_name
11376             " rowspan="3">
11377              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
11378            </td>
11379            <td class="entry_type">
11380                <span class="entry_type_name">float</span>
11381                <span class="entry_type_container">x</span>
11382
11383                <span class="entry_type_array">
11384                  n
11385                </span>
11386              <span class="entry_type_visibility"> [public]</span>
11387
11388
11389              <span class="entry_type_hwlevel">[full] </span>
11390
11391
11392
11393
11394            </td> <!-- entry_type -->
11395
11396            <td class="entry_description">
11397              <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
11398supported by this camera device.<wbr/></p>
11399            </td>
11400
11401            <td class="entry_units">
11402              The aperture f-number
11403            </td>
11404
11405            <td class="entry_range">
11406            </td>
11407
11408            <td class="entry_tags">
11409              <ul class="entry_tags">
11410                  <li><a href="#tag_V1">V1</a></li>
11411              </ul>
11412            </td>
11413
11414          </tr>
11415          <tr class="entries_header">
11416            <th class="th_details" colspan="5">Details</th>
11417          </tr>
11418          <tr class="entry_cont">
11419            <td class="entry_details" colspan="5">
11420              <p>If the camera device doesn't support a variable lens aperture,<wbr/>
11421this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
11422<p>If the camera device supports a variable aperture,<wbr/> the aperture values
11423in this list will be sorted in ascending order.<wbr/></p>
11424            </td>
11425          </tr>
11426
11427
11428          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11429           <!-- end of entry -->
11430        
11431                
11432          <tr class="entry" id="static_android.lens.info.availableFilterDensities">
11433            <td class="entry_name
11434             " rowspan="3">
11435              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
11436            </td>
11437            <td class="entry_type">
11438                <span class="entry_type_name">float</span>
11439                <span class="entry_type_container">x</span>
11440
11441                <span class="entry_type_array">
11442                  n
11443                </span>
11444              <span class="entry_type_visibility"> [public]</span>
11445
11446
11447              <span class="entry_type_hwlevel">[full] </span>
11448
11449
11450
11451
11452            </td> <!-- entry_type -->
11453
11454            <td class="entry_description">
11455              <p>List of neutral density filter values for
11456<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
11457            </td>
11458
11459            <td class="entry_units">
11460              Exposure value (EV)
11461            </td>
11462
11463            <td class="entry_range">
11464              <p>Values are &gt;= 0</p>
11465            </td>
11466
11467            <td class="entry_tags">
11468              <ul class="entry_tags">
11469                  <li><a href="#tag_V1">V1</a></li>
11470              </ul>
11471            </td>
11472
11473          </tr>
11474          <tr class="entries_header">
11475            <th class="th_details" colspan="5">Details</th>
11476          </tr>
11477          <tr class="entry_cont">
11478            <td class="entry_details" colspan="5">
11479              <p>If a neutral density filter is not supported by this camera device,<wbr/>
11480this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
11481filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
11482            </td>
11483          </tr>
11484
11485
11486          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11487           <!-- end of entry -->
11488        
11489                
11490          <tr class="entry" id="static_android.lens.info.availableFocalLengths">
11491            <td class="entry_name
11492             " rowspan="3">
11493              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
11494            </td>
11495            <td class="entry_type">
11496                <span class="entry_type_name">float</span>
11497                <span class="entry_type_container">x</span>
11498
11499                <span class="entry_type_array">
11500                  n
11501                </span>
11502              <span class="entry_type_visibility"> [public]</span>
11503
11504
11505              <span class="entry_type_hwlevel">[legacy] </span>
11506
11507
11508                <div class="entry_type_notes">The list of available focal lengths</div>
11509
11510
11511            </td> <!-- entry_type -->
11512
11513            <td class="entry_description">
11514              <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
11515device.<wbr/></p>
11516            </td>
11517
11518            <td class="entry_units">
11519              Millimeters
11520            </td>
11521
11522            <td class="entry_range">
11523              <p>Values are &gt; 0</p>
11524            </td>
11525
11526            <td class="entry_tags">
11527              <ul class="entry_tags">
11528                  <li><a href="#tag_BC">BC</a></li>
11529                  <li><a href="#tag_V1">V1</a></li>
11530              </ul>
11531            </td>
11532
11533          </tr>
11534          <tr class="entries_header">
11535            <th class="th_details" colspan="5">Details</th>
11536          </tr>
11537          <tr class="entry_cont">
11538            <td class="entry_details" colspan="5">
11539              <p>If optical zoom is not supported,<wbr/> this list will only contain
11540a single value corresponding to the fixed focal length of the
11541device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
11542by the camera device,<wbr/> in ascending order.<wbr/></p>
11543            </td>
11544          </tr>
11545
11546
11547          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11548           <!-- end of entry -->
11549        
11550                
11551          <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
11552            <td class="entry_name
11553             " rowspan="3">
11554              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
11555            </td>
11556            <td class="entry_type">
11557                <span class="entry_type_name">byte</span>
11558                <span class="entry_type_container">x</span>
11559
11560                <span class="entry_type_array">
11561                  n
11562                </span>
11563              <span class="entry_type_visibility"> [public as enumList]</span>
11564
11565
11566              <span class="entry_type_hwlevel">[limited] </span>
11567
11568
11569                <div class="entry_type_notes">list of enums</div>
11570
11571
11572            </td> <!-- entry_type -->
11573
11574            <td class="entry_description">
11575              <p>List of optical image stabilization (OIS) modes for
11576<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>
11577            </td>
11578
11579            <td class="entry_units">
11580            </td>
11581
11582            <td class="entry_range">
11583              <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
11584            </td>
11585
11586            <td class="entry_tags">
11587              <ul class="entry_tags">
11588                  <li><a href="#tag_V1">V1</a></li>
11589              </ul>
11590            </td>
11591
11592          </tr>
11593          <tr class="entries_header">
11594            <th class="th_details" colspan="5">Details</th>
11595          </tr>
11596          <tr class="entry_cont">
11597            <td class="entry_details" colspan="5">
11598              <p>If OIS is not supported by a given camera device,<wbr/> this list will
11599contain only OFF.<wbr/></p>
11600            </td>
11601          </tr>
11602
11603
11604          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11605           <!-- end of entry -->
11606        
11607                
11608          <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
11609            <td class="entry_name
11610             " rowspan="3">
11611              android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
11612            </td>
11613            <td class="entry_type">
11614                <span class="entry_type_name">float</span>
11615
11616              <span class="entry_type_visibility"> [public]</span>
11617
11618
11619              <span class="entry_type_hwlevel">[limited] </span>
11620
11621
11622
11623
11624            </td> <!-- entry_type -->
11625
11626            <td class="entry_description">
11627              <p>Hyperfocal distance for this lens.<wbr/></p>
11628            </td>
11629
11630            <td class="entry_units">
11631              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
11632            </td>
11633
11634            <td class="entry_range">
11635              <p>If lens is fixed focus,<wbr/> &gt;= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
11636within <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>
11637            </td>
11638
11639            <td class="entry_tags">
11640            </td>
11641
11642          </tr>
11643          <tr class="entries_header">
11644            <th class="th_details" colspan="5">Details</th>
11645          </tr>
11646          <tr class="entry_cont">
11647            <td class="entry_details" colspan="5">
11648              <p>If the lens is not fixed focus,<wbr/> the camera device will report this
11649field 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>
11650            </td>
11651          </tr>
11652
11653
11654          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11655           <!-- end of entry -->
11656        
11657                
11658          <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
11659            <td class="entry_name
11660             " rowspan="5">
11661              android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
11662            </td>
11663            <td class="entry_type">
11664                <span class="entry_type_name">float</span>
11665
11666              <span class="entry_type_visibility"> [public]</span>
11667
11668
11669              <span class="entry_type_hwlevel">[limited] </span>
11670
11671
11672
11673
11674            </td> <!-- entry_type -->
11675
11676            <td class="entry_description">
11677              <p>Shortest distance from frontmost surface
11678of the lens that can be brought into sharp focus.<wbr/></p>
11679            </td>
11680
11681            <td class="entry_units">
11682              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
11683            </td>
11684
11685            <td class="entry_range">
11686              <p>&gt;= 0</p>
11687            </td>
11688
11689            <td class="entry_tags">
11690              <ul class="entry_tags">
11691                  <li><a href="#tag_V1">V1</a></li>
11692              </ul>
11693            </td>
11694
11695          </tr>
11696          <tr class="entries_header">
11697            <th class="th_details" colspan="5">Details</th>
11698          </tr>
11699          <tr class="entry_cont">
11700            <td class="entry_details" colspan="5">
11701              <p>If the lens is fixed-focus,<wbr/> this will be
117020.<wbr/></p>
11703            </td>
11704          </tr>
11705
11706          <tr class="entries_header">
11707            <th class="th_details" colspan="5">HAL Implementation Details</th>
11708          </tr>
11709          <tr class="entry_cont">
11710            <td class="entry_details" colspan="5">
11711              <p>Mandatory for FULL devices; LIMITED devices
11712must always set this value to 0 for fixed-focus; and may omit
11713the minimum focus distance otherwise.<wbr/></p>
11714<p>This field is also mandatory for all devices advertising
11715the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
11716            </td>
11717          </tr>
11718
11719          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11720           <!-- end of entry -->
11721        
11722                
11723          <tr class="entry" id="static_android.lens.info.shadingMapSize">
11724            <td class="entry_name
11725             " rowspan="3">
11726              android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
11727            </td>
11728            <td class="entry_type">
11729                <span class="entry_type_name">int32</span>
11730                <span class="entry_type_container">x</span>
11731
11732                <span class="entry_type_array">
11733                  2
11734                </span>
11735              <span class="entry_type_visibility"> [hidden as size]</span>
11736
11737
11738              <span class="entry_type_hwlevel">[full] </span>
11739
11740
11741                <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
11742
11743
11744            </td> <!-- entry_type -->
11745
11746            <td class="entry_description">
11747              <p>Dimensions of lens shading map.<wbr/></p>
11748            </td>
11749
11750            <td class="entry_units">
11751            </td>
11752
11753            <td class="entry_range">
11754              <p>Both values &gt;= 1</p>
11755            </td>
11756
11757            <td class="entry_tags">
11758              <ul class="entry_tags">
11759                  <li><a href="#tag_V1">V1</a></li>
11760              </ul>
11761            </td>
11762
11763          </tr>
11764          <tr class="entries_header">
11765            <th class="th_details" colspan="5">Details</th>
11766          </tr>
11767          <tr class="entry_cont">
11768            <td class="entry_details" colspan="5">
11769              <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
11770must be smaller than 64x64.<wbr/></p>
11771            </td>
11772          </tr>
11773
11774
11775          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11776           <!-- end of entry -->
11777        
11778                
11779          <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
11780            <td class="entry_name
11781             " rowspan="5">
11782              android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
11783            </td>
11784            <td class="entry_type">
11785                <span class="entry_type_name entry_type_name_enum">byte</span>
11786
11787              <span class="entry_type_visibility"> [public]</span>
11788
11789
11790              <span class="entry_type_hwlevel">[limited] </span>
11791
11792
11793
11794                <ul class="entry_type_enum">
11795                  <li>
11796                    <span class="entry_type_enum_name">UNCALIBRATED</span>
11797                    <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
11798<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
11799<p>Setting the lens to the same focus distance on separate occasions may
11800result in a different real focus distance,<wbr/> depending on factors such
11801as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
11802and the device temperature.<wbr/> The focus distance value will still be
11803in 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
11804represents the farthest focus.<wbr/></p></span>
11805                  </li>
11806                  <li>
11807                    <span class="entry_type_enum_name">APPROXIMATE</span>
11808                    <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
11809<p>However,<wbr/> setting the lens to the same focus distance
11810on separate occasions may result in a different real
11811focus distance,<wbr/> depending on factors such as the
11812orientation of the device,<wbr/> the age of the focusing
11813mechanism,<wbr/> and the device temperature.<wbr/></p></span>
11814                  </li>
11815                  <li>
11816                    <span class="entry_type_enum_name">CALIBRATED</span>
11817                    <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
11818is calibrated.<wbr/></p>
11819<p>The lens mechanism is calibrated so that setting the
11820same focus distance is repeatable on multiple
11821occasions with good accuracy,<wbr/> and the focus distance
11822corresponds to the real physical distance to the plane
11823of best focus.<wbr/></p></span>
11824                  </li>
11825                </ul>
11826
11827            </td> <!-- entry_type -->
11828
11829            <td class="entry_description">
11830              <p>The lens focus distance calibration quality.<wbr/></p>
11831            </td>
11832
11833            <td class="entry_units">
11834            </td>
11835
11836            <td class="entry_range">
11837            </td>
11838
11839            <td class="entry_tags">
11840              <ul class="entry_tags">
11841                  <li><a href="#tag_V1">V1</a></li>
11842              </ul>
11843            </td>
11844
11845          </tr>
11846          <tr class="entries_header">
11847            <th class="th_details" colspan="5">Details</th>
11848          </tr>
11849          <tr class="entry_cont">
11850            <td class="entry_details" colspan="5">
11851              <p>The lens focus distance calibration quality determines the reliability of
11852focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
11853<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
11854<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
11855<p>APPROXIMATE and CALIBRATED devices report the focus metadata in
11856units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
11857and increasing positive numbers represent focusing closer and closer
11858to the camera device.<wbr/> The focus distance control also uses diopters
11859on these devices.<wbr/></p>
11860<p>UNCALIBRATED devices do not use units that are directly comparable
11861to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
11862focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
11863nearest focus the device can achieve.<wbr/></p>
11864            </td>
11865          </tr>
11866
11867          <tr class="entries_header">
11868            <th class="th_details" colspan="5">HAL Implementation Details</th>
11869          </tr>
11870          <tr class="entry_cont">
11871            <td class="entry_details" colspan="5">
11872              <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
11873focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
11874and the lens focus distance is set to 0 diopters
11875(<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
11876and is stably focused at infinity even if the device tilts.<wbr/> It may take the
11877lens some time to move; during the move the lens state should be MOVING and
11878the output diopter value should be changing toward 0.<wbr/></p>
11879            </td>
11880          </tr>
11881
11882          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11883           <!-- end of entry -->
11884        
11885        
11886        
11887
11888                
11889          <tr class="entry" id="static_android.lens.facing">
11890            <td class="entry_name
11891             " rowspan="1">
11892              android.<wbr/>lens.<wbr/>facing
11893            </td>
11894            <td class="entry_type">
11895                <span class="entry_type_name entry_type_name_enum">byte</span>
11896
11897              <span class="entry_type_visibility"> [public]</span>
11898
11899
11900              <span class="entry_type_hwlevel">[legacy] </span>
11901
11902
11903
11904                <ul class="entry_type_enum">
11905                  <li>
11906                    <span class="entry_type_enum_name">FRONT</span>
11907                    <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
11908                  </li>
11909                  <li>
11910                    <span class="entry_type_enum_name">BACK</span>
11911                    <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
11912                  </li>
11913                  <li>
11914                    <span class="entry_type_enum_name">EXTERNAL</span>
11915                    <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
11916device's screen.<wbr/></p></span>
11917                  </li>
11918                </ul>
11919
11920            </td> <!-- entry_type -->
11921
11922            <td class="entry_description">
11923              <p>Direction the camera faces relative to
11924device screen.<wbr/></p>
11925            </td>
11926
11927            <td class="entry_units">
11928            </td>
11929
11930            <td class="entry_range">
11931            </td>
11932
11933            <td class="entry_tags">
11934            </td>
11935
11936          </tr>
11937
11938
11939          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11940           <!-- end of entry -->
11941        
11942                
11943          <tr class="entry" id="static_android.lens.poseRotation">
11944            <td class="entry_name
11945             " rowspan="3">
11946              android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
11947            </td>
11948            <td class="entry_type">
11949                <span class="entry_type_name">float</span>
11950                <span class="entry_type_container">x</span>
11951
11952                <span class="entry_type_array">
11953                  4
11954                </span>
11955              <span class="entry_type_visibility"> [public]</span>
11956
11957
11958
11959
11960
11961
11962            </td> <!-- entry_type -->
11963
11964            <td class="entry_description">
11965              <p>The orientation of the camera relative to the sensor
11966coordinate system.<wbr/></p>
11967            </td>
11968
11969            <td class="entry_units">
11970              
11971            Quarternion coefficients
11972          
11973            </td>
11974
11975            <td class="entry_range">
11976            </td>
11977
11978            <td class="entry_tags">
11979              <ul class="entry_tags">
11980                  <li><a href="#tag_DEPTH">DEPTH</a></li>
11981              </ul>
11982            </td>
11983
11984          </tr>
11985          <tr class="entries_header">
11986            <th class="th_details" colspan="5">Details</th>
11987          </tr>
11988          <tr class="entry_cont">
11989            <td class="entry_details" colspan="5">
11990              <p>The four coefficients that describe the quarternion
11991rotation from the Android sensor coordinate system to a
11992camera-aligned coordinate system where the X-axis is
11993aligned with the long side of the image sensor,<wbr/> the Y-axis
11994is aligned with the short side of the image sensor,<wbr/> and
11995the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
11996<p>To convert from the quarternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
11997to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
11998amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
11999<pre><code> theta = 2 * acos(w)
12000a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
12001a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
12002a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
12003</code></pre>
12004<p>To create a 3x3 rotation matrix that applies the rotation
12005defined by this quarternion,<wbr/> the following matrix can be
12006used:</p>
12007<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
12008           2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
12009           2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
12010</code></pre>
12011<p>This matrix can then be used to apply the rotation to a
12012 column vector point with</p>
12013<p><code>p' = Rp</code></p>
12014<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
12015 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
12016            </td>
12017          </tr>
12018
12019
12020          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12021           <!-- end of entry -->
12022        
12023                
12024          <tr class="entry" id="static_android.lens.poseTranslation">
12025            <td class="entry_name
12026             " rowspan="3">
12027              android.<wbr/>lens.<wbr/>pose<wbr/>Translation
12028            </td>
12029            <td class="entry_type">
12030                <span class="entry_type_name">float</span>
12031                <span class="entry_type_container">x</span>
12032
12033                <span class="entry_type_array">
12034                  3
12035                </span>
12036              <span class="entry_type_visibility"> [public]</span>
12037
12038
12039
12040
12041
12042
12043            </td> <!-- entry_type -->
12044
12045            <td class="entry_description">
12046              <p>Position of the camera optical center.<wbr/></p>
12047            </td>
12048
12049            <td class="entry_units">
12050              Meters
12051            </td>
12052
12053            <td class="entry_range">
12054            </td>
12055
12056            <td class="entry_tags">
12057              <ul class="entry_tags">
12058                  <li><a href="#tag_DEPTH">DEPTH</a></li>
12059              </ul>
12060            </td>
12061
12062          </tr>
12063          <tr class="entries_header">
12064            <th class="th_details" colspan="5">Details</th>
12065          </tr>
12066          <tr class="entry_cont">
12067            <td class="entry_details" colspan="5">
12068              <p>As measured in the device sensor coordinate system,<wbr/> the
12069position of the camera device's optical center,<wbr/> as a
12070three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
12071<p>To transform a world position to a camera-device centered
12072coordinate system,<wbr/> the position must be translated by this
12073vector and then rotated by <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>.<wbr/></p>
12074            </td>
12075          </tr>
12076
12077
12078          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12079           <!-- end of entry -->
12080        
12081                
12082          <tr class="entry" id="static_android.lens.intrinsicCalibration">
12083            <td class="entry_name
12084             " rowspan="3">
12085              android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
12086            </td>
12087            <td class="entry_type">
12088                <span class="entry_type_name">float</span>
12089                <span class="entry_type_container">x</span>
12090
12091                <span class="entry_type_array">
12092                  5
12093                </span>
12094              <span class="entry_type_visibility"> [public]</span>
12095
12096
12097
12098
12099
12100
12101            </td> <!-- entry_type -->
12102
12103            <td class="entry_description">
12104              <p>The parameters for this camera device's intrinsic
12105calibration.<wbr/></p>
12106            </td>
12107
12108            <td class="entry_units">
12109              
12110            Pixels in the android.<wbr/>sensor.<wbr/>active<wbr/>Array<wbr/>Size coordinate
12111            system.<wbr/>
12112          
12113            </td>
12114
12115            <td class="entry_range">
12116            </td>
12117
12118            <td class="entry_tags">
12119              <ul class="entry_tags">
12120                  <li><a href="#tag_DEPTH">DEPTH</a></li>
12121              </ul>
12122            </td>
12123
12124          </tr>
12125          <tr class="entries_header">
12126            <th class="th_details" colspan="5">Details</th>
12127          </tr>
12128          <tr class="entry_cont">
12129            <td class="entry_details" colspan="5">
12130              <p>The five calibration parameters that describe the
12131transform from camera-centric 3D coordinates to sensor
12132pixel coordinates:</p>
12133<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
12134</code></pre>
12135<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
12136focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
12137axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
12138being aligned with the lens plane.<wbr/></p>
12139<p>These are typically used within a transformation matrix K:</p>
12140<pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
12141       0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
12142       0    0,<wbr/>   1 ]
12143</code></pre>
12144<p>which can then be combined with the camera pose rotation
12145<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
12146<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
12147complete transform from world coordinates to pixel
12148coordinates:</p>
12149<pre><code>P = [ K 0   * [ R t
12150     0 1 ]     0 1 ]
12151</code></pre>
12152<p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
12153and <code>p_<wbr/>s</code> being a point in the camera active pixel array
12154coordinate system,<wbr/> and with the mapping including the
12155homogeneous division by z:</p>
12156<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
12157p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
12158</code></pre>
12159<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
12160point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
12161(depth) in pixel coordinates.<wbr/></p>
12162            </td>
12163          </tr>
12164
12165
12166          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12167           <!-- end of entry -->
12168        
12169                
12170          <tr class="entry" id="static_android.lens.radialDistortion">
12171            <td class="entry_name
12172             " rowspan="3">
12173              android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
12174            </td>
12175            <td class="entry_type">
12176                <span class="entry_type_name">float</span>
12177                <span class="entry_type_container">x</span>
12178
12179                <span class="entry_type_array">
12180                  3
12181                </span>
12182              <span class="entry_type_visibility"> [public]</span>
12183
12184
12185
12186
12187
12188
12189            </td> <!-- entry_type -->
12190
12191            <td class="entry_description">
12192              <p>The correction coefficients to correct for this camera device's
12193radial lens distortion.<wbr/></p>
12194            </td>
12195
12196            <td class="entry_units">
12197              
12198            Coefficients for a 6th-degree even radial polynomial.<wbr/>
12199          
12200            </td>
12201
12202            <td class="entry_range">
12203            </td>
12204
12205            <td class="entry_tags">
12206              <ul class="entry_tags">
12207                  <li><a href="#tag_DEPTH">DEPTH</a></li>
12208              </ul>
12209            </td>
12210
12211          </tr>
12212          <tr class="entries_header">
12213            <th class="th_details" colspan="5">Details</th>
12214          </tr>
12215          <tr class="entry_cont">
12216            <td class="entry_details" colspan="5">
12217              <p>Three cofficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> kappa_<wbr/>3]</code> that
12218can be used to correct the lens's radial geometric
12219distortion with the mapping equations:</p>
12220<pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 )
12221y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 )
12222</code></pre>
12223<p>where <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> are normalized coordinates with <code>(0,<wbr/>0)</code>
12224at the lens optical center,<wbr/> and <code>[-1,<wbr/> 1]</code> are the edges of
12225the active pixel array; and where <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the
12226corrected normalized coordinates with radial distortion
12227removed; and <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p>
12228            </td>
12229          </tr>
12230
12231
12232          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12233           <!-- end of entry -->
12234        
12235        
12236
12237      <!-- end of kind -->
12238      </tbody>
12239      <tr><td colspan="6" class="kind">dynamic</td></tr>
12240
12241      <thead class="entries_header">
12242        <tr>
12243          <th class="th_name">Property Name</th>
12244          <th class="th_type">Type</th>
12245          <th class="th_description">Description</th>
12246          <th class="th_units">Units</th>
12247          <th class="th_range">Range</th>
12248          <th class="th_tags">Tags</th>
12249        </tr>
12250      </thead>
12251
12252      <tbody>
12253
12254        
12255
12256        
12257
12258        
12259
12260        
12261
12262                
12263          <tr class="entry" id="dynamic_android.lens.aperture">
12264            <td class="entry_name
12265             " rowspan="3">
12266              android.<wbr/>lens.<wbr/>aperture
12267            </td>
12268            <td class="entry_type">
12269                <span class="entry_type_name">float</span>
12270
12271              <span class="entry_type_visibility"> [public]</span>
12272
12273
12274              <span class="entry_type_hwlevel">[full] </span>
12275
12276
12277
12278
12279            </td> <!-- entry_type -->
12280
12281            <td class="entry_description">
12282              <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
12283effective aperture diameter.<wbr/></p>
12284            </td>
12285
12286            <td class="entry_units">
12287              The f-number (f/<wbr/>N)
12288            </td>
12289
12290            <td class="entry_range">
12291              <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
12292            </td>
12293
12294            <td class="entry_tags">
12295              <ul class="entry_tags">
12296                  <li><a href="#tag_V1">V1</a></li>
12297              </ul>
12298            </td>
12299
12300          </tr>
12301          <tr class="entries_header">
12302            <th class="th_details" colspan="5">Details</th>
12303          </tr>
12304          <tr class="entry_cont">
12305            <td class="entry_details" colspan="5">
12306              <p>Setting this value is only supported on the camera devices that have a variable
12307aperture lens.<wbr/></p>
12308<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
12309this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
12310<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>
12311to achieve manual exposure control.<wbr/></p>
12312<p>The requested aperture value may take several frames to reach the
12313requested value; the camera device will report the current (intermediate)
12314aperture size in capture result metadata while the aperture is changing.<wbr/>
12315While 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>
12316<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
12317the ON modes,<wbr/> this will be overridden by the camera device
12318auto-exposure algorithm,<wbr/> the overridden values are then provided
12319back to the user in the corresponding result.<wbr/></p>
12320            </td>
12321          </tr>
12322
12323
12324          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12325           <!-- end of entry -->
12326        
12327                
12328          <tr class="entry" id="dynamic_android.lens.filterDensity">
12329            <td class="entry_name
12330             " rowspan="3">
12331              android.<wbr/>lens.<wbr/>filter<wbr/>Density
12332            </td>
12333            <td class="entry_type">
12334                <span class="entry_type_name">float</span>
12335
12336              <span class="entry_type_visibility"> [public]</span>
12337
12338
12339              <span class="entry_type_hwlevel">[full] </span>
12340
12341
12342
12343
12344            </td> <!-- entry_type -->
12345
12346            <td class="entry_description">
12347              <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
12348            </td>
12349
12350            <td class="entry_units">
12351              Exposure Value (EV)
12352            </td>
12353
12354            <td class="entry_range">
12355              <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
12356            </td>
12357
12358            <td class="entry_tags">
12359              <ul class="entry_tags">
12360                  <li><a href="#tag_V1">V1</a></li>
12361              </ul>
12362            </td>
12363
12364          </tr>
12365          <tr class="entries_header">
12366            <th class="th_details" colspan="5">Details</th>
12367          </tr>
12368          <tr class="entry_cont">
12369            <td class="entry_details" colspan="5">
12370              <p>This control will not be supported on most camera devices.<wbr/></p>
12371<p>Lens filters are typically used to lower the amount of light the
12372sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
12373step is the standard logarithmic representation,<wbr/> which are
12374non-negative,<wbr/> and inversely proportional to the amount of light
12375hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
12376in no reduction of the incoming light,<wbr/> and setting this to 2 would
12377mean that the filter is set to reduce incoming light by two stops
12378(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
12379<p>It may take several frames before the lens filter density changes
12380to the requested value.<wbr/> While the filter density is still changing,<wbr/>
12381<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12382            </td>
12383          </tr>
12384
12385
12386          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12387           <!-- end of entry -->
12388        
12389                
12390          <tr class="entry" id="dynamic_android.lens.focalLength">
12391            <td class="entry_name
12392             " rowspan="3">
12393              android.<wbr/>lens.<wbr/>focal<wbr/>Length
12394            </td>
12395            <td class="entry_type">
12396                <span class="entry_type_name">float</span>
12397
12398              <span class="entry_type_visibility"> [public]</span>
12399
12400
12401              <span class="entry_type_hwlevel">[legacy] </span>
12402
12403
12404
12405
12406            </td> <!-- entry_type -->
12407
12408            <td class="entry_description">
12409              <p>The desired lens focal length; used for optical zoom.<wbr/></p>
12410            </td>
12411
12412            <td class="entry_units">
12413              Millimeters
12414            </td>
12415
12416            <td class="entry_range">
12417              <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
12418            </td>
12419
12420            <td class="entry_tags">
12421              <ul class="entry_tags">
12422                  <li><a href="#tag_BC">BC</a></li>
12423              </ul>
12424            </td>
12425
12426          </tr>
12427          <tr class="entries_header">
12428            <th class="th_details" colspan="5">Details</th>
12429          </tr>
12430          <tr class="entry_cont">
12431            <td class="entry_details" colspan="5">
12432              <p>This setting controls the physical focal length of the camera
12433device's lens.<wbr/> Changing the focal length changes the field of
12434view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
12435<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
12436setting won't be applied instantaneously,<wbr/> and it may take several
12437frames before the lens can change to the requested focal length.<wbr/>
12438While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
12439be set to MOVING.<wbr/></p>
12440<p>Optical zoom will not be supported on most devices.<wbr/></p>
12441            </td>
12442          </tr>
12443
12444
12445          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12446           <!-- end of entry -->
12447        
12448                
12449          <tr class="entry" id="dynamic_android.lens.focusDistance">
12450            <td class="entry_name
12451             " rowspan="3">
12452              android.<wbr/>lens.<wbr/>focus<wbr/>Distance
12453            </td>
12454            <td class="entry_type">
12455                <span class="entry_type_name">float</span>
12456
12457              <span class="entry_type_visibility"> [public]</span>
12458
12459
12460              <span class="entry_type_hwlevel">[full] </span>
12461
12462
12463
12464
12465            </td> <!-- entry_type -->
12466
12467            <td class="entry_description">
12468              <p>Desired distance to plane of sharpest focus,<wbr/>
12469measured from frontmost surface of the lens.<wbr/></p>
12470            </td>
12471
12472            <td class="entry_units">
12473              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12474            </td>
12475
12476            <td class="entry_range">
12477              <p>&gt;= 0</p>
12478            </td>
12479
12480            <td class="entry_tags">
12481              <ul class="entry_tags">
12482                  <li><a href="#tag_BC">BC</a></li>
12483              </ul>
12484            </td>
12485
12486          </tr>
12487          <tr class="entries_header">
12488            <th class="th_details" colspan="5">Details</th>
12489          </tr>
12490          <tr class="entry_cont">
12491            <td class="entry_details" colspan="5">
12492              <p>Should be zero for fixed-focus cameras</p>
12493            </td>
12494          </tr>
12495
12496
12497          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12498           <!-- end of entry -->
12499        
12500                
12501          <tr class="entry" id="dynamic_android.lens.focusRange">
12502            <td class="entry_name
12503             " rowspan="3">
12504              android.<wbr/>lens.<wbr/>focus<wbr/>Range
12505            </td>
12506            <td class="entry_type">
12507                <span class="entry_type_name">float</span>
12508                <span class="entry_type_container">x</span>
12509
12510                <span class="entry_type_array">
12511                  2
12512                </span>
12513              <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
12514
12515
12516              <span class="entry_type_hwlevel">[limited] </span>
12517
12518
12519                <div class="entry_type_notes">Range of scene distances that are in focus</div>
12520
12521
12522            </td> <!-- entry_type -->
12523
12524            <td class="entry_description">
12525              <p>The range of scene distances that are in
12526sharp focus (depth of field).<wbr/></p>
12527            </td>
12528
12529            <td class="entry_units">
12530              A pair of focus distances in diopters: (near,<wbr/>
12531          far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
12532            </td>
12533
12534            <td class="entry_range">
12535              <p>&gt;=0</p>
12536            </td>
12537
12538            <td class="entry_tags">
12539              <ul class="entry_tags">
12540                  <li><a href="#tag_BC">BC</a></li>
12541              </ul>
12542            </td>
12543
12544          </tr>
12545          <tr class="entries_header">
12546            <th class="th_details" colspan="5">Details</th>
12547          </tr>
12548          <tr class="entry_cont">
12549            <td class="entry_details" colspan="5">
12550              <p>If variable focus not supported,<wbr/> can still report
12551fixed depth of field range</p>
12552            </td>
12553          </tr>
12554
12555
12556          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12557           <!-- end of entry -->
12558        
12559                
12560          <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
12561            <td class="entry_name
12562             " rowspan="3">
12563              android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
12564            </td>
12565            <td class="entry_type">
12566                <span class="entry_type_name entry_type_name_enum">byte</span>
12567
12568              <span class="entry_type_visibility"> [public]</span>
12569
12570
12571              <span class="entry_type_hwlevel">[limited] </span>
12572
12573
12574
12575                <ul class="entry_type_enum">
12576                  <li>
12577                    <span class="entry_type_enum_name">OFF</span>
12578                    <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
12579                  </li>
12580                  <li>
12581                    <span class="entry_type_enum_name">ON</span>
12582                    <span class="entry_type_enum_optional">[optional]</span>
12583                    <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
12584                  </li>
12585                </ul>
12586
12587            </td> <!-- entry_type -->
12588
12589            <td class="entry_description">
12590              <p>Sets whether the camera device uses optical image stabilization (OIS)
12591when capturing images.<wbr/></p>
12592            </td>
12593
12594            <td class="entry_units">
12595            </td>
12596
12597            <td class="entry_range">
12598              <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
12599            </td>
12600
12601            <td class="entry_tags">
12602              <ul class="entry_tags">
12603                  <li><a href="#tag_V1">V1</a></li>
12604              </ul>
12605            </td>
12606
12607          </tr>
12608          <tr class="entries_header">
12609            <th class="th_details" colspan="5">Details</th>
12610          </tr>
12611          <tr class="entry_cont">
12612            <td class="entry_details" colspan="5">
12613              <p>OIS is used to compensate for motion blur due to small
12614movements of the camera during capture.<wbr/> Unlike digital image
12615stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
12616makes use of mechanical elements to stabilize the camera
12617sensor,<wbr/> and thus allows for longer exposure times before
12618camera shake becomes apparent.<wbr/></p>
12619<p>Switching between different optical stabilization modes may take several
12620frames to initialize,<wbr/> the camera device will report the current mode in
12621capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
12622optical stabilization modes in the first several capture results may still
12623be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
12624<p>If a camera device supports both OIS and digital image stabilization
12625(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
12626interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
12627<p>Not all devices will support OIS; see
12628<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
12629available controls.<wbr/></p>
12630            </td>
12631          </tr>
12632
12633
12634          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12635           <!-- end of entry -->
12636        
12637                
12638          <tr class="entry" id="dynamic_android.lens.state">
12639            <td class="entry_name
12640             " rowspan="3">
12641              android.<wbr/>lens.<wbr/>state
12642            </td>
12643            <td class="entry_type">
12644                <span class="entry_type_name entry_type_name_enum">byte</span>
12645
12646              <span class="entry_type_visibility"> [public]</span>
12647
12648
12649              <span class="entry_type_hwlevel">[limited] </span>
12650
12651
12652
12653                <ul class="entry_type_enum">
12654                  <li>
12655                    <span class="entry_type_enum_name">STATIONARY</span>
12656                    <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/>
12657<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>
12658                  </li>
12659                  <li>
12660                    <span class="entry_type_enum_name">MOVING</span>
12661                    <span class="entry_type_enum_notes"><p>One or several of the lens parameters
12662(<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/>
12663<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
12664currently changing.<wbr/></p></span>
12665                  </li>
12666                </ul>
12667
12668            </td> <!-- entry_type -->
12669
12670            <td class="entry_description">
12671              <p>Current lens status.<wbr/></p>
12672            </td>
12673
12674            <td class="entry_units">
12675            </td>
12676
12677            <td class="entry_range">
12678            </td>
12679
12680            <td class="entry_tags">
12681              <ul class="entry_tags">
12682                  <li><a href="#tag_V1">V1</a></li>
12683              </ul>
12684            </td>
12685
12686          </tr>
12687          <tr class="entries_header">
12688            <th class="th_details" colspan="5">Details</th>
12689          </tr>
12690          <tr class="entry_cont">
12691            <td class="entry_details" colspan="5">
12692              <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/>
12693<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/>
12694they may take several frames to reach the requested values.<wbr/> This state indicates
12695the current status of the lens parameters.<wbr/></p>
12696<p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
12697either because the parameters are all fixed,<wbr/> or because the lens has had enough
12698time to reach the most recently-requested values.<wbr/>
12699If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
12700<ul>
12701<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
12702<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
12703<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/>
12704which means the optical zoom is not supported.<wbr/></li>
12705<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>
12706<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>
12707</ul>
12708<p>Then this state will always be STATIONARY.<wbr/></p>
12709<p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
12710is changing.<wbr/></p>
12711            </td>
12712          </tr>
12713
12714
12715          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12716           <!-- end of entry -->
12717        
12718                
12719          <tr class="entry" id="dynamic_android.lens.poseRotation">
12720            <td class="entry_name
12721             " rowspan="3">
12722              android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
12723            </td>
12724            <td class="entry_type">
12725                <span class="entry_type_name">float</span>
12726                <span class="entry_type_container">x</span>
12727
12728                <span class="entry_type_array">
12729                  4
12730                </span>
12731              <span class="entry_type_visibility"> [public]</span>
12732
12733
12734
12735
12736
12737
12738            </td> <!-- entry_type -->
12739
12740            <td class="entry_description">
12741              <p>The orientation of the camera relative to the sensor
12742coordinate system.<wbr/></p>
12743            </td>
12744
12745            <td class="entry_units">
12746              
12747            Quarternion coefficients
12748          
12749            </td>
12750
12751            <td class="entry_range">
12752            </td>
12753
12754            <td class="entry_tags">
12755              <ul class="entry_tags">
12756                  <li><a href="#tag_DEPTH">DEPTH</a></li>
12757              </ul>
12758            </td>
12759
12760          </tr>
12761          <tr class="entries_header">
12762            <th class="th_details" colspan="5">Details</th>
12763          </tr>
12764          <tr class="entry_cont">
12765            <td class="entry_details" colspan="5">
12766              <p>The four coefficients that describe the quarternion
12767rotation from the Android sensor coordinate system to a
12768camera-aligned coordinate system where the X-axis is
12769aligned with the long side of the image sensor,<wbr/> the Y-axis
12770is aligned with the short side of the image sensor,<wbr/> and
12771the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
12772<p>To convert from the quarternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
12773to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
12774amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
12775<pre><code> theta = 2 * acos(w)
12776a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
12777a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
12778a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
12779</code></pre>
12780<p>To create a 3x3 rotation matrix that applies the rotation
12781defined by this quarternion,<wbr/> the following matrix can be
12782used:</p>
12783<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
12784           2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
12785           2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
12786</code></pre>
12787<p>This matrix can then be used to apply the rotation to a
12788 column vector point with</p>
12789<p><code>p' = Rp</code></p>
12790<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
12791 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
12792            </td>
12793          </tr>
12794
12795
12796          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12797           <!-- end of entry -->
12798        
12799                
12800          <tr class="entry" id="dynamic_android.lens.poseTranslation">
12801            <td class="entry_name
12802             " rowspan="3">
12803              android.<wbr/>lens.<wbr/>pose<wbr/>Translation
12804            </td>
12805            <td class="entry_type">
12806                <span class="entry_type_name">float</span>
12807                <span class="entry_type_container">x</span>
12808
12809                <span class="entry_type_array">
12810                  3
12811                </span>
12812              <span class="entry_type_visibility"> [public]</span>
12813
12814
12815
12816
12817
12818
12819            </td> <!-- entry_type -->
12820
12821            <td class="entry_description">
12822              <p>Position of the camera optical center.<wbr/></p>
12823            </td>
12824
12825            <td class="entry_units">
12826              Meters
12827            </td>
12828
12829            <td class="entry_range">
12830            </td>
12831
12832            <td class="entry_tags">
12833              <ul class="entry_tags">
12834                  <li><a href="#tag_DEPTH">DEPTH</a></li>
12835              </ul>
12836            </td>
12837
12838          </tr>
12839          <tr class="entries_header">
12840            <th class="th_details" colspan="5">Details</th>
12841          </tr>
12842          <tr class="entry_cont">
12843            <td class="entry_details" colspan="5">
12844              <p>As measured in the device sensor coordinate system,<wbr/> the
12845position of the camera device's optical center,<wbr/> as a
12846three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
12847<p>To transform a world position to a camera-device centered
12848coordinate system,<wbr/> the position must be translated by this
12849vector and then rotated by <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>.<wbr/></p>
12850            </td>
12851          </tr>
12852
12853
12854          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12855           <!-- end of entry -->
12856        
12857                
12858          <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
12859            <td class="entry_name
12860             " rowspan="3">
12861              android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
12862            </td>
12863            <td class="entry_type">
12864                <span class="entry_type_name">float</span>
12865                <span class="entry_type_container">x</span>
12866
12867                <span class="entry_type_array">
12868                  5
12869                </span>
12870              <span class="entry_type_visibility"> [public]</span>
12871
12872
12873
12874
12875
12876
12877            </td> <!-- entry_type -->
12878
12879            <td class="entry_description">
12880              <p>The parameters for this camera device's intrinsic
12881calibration.<wbr/></p>
12882            </td>
12883
12884            <td class="entry_units">
12885              
12886            Pixels in the android.<wbr/>sensor.<wbr/>active<wbr/>Array<wbr/>Size coordinate
12887            system.<wbr/>
12888          
12889            </td>
12890
12891            <td class="entry_range">
12892            </td>
12893
12894            <td class="entry_tags">
12895              <ul class="entry_tags">
12896                  <li><a href="#tag_DEPTH">DEPTH</a></li>
12897              </ul>
12898            </td>
12899
12900          </tr>
12901          <tr class="entries_header">
12902            <th class="th_details" colspan="5">Details</th>
12903          </tr>
12904          <tr class="entry_cont">
12905            <td class="entry_details" colspan="5">
12906              <p>The five calibration parameters that describe the
12907transform from camera-centric 3D coordinates to sensor
12908pixel coordinates:</p>
12909<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
12910</code></pre>
12911<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
12912focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
12913axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
12914being aligned with the lens plane.<wbr/></p>
12915<p>These are typically used within a transformation matrix K:</p>
12916<pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
12917       0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
12918       0    0,<wbr/>   1 ]
12919</code></pre>
12920<p>which can then be combined with the camera pose rotation
12921<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
12922<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
12923complete transform from world coordinates to pixel
12924coordinates:</p>
12925<pre><code>P = [ K 0   * [ R t
12926     0 1 ]     0 1 ]
12927</code></pre>
12928<p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
12929and <code>p_<wbr/>s</code> being a point in the camera active pixel array
12930coordinate system,<wbr/> and with the mapping including the
12931homogeneous division by z:</p>
12932<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
12933p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
12934</code></pre>
12935<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
12936point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
12937(depth) in pixel coordinates.<wbr/></p>
12938            </td>
12939          </tr>
12940
12941
12942          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12943           <!-- end of entry -->
12944        
12945                
12946          <tr class="entry" id="dynamic_android.lens.radialDistortion">
12947            <td class="entry_name
12948             " rowspan="3">
12949              android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
12950            </td>
12951            <td class="entry_type">
12952                <span class="entry_type_name">float</span>
12953                <span class="entry_type_container">x</span>
12954
12955                <span class="entry_type_array">
12956                  3
12957                </span>
12958              <span class="entry_type_visibility"> [public]</span>
12959
12960
12961
12962
12963
12964
12965            </td> <!-- entry_type -->
12966
12967            <td class="entry_description">
12968              <p>The correction coefficients to correct for this camera device's
12969radial lens distortion.<wbr/></p>
12970            </td>
12971
12972            <td class="entry_units">
12973              
12974            Coefficients for a 6th-degree even radial polynomial.<wbr/>
12975          
12976            </td>
12977
12978            <td class="entry_range">
12979            </td>
12980
12981            <td class="entry_tags">
12982              <ul class="entry_tags">
12983                  <li><a href="#tag_DEPTH">DEPTH</a></li>
12984              </ul>
12985            </td>
12986
12987          </tr>
12988          <tr class="entries_header">
12989            <th class="th_details" colspan="5">Details</th>
12990          </tr>
12991          <tr class="entry_cont">
12992            <td class="entry_details" colspan="5">
12993              <p>Three cofficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> kappa_<wbr/>3]</code> that
12994can be used to correct the lens's radial geometric
12995distortion with the mapping equations:</p>
12996<pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 )
12997y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 )
12998</code></pre>
12999<p>where <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> are normalized coordinates with <code>(0,<wbr/>0)</code>
13000at the lens optical center,<wbr/> and <code>[-1,<wbr/> 1]</code> are the edges of
13001the active pixel array; and where <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the
13002corrected normalized coordinates with radial distortion
13003removed; and <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p>
13004            </td>
13005          </tr>
13006
13007
13008          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13009           <!-- end of entry -->
13010        
13011        
13012
13013      <!-- end of kind -->
13014      </tbody>
13015
13016  <!-- end of section -->
13017  <tr><td colspan="6" id="section_noiseReduction" class="section">noiseReduction</td></tr>
13018
13019
13020      <tr><td colspan="6" class="kind">controls</td></tr>
13021
13022      <thead class="entries_header">
13023        <tr>
13024          <th class="th_name">Property Name</th>
13025          <th class="th_type">Type</th>
13026          <th class="th_description">Description</th>
13027          <th class="th_units">Units</th>
13028          <th class="th_range">Range</th>
13029          <th class="th_tags">Tags</th>
13030        </tr>
13031      </thead>
13032
13033      <tbody>
13034
13035        
13036
13037        
13038
13039        
13040
13041        
13042
13043                
13044          <tr class="entry" id="controls_android.noiseReduction.mode">
13045            <td class="entry_name
13046             " rowspan="5">
13047              android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
13048            </td>
13049            <td class="entry_type">
13050                <span class="entry_type_name entry_type_name_enum">byte</span>
13051
13052              <span class="entry_type_visibility"> [public]</span>
13053
13054
13055              <span class="entry_type_hwlevel">[full] </span>
13056
13057
13058
13059                <ul class="entry_type_enum">
13060                  <li>
13061                    <span class="entry_type_enum_name">OFF</span>
13062                    <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
13063                  </li>
13064                  <li>
13065                    <span class="entry_type_enum_name">FAST</span>
13066                    <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
13067output.<wbr/></p></span>
13068                  </li>
13069                  <li>
13070                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
13071                    <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
13072rate relative to sensor output.<wbr/></p></span>
13073                  </li>
13074                  <li>
13075                    <span class="entry_type_enum_name">MINIMAL</span>
13076                    <span class="entry_type_enum_optional">[optional]</span>
13077                    <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
13078sensor output.<wbr/> </p></span>
13079                  </li>
13080                </ul>
13081
13082            </td> <!-- entry_type -->
13083
13084            <td class="entry_description">
13085              <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
13086            </td>
13087
13088            <td class="entry_units">
13089            </td>
13090
13091            <td class="entry_range">
13092              <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
13093            </td>
13094
13095            <td class="entry_tags">
13096              <ul class="entry_tags">
13097                  <li><a href="#tag_V1">V1</a></li>
13098              </ul>
13099            </td>
13100
13101          </tr>
13102          <tr class="entries_header">
13103            <th class="th_details" colspan="5">Details</th>
13104          </tr>
13105          <tr class="entry_cont">
13106            <td class="entry_details" colspan="5">
13107              <p>The noise reduction algorithm attempts to improve image quality by removing
13108excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
13109<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
13110YUV domain.<wbr/></p>
13111<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
13112demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
13113This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
13114<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>
13115<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
13116will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
13117will use the highest-quality noise filtering algorithms,<wbr/>
13118even if it slows down capture rate.<wbr/> FAST means the camera device will not
13119slow down capture rate when applying noise filtering.<wbr/></p>
13120<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
13121will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
13122may adjust the noise reduction parameters for best image quality based on the
13123<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
13124            </td>
13125          </tr>
13126
13127          <tr class="entries_header">
13128            <th class="th_details" colspan="5">HAL Implementation Details</th>
13129          </tr>
13130          <tr class="entry_cont">
13131            <td class="entry_details" colspan="5">
13132              <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
13133adjust the internal noise reduction parameters appropriately to get the best quality
13134images.<wbr/></p>
13135            </td>
13136          </tr>
13137
13138          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13139           <!-- end of entry -->
13140        
13141                
13142          <tr class="entry" id="controls_android.noiseReduction.strength">
13143            <td class="entry_name
13144             " rowspan="1">
13145              android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
13146            </td>
13147            <td class="entry_type">
13148                <span class="entry_type_name">byte</span>
13149
13150              <span class="entry_type_visibility"> [system]</span>
13151
13152
13153
13154
13155
13156
13157            </td> <!-- entry_type -->
13158
13159            <td class="entry_description">
13160              <p>Control the amount of noise reduction
13161applied to the images</p>
13162            </td>
13163
13164            <td class="entry_units">
13165              1-10; 10 is max noise reduction
13166            </td>
13167
13168            <td class="entry_range">
13169              <p>1 - 10</p>
13170            </td>
13171
13172            <td class="entry_tags">
13173              <ul class="entry_tags">
13174                  <li><a href="#tag_FUTURE">FUTURE</a></li>
13175              </ul>
13176            </td>
13177
13178          </tr>
13179
13180
13181          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13182           <!-- end of entry -->
13183        
13184        
13185
13186      <!-- end of kind -->
13187      </tbody>
13188      <tr><td colspan="6" class="kind">static</td></tr>
13189
13190      <thead class="entries_header">
13191        <tr>
13192          <th class="th_name">Property Name</th>
13193          <th class="th_type">Type</th>
13194          <th class="th_description">Description</th>
13195          <th class="th_units">Units</th>
13196          <th class="th_range">Range</th>
13197          <th class="th_tags">Tags</th>
13198        </tr>
13199      </thead>
13200
13201      <tbody>
13202
13203        
13204
13205        
13206
13207        
13208
13209        
13210
13211                
13212          <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
13213            <td class="entry_name
13214             " rowspan="5">
13215              android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
13216            </td>
13217            <td class="entry_type">
13218                <span class="entry_type_name">byte</span>
13219                <span class="entry_type_container">x</span>
13220
13221                <span class="entry_type_array">
13222                  n
13223                </span>
13224              <span class="entry_type_visibility"> [public as enumList]</span>
13225
13226
13227              <span class="entry_type_hwlevel">[limited] </span>
13228
13229
13230                <div class="entry_type_notes">list of enums</div>
13231
13232
13233            </td> <!-- entry_type -->
13234
13235            <td class="entry_description">
13236              <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
13237by this camera device.<wbr/></p>
13238            </td>
13239
13240            <td class="entry_units">
13241            </td>
13242
13243            <td class="entry_range">
13244              <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
13245            </td>
13246
13247            <td class="entry_tags">
13248              <ul class="entry_tags">
13249                  <li><a href="#tag_V1">V1</a></li>
13250              </ul>
13251            </td>
13252
13253          </tr>
13254          <tr class="entries_header">
13255            <th class="th_details" colspan="5">Details</th>
13256          </tr>
13257          <tr class="entry_cont">
13258            <td class="entry_details" colspan="5">
13259              <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
13260<p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
13261            </td>
13262          </tr>
13263
13264          <tr class="entries_header">
13265            <th class="th_details" colspan="5">HAL Implementation Details</th>
13266          </tr>
13267          <tr class="entry_cont">
13268            <td class="entry_details" colspan="5">
13269              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
13270on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
13271That is,<wbr/> if the highest quality implementation on the camera device does not slow down
13272capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
13273            </td>
13274          </tr>
13275
13276          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13277           <!-- end of entry -->
13278        
13279        
13280
13281      <!-- end of kind -->
13282      </tbody>
13283      <tr><td colspan="6" class="kind">dynamic</td></tr>
13284
13285      <thead class="entries_header">
13286        <tr>
13287          <th class="th_name">Property Name</th>
13288          <th class="th_type">Type</th>
13289          <th class="th_description">Description</th>
13290          <th class="th_units">Units</th>
13291          <th class="th_range">Range</th>
13292          <th class="th_tags">Tags</th>
13293        </tr>
13294      </thead>
13295
13296      <tbody>
13297
13298        
13299
13300        
13301
13302        
13303
13304        
13305
13306                
13307          <tr class="entry" id="dynamic_android.noiseReduction.mode">
13308            <td class="entry_name
13309             " rowspan="5">
13310              android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
13311            </td>
13312            <td class="entry_type">
13313                <span class="entry_type_name entry_type_name_enum">byte</span>
13314
13315              <span class="entry_type_visibility"> [public]</span>
13316
13317
13318              <span class="entry_type_hwlevel">[full] </span>
13319
13320
13321
13322                <ul class="entry_type_enum">
13323                  <li>
13324                    <span class="entry_type_enum_name">OFF</span>
13325                    <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
13326                  </li>
13327                  <li>
13328                    <span class="entry_type_enum_name">FAST</span>
13329                    <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
13330output.<wbr/></p></span>
13331                  </li>
13332                  <li>
13333                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
13334                    <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
13335rate relative to sensor output.<wbr/></p></span>
13336                  </li>
13337                  <li>
13338                    <span class="entry_type_enum_name">MINIMAL</span>
13339                    <span class="entry_type_enum_optional">[optional]</span>
13340                    <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
13341sensor output.<wbr/> </p></span>
13342                  </li>
13343                </ul>
13344
13345            </td> <!-- entry_type -->
13346
13347            <td class="entry_description">
13348              <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
13349            </td>
13350
13351            <td class="entry_units">
13352            </td>
13353
13354            <td class="entry_range">
13355              <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
13356            </td>
13357
13358            <td class="entry_tags">
13359              <ul class="entry_tags">
13360                  <li><a href="#tag_V1">V1</a></li>
13361              </ul>
13362            </td>
13363
13364          </tr>
13365          <tr class="entries_header">
13366            <th class="th_details" colspan="5">Details</th>
13367          </tr>
13368          <tr class="entry_cont">
13369            <td class="entry_details" colspan="5">
13370              <p>The noise reduction algorithm attempts to improve image quality by removing
13371excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
13372<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
13373YUV domain.<wbr/></p>
13374<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
13375demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
13376This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
13377<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>
13378<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
13379will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
13380will use the highest-quality noise filtering algorithms,<wbr/>
13381even if it slows down capture rate.<wbr/> FAST means the camera device will not
13382slow down capture rate when applying noise filtering.<wbr/></p>
13383<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
13384will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
13385may adjust the noise reduction parameters for best image quality based on the
13386<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
13387            </td>
13388          </tr>
13389
13390          <tr class="entries_header">
13391            <th class="th_details" colspan="5">HAL Implementation Details</th>
13392          </tr>
13393          <tr class="entry_cont">
13394            <td class="entry_details" colspan="5">
13395              <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
13396adjust the internal noise reduction parameters appropriately to get the best quality
13397images.<wbr/></p>
13398            </td>
13399          </tr>
13400
13401          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13402           <!-- end of entry -->
13403        
13404        
13405
13406      <!-- end of kind -->
13407      </tbody>
13408
13409  <!-- end of section -->
13410  <tr><td colspan="6" id="section_quirks" class="section">quirks</td></tr>
13411
13412
13413      <tr><td colspan="6" class="kind">static</td></tr>
13414
13415      <thead class="entries_header">
13416        <tr>
13417          <th class="th_name">Property Name</th>
13418          <th class="th_type">Type</th>
13419          <th class="th_description">Description</th>
13420          <th class="th_units">Units</th>
13421          <th class="th_range">Range</th>
13422          <th class="th_tags">Tags</th>
13423        </tr>
13424      </thead>
13425
13426      <tbody>
13427
13428        
13429
13430        
13431
13432        
13433
13434        
13435
13436                
13437          <tr class="entry" id="static_android.quirks.meteringCropRegion">
13438            <td class="entry_name
13439                entry_name_deprecated
13440             " rowspan="3">
13441              android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
13442            </td>
13443            <td class="entry_type">
13444                <span class="entry_type_name">byte</span>
13445
13446              <span class="entry_type_visibility"> [system]</span>
13447
13448
13449
13450              <span class="entry_type_deprecated">[deprecated] </span>
13451
13452
13453
13454            </td> <!-- entry_type -->
13455
13456            <td class="entry_description">
13457              <p>If set to 1,<wbr/> the camera service does not
13458scale 'normalized' coordinates with respect to the crop
13459region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
13460and output (face rectangles).<wbr/></p>
13461            </td>
13462
13463            <td class="entry_units">
13464            </td>
13465
13466            <td class="entry_range">
13467              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13468            </td>
13469
13470            <td class="entry_tags">
13471            </td>
13472
13473          </tr>
13474          <tr class="entries_header">
13475            <th class="th_details" colspan="5">Details</th>
13476          </tr>
13477          <tr class="entry_cont">
13478            <td class="entry_details" colspan="5">
13479              <p>Normalized coordinates refer to those in the
13480(-1000,<wbr/>1000) range mentioned in the
13481android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
13482<p>HAL implementations should instead always use and emit
13483sensor array-relative coordinates for all region data.<wbr/> Does
13484not need to be listed in static metadata.<wbr/> Support will be
13485removed in future versions of camera service.<wbr/></p>
13486            </td>
13487          </tr>
13488
13489
13490          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13491           <!-- end of entry -->
13492        
13493                
13494          <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
13495            <td class="entry_name
13496                entry_name_deprecated
13497             " rowspan="3">
13498              android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
13499            </td>
13500            <td class="entry_type">
13501                <span class="entry_type_name">byte</span>
13502
13503              <span class="entry_type_visibility"> [system]</span>
13504
13505
13506
13507              <span class="entry_type_deprecated">[deprecated] </span>
13508
13509
13510
13511            </td> <!-- entry_type -->
13512
13513            <td class="entry_description">
13514              <p>If set to 1,<wbr/> then the camera service always
13515switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
13516trigger.<wbr/></p>
13517            </td>
13518
13519            <td class="entry_units">
13520            </td>
13521
13522            <td class="entry_range">
13523              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13524            </td>
13525
13526            <td class="entry_tags">
13527            </td>
13528
13529          </tr>
13530          <tr class="entries_header">
13531            <th class="th_details" colspan="5">Details</th>
13532          </tr>
13533          <tr class="entry_cont">
13534            <td class="entry_details" colspan="5">
13535              <p>HAL implementations should implement AF trigger
13536modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
13537CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
13538not need to be listed in static metadata.<wbr/> Support will be
13539removed in future versions of camera service</p>
13540            </td>
13541          </tr>
13542
13543
13544          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13545           <!-- end of entry -->
13546        
13547                
13548          <tr class="entry" id="static_android.quirks.useZslFormat">
13549            <td class="entry_name
13550                entry_name_deprecated
13551             " rowspan="3">
13552              android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
13553            </td>
13554            <td class="entry_type">
13555                <span class="entry_type_name">byte</span>
13556
13557              <span class="entry_type_visibility"> [system]</span>
13558
13559
13560
13561              <span class="entry_type_deprecated">[deprecated] </span>
13562
13563
13564
13565            </td> <!-- entry_type -->
13566
13567            <td class="entry_description">
13568              <p>If set to 1,<wbr/> the camera service uses
13569CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
13570HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
13571shutter lag stream</p>
13572            </td>
13573
13574            <td class="entry_units">
13575            </td>
13576
13577            <td class="entry_range">
13578              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13579            </td>
13580
13581            <td class="entry_tags">
13582            </td>
13583
13584          </tr>
13585          <tr class="entries_header">
13586            <th class="th_details" colspan="5">Details</th>
13587          </tr>
13588          <tr class="entry_cont">
13589            <td class="entry_details" colspan="5">
13590              <p>HAL implementations should use gralloc usage flags
13591to determine that a stream will be used for
13592zero-shutter-lag,<wbr/> instead of relying on an explicit
13593format setting.<wbr/> Does not need to be listed in static
13594metadata.<wbr/> Support will be removed in future versions of
13595camera service.<wbr/></p>
13596            </td>
13597          </tr>
13598
13599
13600          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13601           <!-- end of entry -->
13602        
13603                
13604          <tr class="entry" id="static_android.quirks.usePartialResult">
13605            <td class="entry_name
13606                entry_name_deprecated
13607             " rowspan="5">
13608              android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
13609            </td>
13610            <td class="entry_type">
13611                <span class="entry_type_name">byte</span>
13612
13613              <span class="entry_type_visibility"> [hidden]</span>
13614
13615
13616
13617              <span class="entry_type_deprecated">[deprecated] </span>
13618
13619
13620
13621            </td> <!-- entry_type -->
13622
13623            <td class="entry_description">
13624              <p>If set to 1,<wbr/> the HAL will always split result
13625metadata for a single capture into multiple buffers,<wbr/>
13626returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
13627            </td>
13628
13629            <td class="entry_units">
13630            </td>
13631
13632            <td class="entry_range">
13633              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13634            </td>
13635
13636            <td class="entry_tags">
13637            </td>
13638
13639          </tr>
13640          <tr class="entries_header">
13641            <th class="th_details" colspan="5">Details</th>
13642          </tr>
13643          <tr class="entry_cont">
13644            <td class="entry_details" colspan="5">
13645              <p>Does not need to be listed in static
13646metadata.<wbr/> Support for partial results will be reworked in
13647future versions of camera service.<wbr/> This quirk will stop
13648working at that point; DO NOT USE without careful
13649consideration of future support.<wbr/></p>
13650            </td>
13651          </tr>
13652
13653          <tr class="entries_header">
13654            <th class="th_details" colspan="5">HAL Implementation Details</th>
13655          </tr>
13656          <tr class="entry_cont">
13657            <td class="entry_details" colspan="5">
13658              <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
13659for information on how to implement partial results.<wbr/></p>
13660            </td>
13661          </tr>
13662
13663          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13664           <!-- end of entry -->
13665        
13666        
13667
13668      <!-- end of kind -->
13669      </tbody>
13670      <tr><td colspan="6" class="kind">dynamic</td></tr>
13671
13672      <thead class="entries_header">
13673        <tr>
13674          <th class="th_name">Property Name</th>
13675          <th class="th_type">Type</th>
13676          <th class="th_description">Description</th>
13677          <th class="th_units">Units</th>
13678          <th class="th_range">Range</th>
13679          <th class="th_tags">Tags</th>
13680        </tr>
13681      </thead>
13682
13683      <tbody>
13684
13685        
13686
13687        
13688
13689        
13690
13691        
13692
13693                
13694          <tr class="entry" id="dynamic_android.quirks.partialResult">
13695            <td class="entry_name
13696                entry_name_deprecated
13697             " rowspan="5">
13698              android.<wbr/>quirks.<wbr/>partial<wbr/>Result
13699            </td>
13700            <td class="entry_type">
13701                <span class="entry_type_name entry_type_name_enum">byte</span>
13702
13703              <span class="entry_type_visibility"> [hidden as boolean]</span>
13704
13705
13706
13707              <span class="entry_type_deprecated">[deprecated] </span>
13708
13709
13710                <ul class="entry_type_enum">
13711                  <li>
13712                    <span class="entry_type_enum_name">FINAL</span>
13713                    <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
13714for this capture.<wbr/></p></span>
13715                  </li>
13716                  <li>
13717                    <span class="entry_type_enum_name">PARTIAL</span>
13718                    <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
13719capture.<wbr/> More result buffers for this capture will be sent
13720by the camera device,<wbr/> the last of which will be marked
13721FINAL.<wbr/></p></span>
13722                  </li>
13723                </ul>
13724
13725            </td> <!-- entry_type -->
13726
13727            <td class="entry_description">
13728              <p>Whether a result given to the framework is the
13729final one for the capture,<wbr/> or only a partial that contains a
13730subset of the full set of dynamic metadata
13731values.<wbr/></p>
13732            </td>
13733
13734            <td class="entry_units">
13735            </td>
13736
13737            <td class="entry_range">
13738              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13739              <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
13740            </td>
13741
13742            <td class="entry_tags">
13743            </td>
13744
13745          </tr>
13746          <tr class="entries_header">
13747            <th class="th_details" colspan="5">Details</th>
13748          </tr>
13749          <tr class="entry_cont">
13750            <td class="entry_details" colspan="5">
13751              <p>The entries in the result metadata buffers for a
13752single capture may not overlap,<wbr/> except for this entry.<wbr/> The
13753FINAL buffers must retain FIFO ordering relative to the
13754requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
13755always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
13756before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
13757in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
13758capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
13759only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
13760            </td>
13761          </tr>
13762
13763          <tr class="entries_header">
13764            <th class="th_details" colspan="5">HAL Implementation Details</th>
13765          </tr>
13766          <tr class="entry_cont">
13767            <td class="entry_details" colspan="5">
13768              <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
13769for information on how to implement partial results.<wbr/></p>
13770            </td>
13771          </tr>
13772
13773          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13774           <!-- end of entry -->
13775        
13776        
13777
13778      <!-- end of kind -->
13779      </tbody>
13780
13781  <!-- end of section -->
13782  <tr><td colspan="6" id="section_request" class="section">request</td></tr>
13783
13784
13785      <tr><td colspan="6" class="kind">controls</td></tr>
13786
13787      <thead class="entries_header">
13788        <tr>
13789          <th class="th_name">Property Name</th>
13790          <th class="th_type">Type</th>
13791          <th class="th_description">Description</th>
13792          <th class="th_units">Units</th>
13793          <th class="th_range">Range</th>
13794          <th class="th_tags">Tags</th>
13795        </tr>
13796      </thead>
13797
13798      <tbody>
13799
13800        
13801
13802        
13803
13804        
13805
13806        
13807
13808                
13809          <tr class="entry" id="controls_android.request.frameCount">
13810            <td class="entry_name
13811                entry_name_deprecated
13812             " rowspan="1">
13813              android.<wbr/>request.<wbr/>frame<wbr/>Count
13814            </td>
13815            <td class="entry_type">
13816                <span class="entry_type_name">int32</span>
13817
13818              <span class="entry_type_visibility"> [system]</span>
13819
13820
13821
13822              <span class="entry_type_deprecated">[deprecated] </span>
13823
13824
13825
13826            </td> <!-- entry_type -->
13827
13828            <td class="entry_description">
13829              <p>A frame counter set by the framework.<wbr/> Must
13830be maintained unchanged in output frame.<wbr/> This value monotonically
13831increases with every new result (that is,<wbr/> each new result has a unique
13832frameCount value).<wbr/></p>
13833            </td>
13834
13835            <td class="entry_units">
13836              incrementing integer
13837            </td>
13838
13839            <td class="entry_range">
13840              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13841              <p>Any int.<wbr/></p>
13842            </td>
13843
13844            <td class="entry_tags">
13845            </td>
13846
13847          </tr>
13848
13849
13850          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13851           <!-- end of entry -->
13852        
13853                
13854          <tr class="entry" id="controls_android.request.id">
13855            <td class="entry_name
13856             " rowspan="1">
13857              android.<wbr/>request.<wbr/>id
13858            </td>
13859            <td class="entry_type">
13860                <span class="entry_type_name">int32</span>
13861
13862              <span class="entry_type_visibility"> [hidden]</span>
13863
13864
13865
13866
13867
13868
13869            </td> <!-- entry_type -->
13870
13871            <td class="entry_description">
13872              <p>An application-specified ID for the current
13873request.<wbr/> Must be maintained unchanged in output
13874frame</p>
13875            </td>
13876
13877            <td class="entry_units">
13878              arbitrary integer assigned by application
13879            </td>
13880
13881            <td class="entry_range">
13882              <p>Any int</p>
13883            </td>
13884
13885            <td class="entry_tags">
13886              <ul class="entry_tags">
13887                  <li><a href="#tag_V1">V1</a></li>
13888              </ul>
13889            </td>
13890
13891          </tr>
13892
13893
13894          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13895           <!-- end of entry -->
13896        
13897                
13898          <tr class="entry" id="controls_android.request.inputStreams">
13899            <td class="entry_name
13900                entry_name_deprecated
13901             " rowspan="3">
13902              android.<wbr/>request.<wbr/>input<wbr/>Streams
13903            </td>
13904            <td class="entry_type">
13905                <span class="entry_type_name">int32</span>
13906                <span class="entry_type_container">x</span>
13907
13908                <span class="entry_type_array">
13909                  n
13910                </span>
13911              <span class="entry_type_visibility"> [system]</span>
13912
13913
13914
13915              <span class="entry_type_deprecated">[deprecated] </span>
13916
13917
13918
13919            </td> <!-- entry_type -->
13920
13921            <td class="entry_description">
13922              <p>List which camera reprocess stream is used
13923for the source of reprocessing data.<wbr/></p>
13924            </td>
13925
13926            <td class="entry_units">
13927              List of camera reprocess stream IDs
13928            </td>
13929
13930            <td class="entry_range">
13931              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13932              <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
13933            </td>
13934
13935            <td class="entry_tags">
13936              <ul class="entry_tags">
13937                  <li><a href="#tag_HAL2">HAL2</a></li>
13938              </ul>
13939            </td>
13940
13941          </tr>
13942          <tr class="entries_header">
13943            <th class="th_details" colspan="5">Details</th>
13944          </tr>
13945          <tr class="entry_cont">
13946            <td class="entry_details" colspan="5">
13947              <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
13948REPROCESS.<wbr/> Ignored otherwise</p>
13949            </td>
13950          </tr>
13951
13952
13953          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13954           <!-- end of entry -->
13955        
13956                
13957          <tr class="entry" id="controls_android.request.metadataMode">
13958            <td class="entry_name
13959             " rowspan="1">
13960              android.<wbr/>request.<wbr/>metadata<wbr/>Mode
13961            </td>
13962            <td class="entry_type">
13963                <span class="entry_type_name entry_type_name_enum">byte</span>
13964
13965              <span class="entry_type_visibility"> [system]</span>
13966
13967
13968
13969
13970
13971                <ul class="entry_type_enum">
13972                  <li>
13973                    <span class="entry_type_enum_name">NONE</span>
13974                    <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
13975for application-bound buffer data.<wbr/> If no
13976application-bound streams exist,<wbr/> no frame should be
13977placed in the output frame queue.<wbr/> If such streams
13978exist,<wbr/> a frame should be placed on the output queue
13979with null metadata but with the necessary output buffer
13980information.<wbr/> Timestamp information should still be
13981included with any output stream buffers</p></span>
13982                  </li>
13983                  <li>
13984                    <span class="entry_type_enum_name">FULL</span>
13985                    <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
13986only be produced if they are separately
13987enabled</p></span>
13988                  </li>
13989                </ul>
13990
13991            </td> <!-- entry_type -->
13992
13993            <td class="entry_description">
13994              <p>How much metadata to produce on
13995output</p>
13996            </td>
13997
13998            <td class="entry_units">
13999            </td>
14000
14001            <td class="entry_range">
14002            </td>
14003
14004            <td class="entry_tags">
14005              <ul class="entry_tags">
14006                  <li><a href="#tag_FUTURE">FUTURE</a></li>
14007              </ul>
14008            </td>
14009
14010          </tr>
14011
14012
14013          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14014           <!-- end of entry -->
14015        
14016                
14017          <tr class="entry" id="controls_android.request.outputStreams">
14018            <td class="entry_name
14019                entry_name_deprecated
14020             " rowspan="3">
14021              android.<wbr/>request.<wbr/>output<wbr/>Streams
14022            </td>
14023            <td class="entry_type">
14024                <span class="entry_type_name">int32</span>
14025                <span class="entry_type_container">x</span>
14026
14027                <span class="entry_type_array">
14028                  n
14029                </span>
14030              <span class="entry_type_visibility"> [system]</span>
14031
14032
14033
14034              <span class="entry_type_deprecated">[deprecated] </span>
14035
14036
14037
14038            </td> <!-- entry_type -->
14039
14040            <td class="entry_description">
14041              <p>Lists which camera output streams image data
14042from this capture must be sent to</p>
14043            </td>
14044
14045            <td class="entry_units">
14046              List of camera stream IDs
14047            </td>
14048
14049            <td class="entry_range">
14050              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14051              <p>List must only include streams that have been
14052created</p>
14053            </td>
14054
14055            <td class="entry_tags">
14056              <ul class="entry_tags">
14057                  <li><a href="#tag_HAL2">HAL2</a></li>
14058              </ul>
14059            </td>
14060
14061          </tr>
14062          <tr class="entries_header">
14063            <th class="th_details" colspan="5">Details</th>
14064          </tr>
14065          <tr class="entry_cont">
14066            <td class="entry_details" colspan="5">
14067              <p>If no output streams are listed,<wbr/> then the image
14068data should simply be discarded.<wbr/> The image data must
14069still be captured for metadata and statistics production,<wbr/>
14070and the lens and flash must operate as requested.<wbr/></p>
14071            </td>
14072          </tr>
14073
14074
14075          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14076           <!-- end of entry -->
14077        
14078                
14079          <tr class="entry" id="controls_android.request.type">
14080            <td class="entry_name
14081                entry_name_deprecated
14082             " rowspan="1">
14083              android.<wbr/>request.<wbr/>type
14084            </td>
14085            <td class="entry_type">
14086                <span class="entry_type_name entry_type_name_enum">byte</span>
14087
14088              <span class="entry_type_visibility"> [system]</span>
14089
14090
14091
14092              <span class="entry_type_deprecated">[deprecated] </span>
14093
14094
14095                <ul class="entry_type_enum">
14096                  <li>
14097                    <span class="entry_type_enum_name">CAPTURE</span>
14098                    <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
14099and process it according to the
14100settings</p></span>
14101                  </li>
14102                  <li>
14103                    <span class="entry_type_enum_name">REPROCESS</span>
14104                    <span class="entry_type_enum_notes"><p>Process previously captured data; the
14105<a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
14106source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
14107needed for reprocessing with [RP]</p></span>
14108                  </li>
14109                </ul>
14110
14111            </td> <!-- entry_type -->
14112
14113            <td class="entry_description">
14114              <p>The type of the request; either CAPTURE or
14115REPROCESS.<wbr/> For HAL3,<wbr/> this tag is redundant.<wbr/></p>
14116            </td>
14117
14118            <td class="entry_units">
14119            </td>
14120
14121            <td class="entry_range">
14122              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14123            </td>
14124
14125            <td class="entry_tags">
14126              <ul class="entry_tags">
14127                  <li><a href="#tag_HAL2">HAL2</a></li>
14128              </ul>
14129            </td>
14130
14131          </tr>
14132
14133
14134          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14135           <!-- end of entry -->
14136        
14137        
14138
14139      <!-- end of kind -->
14140      </tbody>
14141      <tr><td colspan="6" class="kind">static</td></tr>
14142
14143      <thead class="entries_header">
14144        <tr>
14145          <th class="th_name">Property Name</th>
14146          <th class="th_type">Type</th>
14147          <th class="th_description">Description</th>
14148          <th class="th_units">Units</th>
14149          <th class="th_range">Range</th>
14150          <th class="th_tags">Tags</th>
14151        </tr>
14152      </thead>
14153
14154      <tbody>
14155
14156        
14157
14158        
14159
14160        
14161
14162        
14163
14164                
14165          <tr class="entry" id="static_android.request.maxNumOutputStreams">
14166            <td class="entry_name
14167             " rowspan="3">
14168              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
14169            </td>
14170            <td class="entry_type">
14171                <span class="entry_type_name">int32</span>
14172                <span class="entry_type_container">x</span>
14173
14174                <span class="entry_type_array">
14175                  3
14176                </span>
14177              <span class="entry_type_visibility"> [hidden]</span>
14178
14179
14180              <span class="entry_type_hwlevel">[legacy] </span>
14181
14182
14183
14184
14185            </td> <!-- entry_type -->
14186
14187            <td class="entry_description">
14188              <p>The maximum numbers of different types of output streams
14189that can be configured and used simultaneously by a camera device.<wbr/></p>
14190            </td>
14191
14192            <td class="entry_units">
14193            </td>
14194
14195            <td class="entry_range">
14196              <p>For processed (and stalling) format streams,<wbr/> &gt;= 1.<wbr/></p>
14197<p>For Raw format (either stalling or non-stalling) streams,<wbr/> &gt;= 0.<wbr/></p>
14198<p>For processed (but not stalling) format streams,<wbr/> &gt;= 3
14199for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
14200&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>
14201            </td>
14202
14203            <td class="entry_tags">
14204              <ul class="entry_tags">
14205                  <li><a href="#tag_BC">BC</a></li>
14206              </ul>
14207            </td>
14208
14209          </tr>
14210          <tr class="entries_header">
14211            <th class="th_details" colspan="5">Details</th>
14212          </tr>
14213          <tr class="entry_cont">
14214            <td class="entry_details" colspan="5">
14215              <p>This is a 3 element tuple that contains the max number of output simultaneous
14216streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
14217formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
14218stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
14219number 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>
14220<p>This lists the upper bound of the number of output streams supported by
14221the camera device.<wbr/> Using more streams simultaneously may require more hardware and
14222CPU resources that will consume more power.<wbr/> The image format for an output stream can
14223be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
14224The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
14225into the 3 stream types as below:</p>
14226<ul>
14227<li>Processed (but stalling): any non-RAW format with a stallDurations &gt; 0.<wbr/>
14228Typically JPEG format (ImageFormat#JPEG).<wbr/></li>
14229<li>Raw formats: ImageFormat#RAW_<wbr/>SENSOR,<wbr/> ImageFormat#RAW10,<wbr/> ImageFormat#RAW12,<wbr/>
14230and ImageFormat#RAW_<wbr/>OPAQUE.<wbr/></li>
14231<li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/>
14232Typically Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888,<wbr/> ImageFormat#NV21,<wbr/> ImageFormat#YV12.<wbr/></li>
14233</ul>
14234            </td>
14235          </tr>
14236
14237
14238          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14239           <!-- end of entry -->
14240        
14241                
14242          <tr class="entry" id="static_android.request.maxNumOutputRaw">
14243            <td class="entry_name
14244             " rowspan="3">
14245              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
14246            </td>
14247            <td class="entry_type">
14248                <span class="entry_type_name">int32</span>
14249
14250              <span class="entry_type_visibility"> [public]</span>
14251
14252              <span class="entry_type_synthetic">[synthetic] </span>
14253
14254              <span class="entry_type_hwlevel">[legacy] </span>
14255
14256
14257
14258
14259            </td> <!-- entry_type -->
14260
14261            <td class="entry_description">
14262              <p>The maximum numbers of different types of output streams
14263that can be configured and used simultaneously by a camera device
14264for any <code>RAW</code> formats.<wbr/></p>
14265            </td>
14266
14267            <td class="entry_units">
14268            </td>
14269
14270            <td class="entry_range">
14271              <p>&gt;= 0</p>
14272            </td>
14273
14274            <td class="entry_tags">
14275            </td>
14276
14277          </tr>
14278          <tr class="entries_header">
14279            <th class="th_details" colspan="5">Details</th>
14280          </tr>
14281          <tr class="entry_cont">
14282            <td class="entry_details" colspan="5">
14283              <p>This value contains the max number of output simultaneous
14284streams from the raw sensor.<wbr/></p>
14285<p>This lists the upper bound of the number of output streams supported by
14286the camera device.<wbr/> Using more streams simultaneously may require more hardware and
14287CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
14288be 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>
14289<p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
14290<ul>
14291<li>ImageFormat#RAW_<wbr/>SENSOR</li>
14292<li>ImageFormat#RAW10</li>
14293<li>ImageFormat#RAW12</li>
14294<li>Opaque <code>RAW</code></li>
14295</ul>
14296<p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
14297never support raw streams.<wbr/></p>
14298            </td>
14299          </tr>
14300
14301
14302          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14303           <!-- end of entry -->
14304        
14305                
14306          <tr class="entry" id="static_android.request.maxNumOutputProc">
14307            <td class="entry_name
14308             " rowspan="3">
14309              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
14310            </td>
14311            <td class="entry_type">
14312                <span class="entry_type_name">int32</span>
14313
14314              <span class="entry_type_visibility"> [public]</span>
14315
14316              <span class="entry_type_synthetic">[synthetic] </span>
14317
14318              <span class="entry_type_hwlevel">[legacy] </span>
14319
14320
14321
14322
14323            </td> <!-- entry_type -->
14324
14325            <td class="entry_description">
14326              <p>The maximum numbers of different types of output streams
14327that can be configured and used simultaneously by a camera device
14328for any processed (but not-stalling) formats.<wbr/></p>
14329            </td>
14330
14331            <td class="entry_units">
14332            </td>
14333
14334            <td class="entry_range">
14335              <p>&gt;= 3
14336for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
14337&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>
14338            </td>
14339
14340            <td class="entry_tags">
14341            </td>
14342
14343          </tr>
14344          <tr class="entries_header">
14345            <th class="th_details" colspan="5">Details</th>
14346          </tr>
14347          <tr class="entry_cont">
14348            <td class="entry_details" colspan="5">
14349              <p>This value contains the max number of output simultaneous
14350streams for any processed (but not-stalling) formats.<wbr/></p>
14351<p>This lists the upper bound of the number of output streams supported by
14352the camera device.<wbr/> Using more streams simultaneously may require more hardware and
14353CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
14354be 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>
14355<p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
14356Typically:</p>
14357<ul>
14358<li>Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</li>
14359<li>ImageFormat#NV21</li>
14360<li>ImageFormat#YV12</li>
14361<li>Implementation-defined formats,<wbr/> i.<wbr/>e.<wbr/> StreamConfiguration#isOutputSupportedFor(Class)</li>
14362</ul>
14363<p>For full guarantees,<wbr/> query StreamConfigurationMap#getOutputStallDuration with
14364a processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
14365<p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
14366            </td>
14367          </tr>
14368
14369
14370          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14371           <!-- end of entry -->
14372        
14373                
14374          <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
14375            <td class="entry_name
14376             " rowspan="3">
14377              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
14378            </td>
14379            <td class="entry_type">
14380                <span class="entry_type_name">int32</span>
14381
14382              <span class="entry_type_visibility"> [public]</span>
14383
14384              <span class="entry_type_synthetic">[synthetic] </span>
14385
14386              <span class="entry_type_hwlevel">[legacy] </span>
14387
14388
14389
14390
14391            </td> <!-- entry_type -->
14392
14393            <td class="entry_description">
14394              <p>The maximum numbers of different types of output streams
14395that can be configured and used simultaneously by a camera device
14396for any processed (and stalling) formats.<wbr/></p>
14397            </td>
14398
14399            <td class="entry_units">
14400            </td>
14401
14402            <td class="entry_range">
14403              <p>&gt;= 1</p>
14404            </td>
14405
14406            <td class="entry_tags">
14407            </td>
14408
14409          </tr>
14410          <tr class="entries_header">
14411            <th class="th_details" colspan="5">Details</th>
14412          </tr>
14413          <tr class="entry_cont">
14414            <td class="entry_details" colspan="5">
14415              <p>This value contains the max number of output simultaneous
14416streams for any processed (but not-stalling) formats.<wbr/></p>
14417<p>This lists the upper bound of the number of output streams supported by
14418the camera device.<wbr/> Using more streams simultaneously may require more hardware and
14419CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
14420be 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>
14421<p>A processed and stalling format is defined as any non-RAW format with a stallDurations &gt; 0.<wbr/>
14422Typically only the <code>JPEG</code> format (ImageFormat#JPEG) is a stalling format.<wbr/></p>
14423<p>For full guarantees,<wbr/> query StreamConfigurationMap#getOutputStallDuration with
14424a processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
14425<p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
14426            </td>
14427          </tr>
14428
14429
14430          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14431           <!-- end of entry -->
14432        
14433                
14434          <tr class="entry" id="static_android.request.maxNumReprocessStreams">
14435            <td class="entry_name
14436                entry_name_deprecated
14437             " rowspan="3">
14438              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
14439            </td>
14440            <td class="entry_type">
14441                <span class="entry_type_name">int32</span>
14442                <span class="entry_type_container">x</span>
14443
14444                <span class="entry_type_array">
14445                  1
14446                </span>
14447              <span class="entry_type_visibility"> [system]</span>
14448
14449
14450
14451              <span class="entry_type_deprecated">[deprecated] </span>
14452
14453
14454
14455            </td> <!-- entry_type -->
14456
14457            <td class="entry_description">
14458              <p>How many reprocessing streams of any type
14459can be allocated at the same time.<wbr/></p>
14460            </td>
14461
14462            <td class="entry_units">
14463            </td>
14464
14465            <td class="entry_range">
14466              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14467              <p>&gt;= 0</p>
14468            </td>
14469
14470            <td class="entry_tags">
14471              <ul class="entry_tags">
14472                  <li><a href="#tag_HAL2">HAL2</a></li>
14473              </ul>
14474            </td>
14475
14476          </tr>
14477          <tr class="entries_header">
14478            <th class="th_details" colspan="5">Details</th>
14479          </tr>
14480          <tr class="entry_cont">
14481            <td class="entry_details" colspan="5">
14482              <p>Only used by HAL2.<wbr/>x.<wbr/></p>
14483<p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
14484            </td>
14485          </tr>
14486
14487
14488          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14489           <!-- end of entry -->
14490        
14491                
14492          <tr class="entry" id="static_android.request.maxNumInputStreams">
14493            <td class="entry_name
14494             " rowspan="5">
14495              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
14496            </td>
14497            <td class="entry_type">
14498                <span class="entry_type_name">int32</span>
14499
14500              <span class="entry_type_visibility"> [public]</span>
14501
14502
14503              <span class="entry_type_hwlevel">[full] </span>
14504
14505
14506
14507
14508            </td> <!-- entry_type -->
14509
14510            <td class="entry_description">
14511              <p>The maximum numbers of any type of input streams
14512that can be configured and used simultaneously by a camera device.<wbr/></p>
14513            </td>
14514
14515            <td class="entry_units">
14516            </td>
14517
14518            <td class="entry_range">
14519              <p>0 or 1.<wbr/></p>
14520            </td>
14521
14522            <td class="entry_tags">
14523            </td>
14524
14525          </tr>
14526          <tr class="entries_header">
14527            <th class="th_details" colspan="5">Details</th>
14528          </tr>
14529          <tr class="entry_cont">
14530            <td class="entry_details" colspan="5">
14531              <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
14532<p>The image format for a input stream can be any supported
14533format returned by StreamConfigurationMap#getInputFormats.<wbr/> When using an
14534input stream,<wbr/> there must be at least one output stream
14535configured to to receive the reprocessed images.<wbr/></p>
14536<p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
14537only the input buffer will be used to produce these output stream buffers,<wbr/> and a
14538new sensor image will not be captured.<wbr/></p>
14539<p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
14540stream image format will be OPAQUE,<wbr/> the associated output stream image format
14541should be JPEG.<wbr/></p>
14542            </td>
14543          </tr>
14544
14545          <tr class="entries_header">
14546            <th class="th_details" colspan="5">HAL Implementation Details</th>
14547          </tr>
14548          <tr class="entry_cont">
14549            <td class="entry_details" colspan="5">
14550              <p>For the reprocessing flow and controls,<wbr/> see
14551hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
14552            </td>
14553          </tr>
14554
14555          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14556           <!-- end of entry -->
14557        
14558                
14559          <tr class="entry" id="static_android.request.pipelineMaxDepth">
14560            <td class="entry_name
14561             " rowspan="5">
14562              android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
14563            </td>
14564            <td class="entry_type">
14565                <span class="entry_type_name">byte</span>
14566
14567              <span class="entry_type_visibility"> [public]</span>
14568
14569
14570              <span class="entry_type_hwlevel">[legacy] </span>
14571
14572
14573
14574
14575            </td> <!-- entry_type -->
14576
14577            <td class="entry_description">
14578              <p>Specifies the number of maximum pipeline stages a frame
14579has to go through from when it's exposed to when it's available
14580to the framework.<wbr/></p>
14581            </td>
14582
14583            <td class="entry_units">
14584            </td>
14585
14586            <td class="entry_range">
14587            </td>
14588
14589            <td class="entry_tags">
14590            </td>
14591
14592          </tr>
14593          <tr class="entries_header">
14594            <th class="th_details" colspan="5">Details</th>
14595          </tr>
14596          <tr class="entry_cont">
14597            <td class="entry_details" colspan="5">
14598              <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
14599one stage to readout) from the sensor.<wbr/> The ISP then usually adds
14600its own stages to do custom HW processing.<wbr/> Further stages may be
14601added by SW processing.<wbr/></p>
14602<p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
14603processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
14604depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
14605the max pipeline depth.<wbr/></p>
14606<p>A pipeline depth of X stages is equivalent to a pipeline latency of
14607X frame intervals.<wbr/></p>
14608<p>This value will be 8 or less.<wbr/></p>
14609            </td>
14610          </tr>
14611
14612          <tr class="entries_header">
14613            <th class="th_details" colspan="5">HAL Implementation Details</th>
14614          </tr>
14615          <tr class="entry_cont">
14616            <td class="entry_details" colspan="5">
14617              <p>This value should be 4 or less.<wbr/></p>
14618            </td>
14619          </tr>
14620
14621          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14622           <!-- end of entry -->
14623        
14624                
14625          <tr class="entry" id="static_android.request.partialResultCount">
14626            <td class="entry_name
14627             " rowspan="3">
14628              android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
14629            </td>
14630            <td class="entry_type">
14631                <span class="entry_type_name">int32</span>
14632
14633              <span class="entry_type_visibility"> [public]</span>
14634
14635
14636
14637
14638
14639
14640            </td> <!-- entry_type -->
14641
14642            <td class="entry_description">
14643              <p>Defines how many sub-components
14644a result will be composed of.<wbr/></p>
14645            </td>
14646
14647            <td class="entry_units">
14648            </td>
14649
14650            <td class="entry_range">
14651              <p>&gt;= 1</p>
14652            </td>
14653
14654            <td class="entry_tags">
14655            </td>
14656
14657          </tr>
14658          <tr class="entries_header">
14659            <th class="th_details" colspan="5">Details</th>
14660          </tr>
14661          <tr class="entry_cont">
14662            <td class="entry_details" colspan="5">
14663              <p>In order to combat the pipeline latency,<wbr/> partial results
14664may be delivered to the application layer from the camera device as
14665soon as they are available.<wbr/></p>
14666<p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
14667results are not supported,<wbr/> and only the final TotalCaptureResult will
14668be produced by the camera device.<wbr/></p>
14669<p>A typical use case for this might be: after requesting an
14670auto-focus (AF) lock the new AF state might be available 50%
14671of the way through the pipeline.<wbr/>  The camera device could
14672then immediately dispatch this state via a partial result to
14673the application,<wbr/> and the rest of the metadata via later
14674partial results.<wbr/></p>
14675            </td>
14676          </tr>
14677
14678
14679          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14680           <!-- end of entry -->
14681        
14682                
14683          <tr class="entry" id="static_android.request.availableCapabilities">
14684            <td class="entry_name
14685             " rowspan="5">
14686              android.<wbr/>request.<wbr/>available<wbr/>Capabilities
14687            </td>
14688            <td class="entry_type">
14689                <span class="entry_type_name entry_type_name_enum">byte</span>
14690                <span class="entry_type_container">x</span>
14691
14692                <span class="entry_type_array">
14693                  n
14694                </span>
14695              <span class="entry_type_visibility"> [public]</span>
14696
14697
14698              <span class="entry_type_hwlevel">[legacy] </span>
14699
14700
14701
14702                <ul class="entry_type_enum">
14703                  <li>
14704                    <span class="entry_type_enum_name">BACKWARD_COMPATIBLE</span>
14705                    <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
14706device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
14707supports.<wbr/></p>
14708<p>This capability is listed by all devices,<wbr/> and
14709indicates that the camera device has a feature set
14710that's comparable to the baseline requirements for the
14711older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p></span>
14712                  </li>
14713                  <li>
14714                    <span class="entry_type_enum_name">MANUAL_SENSOR</span>
14715                    <span class="entry_type_enum_optional">[optional]</span>
14716                    <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
14717as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
14718The camera device supports basic manual control of the sensor image
14719acquisition related stages.<wbr/> This means the following controls are
14720guaranteed to be supported:</p>
14721<ul>
14722<li>Manual frame duration control<ul>
14723<li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
14724<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
14725</ul>
14726</li>
14727<li>Manual exposure control<ul>
14728<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
14729<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
14730</ul>
14731</li>
14732<li>Manual sensitivity control<ul>
14733<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
14734<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
14735</ul>
14736</li>
14737<li>Manual lens control (if the lens is adjustable)<ul>
14738<li>android.<wbr/>lens.<wbr/>*</li>
14739</ul>
14740</li>
14741<li>Manual flash control (if a flash unit is present)<ul>
14742<li>android.<wbr/>flash.<wbr/>*</li>
14743</ul>
14744</li>
14745<li>Manual black level locking<ul>
14746<li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
14747</ul>
14748</li>
14749<li>Auto exposure lock<ul>
14750<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
14751</ul>
14752</li>
14753</ul>
14754<p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
14755device will accurately report the values applied by 3A in the
14756result.<wbr/></p>
14757<p>A given camera device may also support additional manual sensor controls,<wbr/>
14758but this capability only covers the above list of controls.<wbr/></p>
14759<p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
14760additionally return a min frame duration that is greater than
14761zero for each supported size-format combination.<wbr/></p></span>
14762                  </li>
14763                  <li>
14764                    <span class="entry_type_enum_name">MANUAL_POST_PROCESSING</span>
14765                    <span class="entry_type_enum_optional">[optional]</span>
14766                    <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
14767The camera device supports basic manual control of the image post-processing
14768stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
14769<ul>
14770<li>
14771<p>Manual tonemap control</p>
14772<ul>
14773<li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
14774<li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
14775<li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
14776<li><a href="#dynamic_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
14777<li><a href="#dynamic_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
14778</ul>
14779</li>
14780<li>
14781<p>Manual white balance control</p>
14782<ul>
14783<li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
14784<li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
14785</ul>
14786</li>
14787<li>Manual lens shading map control<ul>
14788<li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
14789<li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
14790<li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
14791<li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
14792</ul>
14793</li>
14794<li>Manual aberration correction control (if aberration correction is supported)<ul>
14795<li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
14796<li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
14797</ul>
14798</li>
14799<li>Auto white balance lock<ul>
14800<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
14801</ul>
14802</li>
14803</ul>
14804<p>If auto white balance is enabled,<wbr/> then the camera device
14805will accurately report the values applied by AWB in the result.<wbr/></p>
14806<p>A given camera device may also support additional post-processing
14807controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span>
14808                  </li>
14809                  <li>
14810                    <span class="entry_type_enum_name">RAW</span>
14811                    <span class="entry_type_enum_optional">[optional]</span>
14812                    <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
14813metadata for interpreting them.<wbr/></p>
14814<p>Devices supporting the RAW capability allow both for
14815saving DNG files,<wbr/> and for direct application processing of
14816raw sensor images.<wbr/></p>
14817<ul>
14818<li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
14819<li>The maximum available resolution for RAW_<wbr/>SENSOR streams
14820  will match either the value in
14821  <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
14822  <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
14823<li>All DNG-related optional metadata entries are provided
14824  by the camera device.<wbr/></li>
14825</ul></span>
14826                  </li>
14827                  <li>
14828                    <span class="entry_type_enum_name">OPAQUE_REPROCESSING</span>
14829                    <span class="entry_type_enum_optional">[optional]</span>
14830                    <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
14831<ul>
14832<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>
14833<li>ImageFormat#PRIVATE is supported as an output/<wbr/>input format,<wbr/> that is,<wbr/>
14834  ImageFormat#PRIVATE is included in the lists of formats returned by
14835  StreamConfigurationMap#getInputFormats and
14836  StreamConfigurationMap#getOutputFormats.<wbr/></li>
14837<li>StreamConfigurationMap#getValidOutputFormatsForInput returns non empty int[] for
14838  each supported input format returned by StreamConfigurationMap#getInputFormats.<wbr/></li>
14839<li>Each size returned by StreamConfigurationMap#getInputSizes(ImageFormat#PRIVATE)
14840  is also included in StreamConfigurationMap#getOutputSizes(ImageFormat#PRIVATE)</li>
14841<li>Using ImageFormat#PRIVATE does not cause a frame rate drop
14842  relative to the sensor's maximum capture rate (at that
14843  resolution).<wbr/></li>
14844<li>ImageFormat#PRIVATE will be reprocessable into both YUV_<wbr/>420_<wbr/>888
14845  and JPEG formats.<wbr/></li>
14846<li>The maximum available resolution for OPAQUE streams
14847  (both input/<wbr/>output) will match the maximum available
14848  resolution of JPEG streams.<wbr/></li>
14849<li>Only below controls are effective for reprocessing requests and
14850  will be present in capture results,<wbr/> other controls in reprocess
14851  requests will be ignored by the camera device.<wbr/><ul>
14852<li>android.<wbr/>jpeg.<wbr/>*</li>
14853<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
14854<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
14855</ul>
14856</li>
14857</ul></span>
14858                  </li>
14859                  <li>
14860                    <span class="entry_type_enum_name">READ_SENSOR_SETTINGS</span>
14861                    <span class="entry_type_enum_optional">[optional]</span>
14862                    <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
14863the sensor controls while the built-in 3A algorithm is running.<wbr/>  This allows
14864reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
14865<p>The values reported for the following controls are guaranteed to be available
14866in the CaptureResult,<wbr/> including when 3A is enabled:</p>
14867<ul>
14868<li>Exposure control<ul>
14869<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
14870</ul>
14871</li>
14872<li>Sensitivity control<ul>
14873<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
14874</ul>
14875</li>
14876<li>Lens controls (if the lens is adjustable)<ul>
14877<li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
14878<li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
14879</ul>
14880</li>
14881</ul>
14882<p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
14883always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
14884                  </li>
14885                  <li>
14886                    <span class="entry_type_enum_name">BURST_CAPTURE</span>
14887                    <span class="entry_type_enum_optional">[optional]</span>
14888                    <span class="entry_type_enum_notes"><p>The camera device supports capturing maximum-resolution
14889images at &gt;= 20 frames per second,<wbr/> in at least the
14890uncompressed YUV format,<wbr/> when post-processing settings
14891are set to FAST.<wbr/></p>
14892<p>More specifically,<wbr/> this means that a size matching the
14893camera device's active array size is listed as a
14894supported size for the YUV_<wbr/>420_<wbr/>888 format in
14895<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>,<wbr/> the minimum frame
14896duration for that format and size is &lt;= 1/<wbr/>20 s,<wbr/> and
14897the <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a> entry
14898lists at least one FPS range where the minimum FPS is</p>
14899<blockquote>
14900<p>= 1 /<wbr/> minimumFrameDuration for the maximum-size
14901YUV_<wbr/>420_<wbr/>888 format.<wbr/></p>
14902</blockquote>
14903<p>In addition,<wbr/> the <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> field is
14904guaranted to have a value between 0 and 4,<wbr/> inclusive.<wbr/>
14905<a href="#static_android.control.aeLockAvailable">android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available</a> and
14906<a href="#static_android.control.awbLockAvailable">android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available</a> are also guaranteed
14907to be <code>true</code> so burst capture with these two locks ON
14908yields consistent image output.<wbr/></p>
14909<p>On a camera device that reports the HIGH_<wbr/>RESOLUTION hardware
14910level,<wbr/> meaning the device supports very large capture sizes,<wbr/>
14911BURST_<wbr/>CAPTURE means that at least 8-megapixel images can be
14912captured at <code>&gt;=</code> 20 fps,<wbr/> and maximum-resolution images can be
14913captured at <code>&gt;=</code> 10 fps.<wbr/></p></span>
14914                  </li>
14915                  <li>
14916                    <span class="entry_type_enum_name">YUV_REPROCESSING</span>
14917                    <span class="entry_type_enum_optional">[optional]</span>
14918                    <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
14919OPAQUE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
14920following:</p>
14921<ul>
14922<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>
14923<li>YUV_<wbr/>420_<wbr/>888 is supported as an output/<wbr/>input format,<wbr/> that is,<wbr/>
14924  YUV_<wbr/>420_<wbr/>888 is included in the lists of formats returned by
14925  StreamConfigurationMap#getInputFormats and
14926  StreamConfigurationMap#getOutputFormats.<wbr/></li>
14927<li>StreamConfigurationMap#getValidOutputFormatsForInput returns non empty int[] for
14928  each supported input format returned by StreamConfigurationMap#getInputFormats.<wbr/></li>
14929<li>Each size returned by Stream<wbr/>Configuration<wbr/>Map#get<wbr/>Input<wbr/>Sizes(YUV_<wbr/>420_<wbr/>888)
14930  is also included in Stream<wbr/>Configuration<wbr/>Map#get<wbr/>Output<wbr/>Sizes(YUV_<wbr/>420_<wbr/>888)</li>
14931<li>Using YUV_<wbr/>420_<wbr/>888 does not cause a frame rate drop
14932  relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
14933<li>YUV_<wbr/>420_<wbr/>888 will be reprocessable into both YUV_<wbr/>420_<wbr/>888
14934  and JPEG formats.<wbr/></li>
14935<li>The maximum available resolution for YUV_<wbr/>420_<wbr/>888 streams
14936  (both input/<wbr/>output) will match the maximum available
14937  resolution of JPEG streams.<wbr/></li>
14938<li>Only the below controls are effective for reprocessing requests and will be
14939  present in capture results.<wbr/> The reprocess requests are from the original capture
14940  results that are assocaited with the intermidate YUV_<wbr/>420_<wbr/>888 output buffers.<wbr/>
14941  All other controls in the reprocess requests will be ignored by the camera device.<wbr/><ul>
14942<li>android.<wbr/>jpeg.<wbr/>*</li>
14943<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
14944<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
14945<li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
14946</ul>
14947</li>
14948</ul></span>
14949                  </li>
14950                </ul>
14951
14952            </td> <!-- entry_type -->
14953
14954            <td class="entry_description">
14955              <p>List of capabilities that this camera device
14956advertises as fully supporting.<wbr/></p>
14957            </td>
14958
14959            <td class="entry_units">
14960            </td>
14961
14962            <td class="entry_range">
14963            </td>
14964
14965            <td class="entry_tags">
14966            </td>
14967
14968          </tr>
14969          <tr class="entries_header">
14970            <th class="th_details" colspan="5">Details</th>
14971          </tr>
14972          <tr class="entry_cont">
14973            <td class="entry_details" colspan="5">
14974              <p>A capability is a contract that the camera device makes in order
14975to be able to satisfy one or more use cases.<wbr/></p>
14976<p>Listing a capability guarantees that the whole set of features
14977required to support a common use will all be available.<wbr/></p>
14978<p>Using a subset of the functionality provided by an unsupported
14979capability may be possible on a specific camera device implementation;
14980to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
14981<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
14982<a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
14983<p>The following capabilities are guaranteed to be available on
14984<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
14985<ul>
14986<li>MANUAL_<wbr/>SENSOR</li>
14987<li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
14988</ul>
14989<p>Other capabilities may be available on either FULL or LIMITED
14990devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
14991            </td>
14992          </tr>
14993
14994          <tr class="entries_header">
14995            <th class="th_details" colspan="5">HAL Implementation Details</th>
14996          </tr>
14997          <tr class="entry_cont">
14998            <td class="entry_details" colspan="5">
14999              <p>Additional constraint details per-capability will be available
15000in the Compatibility Test Suite.<wbr/></p>
15001<p>Minimum baseline requirements required for the
15002BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
15003Instead refer to "BC" tags and the camera CTS tests in the
15004android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
15005<p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
15006<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
15007request and the result in order to be considered to be
15008capability-compliant.<wbr/></p>
15009<p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
15010then exposure time must be configurable via the request <em>and</em>
15011the actual exposure applied must be available via
15012the result.<wbr/></p>
15013<p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
15014<a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
15015<p>For OPAQUE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
15016hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
15017            </td>
15018          </tr>
15019
15020          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15021           <!-- end of entry -->
15022        
15023                
15024          <tr class="entry" id="static_android.request.availableRequestKeys">
15025            <td class="entry_name
15026             " rowspan="5">
15027              android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
15028            </td>
15029            <td class="entry_type">
15030                <span class="entry_type_name">int32</span>
15031                <span class="entry_type_container">x</span>
15032
15033                <span class="entry_type_array">
15034                  n
15035                </span>
15036              <span class="entry_type_visibility"> [hidden]</span>
15037
15038
15039              <span class="entry_type_hwlevel">[legacy] </span>
15040
15041
15042
15043
15044            </td> <!-- entry_type -->
15045
15046            <td class="entry_description">
15047              <p>A list of all keys that the camera device has available
15048to use with CaptureRequest.<wbr/></p>
15049            </td>
15050
15051            <td class="entry_units">
15052            </td>
15053
15054            <td class="entry_range">
15055            </td>
15056
15057            <td class="entry_tags">
15058            </td>
15059
15060          </tr>
15061          <tr class="entries_header">
15062            <th class="th_details" colspan="5">Details</th>
15063          </tr>
15064          <tr class="entry_cont">
15065            <td class="entry_details" colspan="5">
15066              <p>Attempting to set a key into a CaptureRequest that is not
15067listed here will result in an invalid request and will be rejected
15068by the camera device.<wbr/></p>
15069<p>This field can be used to query the feature set of a camera device
15070at a more granular level than capabilities.<wbr/> This is especially
15071important for optional keys that are not listed under any capability
15072in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
15073            </td>
15074          </tr>
15075
15076          <tr class="entries_header">
15077            <th class="th_details" colspan="5">HAL Implementation Details</th>
15078          </tr>
15079          <tr class="entry_cont">
15080            <td class="entry_details" colspan="5">
15081              <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
15082extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
15083<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
15084vendor extensions API and not against this field.<wbr/></p>
15085<p>The HAL must not consume any request tags that are not listed either
15086here or in the vendor tag list.<wbr/></p>
15087<p>The public camera2 API will always make the vendor tags visible
15088via CameraCharacteristics#getAvailableCaptureRequestKeys.<wbr/></p>
15089            </td>
15090          </tr>
15091
15092          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15093           <!-- end of entry -->
15094        
15095                
15096          <tr class="entry" id="static_android.request.availableResultKeys">
15097            <td class="entry_name
15098             " rowspan="5">
15099              android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
15100            </td>
15101            <td class="entry_type">
15102                <span class="entry_type_name">int32</span>
15103                <span class="entry_type_container">x</span>
15104
15105                <span class="entry_type_array">
15106                  n
15107                </span>
15108              <span class="entry_type_visibility"> [hidden]</span>
15109
15110
15111              <span class="entry_type_hwlevel">[legacy] </span>
15112
15113
15114
15115
15116            </td> <!-- entry_type -->
15117
15118            <td class="entry_description">
15119              <p>A list of all keys that the camera device has available
15120to use with CaptureResult.<wbr/></p>
15121            </td>
15122
15123            <td class="entry_units">
15124            </td>
15125
15126            <td class="entry_range">
15127            </td>
15128
15129            <td class="entry_tags">
15130            </td>
15131
15132          </tr>
15133          <tr class="entries_header">
15134            <th class="th_details" colspan="5">Details</th>
15135          </tr>
15136          <tr class="entry_cont">
15137            <td class="entry_details" colspan="5">
15138              <p>Attempting to get a key from a CaptureResult that is not
15139listed here will always return a <code>null</code> value.<wbr/> Getting a key from
15140a CaptureResult that is listed here will generally never return a <code>null</code>
15141value.<wbr/></p>
15142<p>The following keys may return <code>null</code> unless they are enabled:</p>
15143<ul>
15144<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>
15145</ul>
15146<p>(Those sometimes-null keys will nevertheless be listed here
15147if they are available.<wbr/>)</p>
15148<p>This field can be used to query the feature set of a camera device
15149at a more granular level than capabilities.<wbr/> This is especially
15150important for optional keys that are not listed under any capability
15151in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
15152            </td>
15153          </tr>
15154
15155          <tr class="entries_header">
15156            <th class="th_details" colspan="5">HAL Implementation Details</th>
15157          </tr>
15158          <tr class="entry_cont">
15159            <td class="entry_details" colspan="5">
15160              <p>Tags listed here must always have an entry in the result metadata,<wbr/>
15161even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
15162matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
15163<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
15164extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
15165<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
15166vendor extensions API and not against this field.<wbr/></p>
15167<p>The HAL must not produce any result tags that are not listed either
15168here or in the vendor tag list.<wbr/></p>
15169<p>The public camera2 API will always make the vendor tags visible
15170via CameraCharacteristics#getAvailableCaptureResultKeys.<wbr/></p>
15171            </td>
15172          </tr>
15173
15174          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15175           <!-- end of entry -->
15176        
15177                
15178          <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
15179            <td class="entry_name
15180             " rowspan="5">
15181              android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
15182            </td>
15183            <td class="entry_type">
15184                <span class="entry_type_name">int32</span>
15185                <span class="entry_type_container">x</span>
15186
15187                <span class="entry_type_array">
15188                  n
15189                </span>
15190              <span class="entry_type_visibility"> [hidden]</span>
15191
15192
15193              <span class="entry_type_hwlevel">[legacy] </span>
15194
15195
15196
15197
15198            </td> <!-- entry_type -->
15199
15200            <td class="entry_description">
15201              <p>A list of all keys that the camera device has available
15202to use with CameraCharacteristics.<wbr/></p>
15203            </td>
15204
15205            <td class="entry_units">
15206            </td>
15207
15208            <td class="entry_range">
15209            </td>
15210
15211            <td class="entry_tags">
15212            </td>
15213
15214          </tr>
15215          <tr class="entries_header">
15216            <th class="th_details" colspan="5">Details</th>
15217          </tr>
15218          <tr class="entry_cont">
15219            <td class="entry_details" colspan="5">
15220              <p>This entry follows the same rules as
15221<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
15222CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
15223details.<wbr/></p>
15224            </td>
15225          </tr>
15226
15227          <tr class="entries_header">
15228            <th class="th_details" colspan="5">HAL Implementation Details</th>
15229          </tr>
15230          <tr class="entry_cont">
15231            <td class="entry_details" colspan="5">
15232              <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
15233even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
15234matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
15235<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
15236extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
15237<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
15238vendor extensions API and not against this field.<wbr/></p>
15239<p>The HAL must not have any tags in its static info that are not listed
15240either here or in the vendor tag list.<wbr/></p>
15241<p>The public camera2 API will always make the vendor tags visible
15242via CameraCharacteristics#getKeys.<wbr/></p>
15243            </td>
15244          </tr>
15245
15246          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15247           <!-- end of entry -->
15248        
15249        
15250
15251      <!-- end of kind -->
15252      </tbody>
15253      <tr><td colspan="6" class="kind">dynamic</td></tr>
15254
15255      <thead class="entries_header">
15256        <tr>
15257          <th class="th_name">Property Name</th>
15258          <th class="th_type">Type</th>
15259          <th class="th_description">Description</th>
15260          <th class="th_units">Units</th>
15261          <th class="th_range">Range</th>
15262          <th class="th_tags">Tags</th>
15263        </tr>
15264      </thead>
15265
15266      <tbody>
15267
15268        
15269
15270        
15271
15272        
15273
15274        
15275
15276                
15277          <tr class="entry" id="dynamic_android.request.frameCount">
15278            <td class="entry_name
15279                entry_name_deprecated
15280             " rowspan="3">
15281              android.<wbr/>request.<wbr/>frame<wbr/>Count
15282            </td>
15283            <td class="entry_type">
15284                <span class="entry_type_name">int32</span>
15285
15286              <span class="entry_type_visibility"> [hidden]</span>
15287
15288
15289
15290              <span class="entry_type_deprecated">[deprecated] </span>
15291
15292
15293
15294            </td> <!-- entry_type -->
15295
15296            <td class="entry_description">
15297              <p>A frame counter set by the framework.<wbr/> This value monotonically
15298increases with every new result (that is,<wbr/> each new result has a unique
15299frameCount value).<wbr/></p>
15300            </td>
15301
15302            <td class="entry_units">
15303              count of frames
15304            </td>
15305
15306            <td class="entry_range">
15307              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15308              <p>&gt; 0</p>
15309            </td>
15310
15311            <td class="entry_tags">
15312            </td>
15313
15314          </tr>
15315          <tr class="entries_header">
15316            <th class="th_details" colspan="5">Details</th>
15317          </tr>
15318          <tr class="entry_cont">
15319            <td class="entry_details" colspan="5">
15320              <p>Reset on release()</p>
15321            </td>
15322          </tr>
15323
15324
15325          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15326           <!-- end of entry -->
15327        
15328                
15329          <tr class="entry" id="dynamic_android.request.id">
15330            <td class="entry_name
15331             " rowspan="1">
15332              android.<wbr/>request.<wbr/>id
15333            </td>
15334            <td class="entry_type">
15335                <span class="entry_type_name">int32</span>
15336
15337              <span class="entry_type_visibility"> [hidden]</span>
15338
15339
15340
15341
15342
15343
15344            </td> <!-- entry_type -->
15345
15346            <td class="entry_description">
15347              <p>An application-specified ID for the current
15348request.<wbr/> Must be maintained unchanged in output
15349frame</p>
15350            </td>
15351
15352            <td class="entry_units">
15353              arbitrary integer assigned by application
15354            </td>
15355
15356            <td class="entry_range">
15357              <p>Any int</p>
15358            </td>
15359
15360            <td class="entry_tags">
15361              <ul class="entry_tags">
15362                  <li><a href="#tag_V1">V1</a></li>
15363              </ul>
15364            </td>
15365
15366          </tr>
15367
15368
15369          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15370           <!-- end of entry -->
15371        
15372                
15373          <tr class="entry" id="dynamic_android.request.metadataMode">
15374            <td class="entry_name
15375             " rowspan="1">
15376              android.<wbr/>request.<wbr/>metadata<wbr/>Mode
15377            </td>
15378            <td class="entry_type">
15379                <span class="entry_type_name entry_type_name_enum">byte</span>
15380
15381              <span class="entry_type_visibility"> [system]</span>
15382
15383
15384
15385
15386
15387                <ul class="entry_type_enum">
15388                  <li>
15389                    <span class="entry_type_enum_name">NONE</span>
15390                    <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
15391for application-bound buffer data.<wbr/> If no
15392application-bound streams exist,<wbr/> no frame should be
15393placed in the output frame queue.<wbr/> If such streams
15394exist,<wbr/> a frame should be placed on the output queue
15395with null metadata but with the necessary output buffer
15396information.<wbr/> Timestamp information should still be
15397included with any output stream buffers</p></span>
15398                  </li>
15399                  <li>
15400                    <span class="entry_type_enum_name">FULL</span>
15401                    <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
15402only be produced if they are separately
15403enabled</p></span>
15404                  </li>
15405                </ul>
15406
15407            </td> <!-- entry_type -->
15408
15409            <td class="entry_description">
15410              <p>How much metadata to produce on
15411output</p>
15412            </td>
15413
15414            <td class="entry_units">
15415            </td>
15416
15417            <td class="entry_range">
15418            </td>
15419
15420            <td class="entry_tags">
15421              <ul class="entry_tags">
15422                  <li><a href="#tag_FUTURE">FUTURE</a></li>
15423              </ul>
15424            </td>
15425
15426          </tr>
15427
15428
15429          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15430           <!-- end of entry -->
15431        
15432                
15433          <tr class="entry" id="dynamic_android.request.outputStreams">
15434            <td class="entry_name
15435                entry_name_deprecated
15436             " rowspan="3">
15437              android.<wbr/>request.<wbr/>output<wbr/>Streams
15438            </td>
15439            <td class="entry_type">
15440                <span class="entry_type_name">int32</span>
15441                <span class="entry_type_container">x</span>
15442
15443                <span class="entry_type_array">
15444                  n
15445                </span>
15446              <span class="entry_type_visibility"> [system]</span>
15447
15448
15449
15450              <span class="entry_type_deprecated">[deprecated] </span>
15451
15452
15453
15454            </td> <!-- entry_type -->
15455
15456            <td class="entry_description">
15457              <p>Lists which camera output streams image data
15458from this capture must be sent to</p>
15459            </td>
15460
15461            <td class="entry_units">
15462              List of camera stream IDs
15463            </td>
15464
15465            <td class="entry_range">
15466              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15467              <p>List must only include streams that have been
15468created</p>
15469            </td>
15470
15471            <td class="entry_tags">
15472              <ul class="entry_tags">
15473                  <li><a href="#tag_HAL2">HAL2</a></li>
15474              </ul>
15475            </td>
15476
15477          </tr>
15478          <tr class="entries_header">
15479            <th class="th_details" colspan="5">Details</th>
15480          </tr>
15481          <tr class="entry_cont">
15482            <td class="entry_details" colspan="5">
15483              <p>If no output streams are listed,<wbr/> then the image
15484data should simply be discarded.<wbr/> The image data must
15485still be captured for metadata and statistics production,<wbr/>
15486and the lens and flash must operate as requested.<wbr/></p>
15487            </td>
15488          </tr>
15489
15490
15491          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15492           <!-- end of entry -->
15493        
15494                
15495          <tr class="entry" id="dynamic_android.request.pipelineDepth">
15496            <td class="entry_name
15497             " rowspan="5">
15498              android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
15499            </td>
15500            <td class="entry_type">
15501                <span class="entry_type_name">byte</span>
15502
15503              <span class="entry_type_visibility"> [public]</span>
15504
15505
15506              <span class="entry_type_hwlevel">[legacy] </span>
15507
15508
15509
15510
15511            </td> <!-- entry_type -->
15512
15513            <td class="entry_description">
15514              <p>Specifies the number of pipeline stages the frame went
15515through from when it was exposed to when the final completed result
15516was available to the framework.<wbr/></p>
15517            </td>
15518
15519            <td class="entry_units">
15520            </td>
15521
15522            <td class="entry_range">
15523              <p>&lt;= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
15524            </td>
15525
15526            <td class="entry_tags">
15527            </td>
15528
15529          </tr>
15530          <tr class="entries_header">
15531            <th class="th_details" colspan="5">Details</th>
15532          </tr>
15533          <tr class="entry_cont">
15534            <td class="entry_details" colspan="5">
15535              <p>Depending on what settings are used in the request,<wbr/> and
15536what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
15537and some pipeline stages skipped.<wbr/></p>
15538<p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
15539            </td>
15540          </tr>
15541
15542          <tr class="entries_header">
15543            <th class="th_details" colspan="5">HAL Implementation Details</th>
15544          </tr>
15545          <tr class="entry_cont">
15546            <td class="entry_details" colspan="5">
15547              <p>This value must always represent the accurate count of how many
15548pipeline stages were actually used.<wbr/></p>
15549            </td>
15550          </tr>
15551
15552          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15553           <!-- end of entry -->
15554        
15555        
15556
15557      <!-- end of kind -->
15558      </tbody>
15559
15560  <!-- end of section -->
15561  <tr><td colspan="6" id="section_scaler" class="section">scaler</td></tr>
15562
15563
15564      <tr><td colspan="6" class="kind">controls</td></tr>
15565
15566      <thead class="entries_header">
15567        <tr>
15568          <th class="th_name">Property Name</th>
15569          <th class="th_type">Type</th>
15570          <th class="th_description">Description</th>
15571          <th class="th_units">Units</th>
15572          <th class="th_range">Range</th>
15573          <th class="th_tags">Tags</th>
15574        </tr>
15575      </thead>
15576
15577      <tbody>
15578
15579        
15580
15581        
15582
15583        
15584
15585        
15586
15587                
15588          <tr class="entry" id="controls_android.scaler.cropRegion">
15589            <td class="entry_name
15590             " rowspan="5">
15591              android.<wbr/>scaler.<wbr/>crop<wbr/>Region
15592            </td>
15593            <td class="entry_type">
15594                <span class="entry_type_name">int32</span>
15595                <span class="entry_type_container">x</span>
15596
15597                <span class="entry_type_array">
15598                  4
15599                </span>
15600              <span class="entry_type_visibility"> [public as rectangle]</span>
15601
15602
15603              <span class="entry_type_hwlevel">[legacy] </span>
15604
15605
15606
15607
15608            </td> <!-- entry_type -->
15609
15610            <td class="entry_description">
15611              <p>The desired region of the sensor to read out for this capture.<wbr/></p>
15612            </td>
15613
15614            <td class="entry_units">
15615              Pixel coordinates relative to
15616          android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
15617            </td>
15618
15619            <td class="entry_range">
15620            </td>
15621
15622            <td class="entry_tags">
15623              <ul class="entry_tags">
15624                  <li><a href="#tag_BC">BC</a></li>
15625              </ul>
15626            </td>
15627
15628          </tr>
15629          <tr class="entries_header">
15630            <th class="th_details" colspan="5">Details</th>
15631          </tr>
15632          <tr class="entry_cont">
15633            <td class="entry_details" colspan="5">
15634              <p>This control can be used to implement digital zoom.<wbr/></p>
15635<p>The crop region coordinate system is based off
15636<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
15637top-left corner of the sensor active array.<wbr/></p>
15638<p>Output streams use this rectangle to produce their output,<wbr/>
15639cropping to a smaller region if necessary to maintain the
15640stream's aspect ratio,<wbr/> then scaling the sensor input to
15641match the output's configured resolution.<wbr/></p>
15642<p>The crop region is applied after the RAW to other color
15643space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
15644(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
15645croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
15646<p>For non-raw streams,<wbr/> any additional per-stream cropping will
15647be done to maximize the final pixel area of the stream.<wbr/></p>
15648<p>For example,<wbr/> if the crop region is set to a 4:3 aspect
15649ratio,<wbr/> then 4:3 streams will use the exact crop
15650region.<wbr/> 16:9 streams will further crop vertically
15651(letterbox).<wbr/></p>
15652<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
15653outputs will crop horizontally (pillarbox),<wbr/> and 16:9
15654streams will match exactly.<wbr/> These additional crops will
15655be centered within the crop region.<wbr/></p>
15656<p>The width and height of the crop region cannot
15657be set to be smaller than
15658<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
15659<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>
15660<p>The camera device may adjust the crop region to account
15661for rounding and other hardware requirements; the final
15662crop region used will be included in the output capture
15663result.<wbr/></p>
15664            </td>
15665          </tr>
15666
15667          <tr class="entries_header">
15668            <th class="th_details" colspan="5">HAL Implementation Details</th>
15669          </tr>
15670          <tr class="entry_cont">
15671            <td class="entry_details" colspan="5">
15672              <p>The output streams must maintain square pixels at all
15673times,<wbr/> no matter what the relative aspect ratios of the
15674crop region and the stream are.<wbr/>  Negative values for
15675corner are allowed for raw output if full pixel array is
15676larger than active pixel array.<wbr/> Width and height may be
15677rounded to nearest larger supportable width,<wbr/> especially
15678for raw output,<wbr/> where only a few fixed scales may be
15679possible.<wbr/></p>
15680<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
15681            </td>
15682          </tr>
15683
15684          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15685           <!-- end of entry -->
15686        
15687        
15688
15689      <!-- end of kind -->
15690      </tbody>
15691      <tr><td colspan="6" class="kind">static</td></tr>
15692
15693      <thead class="entries_header">
15694        <tr>
15695          <th class="th_name">Property Name</th>
15696          <th class="th_type">Type</th>
15697          <th class="th_description">Description</th>
15698          <th class="th_units">Units</th>
15699          <th class="th_range">Range</th>
15700          <th class="th_tags">Tags</th>
15701        </tr>
15702      </thead>
15703
15704      <tbody>
15705
15706        
15707
15708        
15709
15710        
15711
15712        
15713
15714                
15715          <tr class="entry" id="static_android.scaler.availableFormats">
15716            <td class="entry_name
15717                entry_name_deprecated
15718             " rowspan="5">
15719              android.<wbr/>scaler.<wbr/>available<wbr/>Formats
15720            </td>
15721            <td class="entry_type">
15722                <span class="entry_type_name entry_type_name_enum">int32</span>
15723                <span class="entry_type_container">x</span>
15724
15725                <span class="entry_type_array">
15726                  n
15727                </span>
15728              <span class="entry_type_visibility"> [hidden as imageFormat]</span>
15729
15730
15731
15732              <span class="entry_type_deprecated">[deprecated] </span>
15733
15734
15735                <ul class="entry_type_enum">
15736                  <li>
15737                    <span class="entry_type_enum_name">RAW16</span>
15738                    <span class="entry_type_enum_optional">[optional]</span>
15739                    <span class="entry_type_enum_value">0x20</span>
15740                    <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
15741buffers with 16-bit pixels.<wbr/></p>
15742<p>Buffers of this format are typically expected to have a
15743Bayer Color Filter Array (CFA) layout,<wbr/> which is given in
15744<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
15745CFAs that are not representable by a format in
15746<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
15747use this format.<wbr/></p>
15748<p>Buffers of this format will also follow the constraints given for
15749RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
15750<p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
15751the full set of performance guarantees.<wbr/></p></span>
15752                  </li>
15753                  <li>
15754                    <span class="entry_type_enum_name">RAW_OPAQUE</span>
15755                    <span class="entry_type_enum_optional">[optional]</span>
15756                    <span class="entry_type_enum_value">0x24</span>
15757                    <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE is a format for raw image buffers coming from an
15758image sensor.<wbr/></p>
15759<p>The actual structure of buffers of this format is
15760platform-specific,<wbr/> but must follow several constraints:</p>
15761<ol>
15762<li>No image post-processing operations may have been applied to
15763buffers of this type.<wbr/> These buffers contain raw image data coming
15764directly from the image sensor.<wbr/></li>
15765<li>If a buffer of this format is passed to the camera device for
15766reprocessing,<wbr/> the resulting images will be identical to the images
15767produced if the buffer had come directly from the sensor and was
15768processed with the same settings.<wbr/></li>
15769</ol>
15770<p>The intended use for this format is to allow access to the native
15771raw format buffers coming directly from the camera sensor without
15772any additional conversions or decrease in framerate.<wbr/></p>
15773<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
15774performance guarantees.<wbr/></p></span>
15775                  </li>
15776                  <li>
15777                    <span class="entry_type_enum_name">YV12</span>
15778                    <span class="entry_type_enum_optional">[optional]</span>
15779                    <span class="entry_type_enum_value">0x32315659</span>
15780                    <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
15781                  </li>
15782                  <li>
15783                    <span class="entry_type_enum_name">YCrCb_420_SP</span>
15784                    <span class="entry_type_enum_optional">[optional]</span>
15785                    <span class="entry_type_enum_value">0x11</span>
15786                    <span class="entry_type_enum_notes"><p>NV21</p></span>
15787                  </li>
15788                  <li>
15789                    <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span>
15790                    <span class="entry_type_enum_value">0x22</span>
15791                    <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
15792                  </li>
15793                  <li>
15794                    <span class="entry_type_enum_name">YCbCr_420_888</span>
15795                    <span class="entry_type_enum_value">0x23</span>
15796                    <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
15797                  </li>
15798                  <li>
15799                    <span class="entry_type_enum_name">BLOB</span>
15800                    <span class="entry_type_enum_value">0x21</span>
15801                    <span class="entry_type_enum_notes"><p>JPEG format</p></span>
15802                  </li>
15803                </ul>
15804
15805            </td> <!-- entry_type -->
15806
15807            <td class="entry_description">
15808              <p>The list of image formats that are supported by this
15809camera device for output streams.<wbr/></p>
15810            </td>
15811
15812            <td class="entry_units">
15813            </td>
15814
15815            <td class="entry_range">
15816              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15817            </td>
15818
15819            <td class="entry_tags">
15820              <ul class="entry_tags">
15821                  <li><a href="#tag_BC">BC</a></li>
15822              </ul>
15823            </td>
15824
15825          </tr>
15826          <tr class="entries_header">
15827            <th class="th_details" colspan="5">Details</th>
15828          </tr>
15829          <tr class="entry_cont">
15830            <td class="entry_details" colspan="5">
15831              <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
15832<p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
15833            </td>
15834          </tr>
15835
15836          <tr class="entries_header">
15837            <th class="th_details" colspan="5">HAL Implementation Details</th>
15838          </tr>
15839          <tr class="entry_cont">
15840            <td class="entry_details" colspan="5">
15841              <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
15842system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
15843<p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
15844gralloc module will select a format based on the usage flags provided
15845by the camera HAL device and the other endpoint of the stream.<wbr/> It is
15846usually used by preview and recording streams,<wbr/> where the application doesn't
15847need access the image data.<wbr/></p>
15848<p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
15849needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
15850<p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
15851<p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
15852recommended that any information used by the camera device when
15853processing images is fully expressed by the result metadata
15854for that image buffer.<wbr/></p>
15855            </td>
15856          </tr>
15857
15858          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15859           <!-- end of entry -->
15860        
15861                
15862          <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
15863            <td class="entry_name
15864                entry_name_deprecated
15865             " rowspan="3">
15866              android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
15867            </td>
15868            <td class="entry_type">
15869                <span class="entry_type_name">int64</span>
15870                <span class="entry_type_container">x</span>
15871
15872                <span class="entry_type_array">
15873                  n
15874                </span>
15875              <span class="entry_type_visibility"> [hidden]</span>
15876
15877
15878
15879              <span class="entry_type_deprecated">[deprecated] </span>
15880
15881
15882
15883            </td> <!-- entry_type -->
15884
15885            <td class="entry_description">
15886              <p>The minimum frame duration that is supported
15887for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
15888            </td>
15889
15890            <td class="entry_units">
15891              Nanoseconds
15892            </td>
15893
15894            <td class="entry_range">
15895              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15896              <p>TODO: Remove property.<wbr/></p>
15897            </td>
15898
15899            <td class="entry_tags">
15900              <ul class="entry_tags">
15901                  <li><a href="#tag_BC">BC</a></li>
15902              </ul>
15903            </td>
15904
15905          </tr>
15906          <tr class="entries_header">
15907            <th class="th_details" colspan="5">Details</th>
15908          </tr>
15909          <tr class="entry_cont">
15910            <td class="entry_details" colspan="5">
15911              <p>This corresponds to the minimum steady-state frame duration when only
15912that JPEG stream is active and captured in a burst,<wbr/> with all
15913processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
15914<p>When multiple streams are configured,<wbr/> the minimum
15915frame duration will be &gt;= max(individual stream min
15916durations)</p>
15917            </td>
15918          </tr>
15919
15920
15921          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15922           <!-- end of entry -->
15923        
15924                
15925          <tr class="entry" id="static_android.scaler.availableJpegSizes">
15926            <td class="entry_name
15927                entry_name_deprecated
15928             " rowspan="5">
15929              android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
15930            </td>
15931            <td class="entry_type">
15932                <span class="entry_type_name">int32</span>
15933                <span class="entry_type_container">x</span>
15934
15935                <span class="entry_type_array">
15936                  n x 2
15937                </span>
15938              <span class="entry_type_visibility"> [hidden as size]</span>
15939
15940
15941
15942              <span class="entry_type_deprecated">[deprecated] </span>
15943
15944
15945
15946            </td> <!-- entry_type -->
15947
15948            <td class="entry_description">
15949              <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
15950            </td>
15951
15952            <td class="entry_units">
15953            </td>
15954
15955            <td class="entry_range">
15956              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15957              <p>TODO: Remove property.<wbr/></p>
15958            </td>
15959
15960            <td class="entry_tags">
15961              <ul class="entry_tags">
15962                  <li><a href="#tag_BC">BC</a></li>
15963              </ul>
15964            </td>
15965
15966          </tr>
15967          <tr class="entries_header">
15968            <th class="th_details" colspan="5">Details</th>
15969          </tr>
15970          <tr class="entry_cont">
15971            <td class="entry_details" colspan="5">
15972              <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
15973sensor 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>
15974            </td>
15975          </tr>
15976
15977          <tr class="entries_header">
15978            <th class="th_details" colspan="5">HAL Implementation Details</th>
15979          </tr>
15980          <tr class="entry_cont">
15981            <td class="entry_details" colspan="5">
15982              <p>The HAL must include sensor maximum resolution
15983(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
15984and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
15985            </td>
15986          </tr>
15987
15988          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15989           <!-- end of entry -->
15990        
15991                
15992          <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
15993            <td class="entry_name
15994             " rowspan="3">
15995              android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
15996            </td>
15997            <td class="entry_type">
15998                <span class="entry_type_name">float</span>
15999
16000              <span class="entry_type_visibility"> [public]</span>
16001
16002
16003              <span class="entry_type_hwlevel">[legacy] </span>
16004
16005
16006
16007
16008            </td> <!-- entry_type -->
16009
16010            <td class="entry_description">
16011              <p>The maximum ratio between both active area width
16012and crop region width,<wbr/> and active area height and
16013crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
16014            </td>
16015
16016            <td class="entry_units">
16017              Zoom scale factor
16018            </td>
16019
16020            <td class="entry_range">
16021              <p>&gt;=1</p>
16022            </td>
16023
16024            <td class="entry_tags">
16025              <ul class="entry_tags">
16026                  <li><a href="#tag_BC">BC</a></li>
16027              </ul>
16028            </td>
16029
16030          </tr>
16031          <tr class="entries_header">
16032            <th class="th_details" colspan="5">Details</th>
16033          </tr>
16034          <tr class="entry_cont">
16035            <td class="entry_details" colspan="5">
16036              <p>This represents the maximum amount of zooming possible by
16037the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
16038window size.<wbr/></p>
16039<p>Crop regions that have a width or height that is smaller
16040than this ratio allows will be rounded up to the minimum
16041allowed size by the camera device.<wbr/></p>
16042            </td>
16043          </tr>
16044
16045
16046          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16047           <!-- end of entry -->
16048        
16049                
16050          <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
16051            <td class="entry_name
16052                entry_name_deprecated
16053             " rowspan="3">
16054              android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
16055            </td>
16056            <td class="entry_type">
16057                <span class="entry_type_name">int64</span>
16058                <span class="entry_type_container">x</span>
16059
16060                <span class="entry_type_array">
16061                  n
16062                </span>
16063              <span class="entry_type_visibility"> [hidden]</span>
16064
16065
16066
16067              <span class="entry_type_deprecated">[deprecated] </span>
16068
16069
16070
16071            </td> <!-- entry_type -->
16072
16073            <td class="entry_description">
16074              <p>For each available processed output size (defined in
16075<a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
16076minimum supportable frame duration for that size.<wbr/></p>
16077            </td>
16078
16079            <td class="entry_units">
16080              Nanoseconds
16081            </td>
16082
16083            <td class="entry_range">
16084              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16085            </td>
16086
16087            <td class="entry_tags">
16088              <ul class="entry_tags">
16089                  <li><a href="#tag_BC">BC</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>This should correspond to the frame duration when only that processed
16100stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
16101set to FAST.<wbr/></p>
16102<p>When multiple streams are configured,<wbr/> the minimum frame duration will
16103be &gt;= max(individual stream min durations).<wbr/></p>
16104            </td>
16105          </tr>
16106
16107
16108          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16109           <!-- end of entry -->
16110        
16111                
16112          <tr class="entry" id="static_android.scaler.availableProcessedSizes">
16113            <td class="entry_name
16114                entry_name_deprecated
16115             " rowspan="5">
16116              android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
16117            </td>
16118            <td class="entry_type">
16119                <span class="entry_type_name">int32</span>
16120                <span class="entry_type_container">x</span>
16121
16122                <span class="entry_type_array">
16123                  n x 2
16124                </span>
16125              <span class="entry_type_visibility"> [hidden as size]</span>
16126
16127
16128
16129              <span class="entry_type_deprecated">[deprecated] </span>
16130
16131
16132
16133            </td> <!-- entry_type -->
16134
16135            <td class="entry_description">
16136              <p>The resolutions available for use with
16137processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
16138platform opaque YUV/<wbr/>RGB streams to the GPU or video
16139encoders.<wbr/></p>
16140            </td>
16141
16142            <td class="entry_units">
16143            </td>
16144
16145            <td class="entry_range">
16146              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16147            </td>
16148
16149            <td class="entry_tags">
16150              <ul class="entry_tags">
16151                  <li><a href="#tag_BC">BC</a></li>
16152              </ul>
16153            </td>
16154
16155          </tr>
16156          <tr class="entries_header">
16157            <th class="th_details" colspan="5">Details</th>
16158          </tr>
16159          <tr class="entry_cont">
16160            <td class="entry_details" colspan="5">
16161              <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
16162<p>For a given use case,<wbr/> the actual maximum supported resolution
16163may be lower than what is listed here,<wbr/> depending on the destination
16164Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
16165the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
16166smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
16167can provide.<wbr/></p>
16168<p>Please reference the documentation for the image data destination to
16169check if it limits the maximum size for image data.<wbr/></p>
16170            </td>
16171          </tr>
16172
16173          <tr class="entries_header">
16174            <th class="th_details" colspan="5">HAL Implementation Details</th>
16175          </tr>
16176          <tr class="entry_cont">
16177            <td class="entry_details" colspan="5">
16178              <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/>
16179the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>
16180and each below resolution if it is smaller than or equal to the sensor
16181maximum resolution (if they are not listed in JPEG sizes already):</p>
16182<ul>
16183<li>240p (320 x 240)</li>
16184<li>480p (640 x 480)</li>
16185<li>720p (1280 x 720)</li>
16186<li>1080p (1920 x 1080)</li>
16187</ul>
16188<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/>
16189the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
16190            </td>
16191          </tr>
16192
16193          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16194           <!-- end of entry -->
16195        
16196                
16197          <tr class="entry" id="static_android.scaler.availableRawMinDurations">
16198            <td class="entry_name
16199                entry_name_deprecated
16200             " rowspan="3">
16201              android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
16202            </td>
16203            <td class="entry_type">
16204                <span class="entry_type_name">int64</span>
16205                <span class="entry_type_container">x</span>
16206
16207                <span class="entry_type_array">
16208                  n
16209                </span>
16210              <span class="entry_type_visibility"> [system]</span>
16211
16212
16213
16214              <span class="entry_type_deprecated">[deprecated] </span>
16215
16216
16217
16218            </td> <!-- entry_type -->
16219
16220            <td class="entry_description">
16221              <p>For each available raw output size (defined in
16222<a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
16223supportable frame duration for that size.<wbr/></p>
16224            </td>
16225
16226            <td class="entry_units">
16227              Nanoseconds
16228            </td>
16229
16230            <td class="entry_range">
16231              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16232            </td>
16233
16234            <td class="entry_tags">
16235              <ul class="entry_tags">
16236                  <li><a href="#tag_BC">BC</a></li>
16237              </ul>
16238            </td>
16239
16240          </tr>
16241          <tr class="entries_header">
16242            <th class="th_details" colspan="5">Details</th>
16243          </tr>
16244          <tr class="entry_cont">
16245            <td class="entry_details" colspan="5">
16246              <p>Should correspond to the frame duration when only the raw stream is
16247active.<wbr/></p>
16248<p>When multiple streams are configured,<wbr/> the minimum
16249frame duration will be &gt;= max(individual stream min
16250durations)</p>
16251            </td>
16252          </tr>
16253
16254
16255          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16256           <!-- end of entry -->
16257        
16258                
16259          <tr class="entry" id="static_android.scaler.availableRawSizes">
16260            <td class="entry_name
16261                entry_name_deprecated
16262             " rowspan="1">
16263              android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
16264            </td>
16265            <td class="entry_type">
16266                <span class="entry_type_name">int32</span>
16267                <span class="entry_type_container">x</span>
16268
16269                <span class="entry_type_array">
16270                  n x 2
16271                </span>
16272              <span class="entry_type_visibility"> [system as size]</span>
16273
16274
16275
16276              <span class="entry_type_deprecated">[deprecated] </span>
16277
16278
16279
16280            </td> <!-- entry_type -->
16281
16282            <td class="entry_description">
16283              <p>The resolutions available for use with raw
16284sensor output streams,<wbr/> listed as width,<wbr/>
16285height</p>
16286            </td>
16287
16288            <td class="entry_units">
16289            </td>
16290
16291            <td class="entry_range">
16292              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16293            </td>
16294
16295            <td class="entry_tags">
16296            </td>
16297
16298          </tr>
16299
16300
16301          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16302           <!-- end of entry -->
16303        
16304                
16305          <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
16306            <td class="entry_name
16307             " rowspan="5">
16308              android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
16309            </td>
16310            <td class="entry_type">
16311                <span class="entry_type_name">int32</span>
16312
16313              <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
16314
16315
16316
16317
16318
16319
16320            </td> <!-- entry_type -->
16321
16322            <td class="entry_description">
16323              <p>The mapping of image formats that are supported by this
16324camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
16325            </td>
16326
16327            <td class="entry_units">
16328            </td>
16329
16330            <td class="entry_range">
16331            </td>
16332
16333            <td class="entry_tags">
16334            </td>
16335
16336          </tr>
16337          <tr class="entries_header">
16338            <th class="th_details" colspan="5">Details</th>
16339          </tr>
16340          <tr class="entry_cont">
16341            <td class="entry_details" colspan="5">
16342              <p>All camera devices with at least 1
16343<a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
16344available input format.<wbr/></p>
16345<p>The camera device will support the following map of formats,<wbr/>
16346if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
16347<table>
16348<thead>
16349<tr>
16350<th align="left">Input Format</th>
16351<th align="left">Output Format</th>
16352<th align="left">Capability</th>
16353</tr>
16354</thead>
16355<tbody>
16356<tr>
16357<td align="left">PRIVATE (ImageFormat#PRIVATE)</td>
16358<td align="left">JPEG</td>
16359<td align="left">OPAQUE_<wbr/>REPROCESSING</td>
16360</tr>
16361<tr>
16362<td align="left">PRIVATE</td>
16363<td align="left">YUV_<wbr/>420_<wbr/>888</td>
16364<td align="left">OPAQUE_<wbr/>REPROCESSING</td>
16365</tr>
16366<tr>
16367<td align="left">YUV_<wbr/>420_<wbr/>888</td>
16368<td align="left">JPEG</td>
16369<td align="left">YUV_<wbr/>REPROCESSING</td>
16370</tr>
16371<tr>
16372<td align="left">YUV_<wbr/>420_<wbr/>888</td>
16373<td align="left">YUV_<wbr/>420_<wbr/>888</td>
16374<td align="left">YUV_<wbr/>REPROCESSING</td>
16375</tr>
16376</tbody>
16377</table>
16378<p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/>
16379A PRIVATE input surface can be acquired by
16380ImageReader.<wbr/>newOpaqueInstance(width,<wbr/> height,<wbr/> maxImages).<wbr/>
16381For a OPAQUE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format
16382as either input or output will never hurt maximum frame rate (i.<wbr/>e.<wbr/>
16383Stream<wbr/>Configuration<wbr/>Map#get<wbr/>Output<wbr/>Stall<wbr/>Duration(format,<wbr/> size) is always 0),<wbr/>
16384where format is ImageFormat#PRIVATE.<wbr/></p>
16385<p>Attempting to configure an input stream with output streams not
16386listed as available in this map is not valid.<wbr/></p>
16387            </td>
16388          </tr>
16389
16390          <tr class="entries_header">
16391            <th class="th_details" colspan="5">HAL Implementation Details</th>
16392          </tr>
16393          <tr class="entry_cont">
16394            <td class="entry_details" colspan="5">
16395              <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
16396of the image format enumerations.<wbr/> The PRIVATE format refers to the
16397HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
16398the actual format by using the gralloc usage flags.<wbr/>
16399For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
16400processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
16401See camera3.<wbr/>h for more details.<wbr/></p>
16402<p>This value is encoded as a variable-size array-of-arrays.<wbr/>
16403The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
16404<code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
16405inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
16406<p>A code sample to read/<wbr/>write this encoding (with a device that
16407supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
16408and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
16409<pre><code>//<wbr/> reading
16410int32_<wbr/>t* contents = &amp;entry.<wbr/>i32[0];
16411for (size_<wbr/>t i = 0; i &lt; entry.<wbr/>count; ) {
16412    int32_<wbr/>t format = contents[i++];
16413    int32_<wbr/>t length = contents[i++];
16414    int32_<wbr/>t output_<wbr/>formats[length];
16415    memcpy(&amp;output_<wbr/>formats[0],<wbr/> &amp;contents[i],<wbr/>
16416           length * sizeof(int32_<wbr/>t));
16417    i += length;
16418}
16419
16420//<wbr/> writing (static example,<wbr/> OPAQUE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
16421int32_<wbr/>t[] contents = {
16422  IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
16423  YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
16424};
16425update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &amp;contents[0],<wbr/>
16426      sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &amp;updated_<wbr/>entry);
16427</code></pre>
16428<p>If the HAL claims to support any of the capabilities listed in the
16429above details,<wbr/> then it must also support all the input-output
16430combinations listed for that capability.<wbr/> It can optionally support
16431additional formats if it so chooses.<wbr/></p>
16432            </td>
16433          </tr>
16434
16435          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16436           <!-- end of entry -->
16437        
16438                
16439          <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
16440            <td class="entry_name
16441             " rowspan="5">
16442              android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
16443            </td>
16444            <td class="entry_type">
16445                <span class="entry_type_name entry_type_name_enum">int32</span>
16446                <span class="entry_type_container">x</span>
16447
16448                <span class="entry_type_array">
16449                  n x 4
16450                </span>
16451              <span class="entry_type_visibility"> [hidden as streamConfiguration]</span>
16452
16453
16454              <span class="entry_type_hwlevel">[legacy] </span>
16455
16456
16457
16458                <ul class="entry_type_enum">
16459                  <li>
16460                    <span class="entry_type_enum_name">OUTPUT</span>
16461                  </li>
16462                  <li>
16463                    <span class="entry_type_enum_name">INPUT</span>
16464                  </li>
16465                </ul>
16466
16467            </td> <!-- entry_type -->
16468
16469            <td class="entry_description">
16470              <p>The available stream configurations that this
16471camera device supports
16472(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
16473            </td>
16474
16475            <td class="entry_units">
16476            </td>
16477
16478            <td class="entry_range">
16479            </td>
16480
16481            <td class="entry_tags">
16482            </td>
16483
16484          </tr>
16485          <tr class="entries_header">
16486            <th class="th_details" colspan="5">Details</th>
16487          </tr>
16488          <tr class="entry_cont">
16489            <td class="entry_details" colspan="5">
16490              <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
16491tuples.<wbr/></p>
16492<p>For a given use case,<wbr/> the actual maximum supported resolution
16493may be lower than what is listed here,<wbr/> depending on the destination
16494Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
16495the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
16496smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
16497can provide.<wbr/></p>
16498<p>Please reference the documentation for the image data destination to
16499check if it limits the maximum size for image data.<wbr/></p>
16500<p>Not all output formats may be supported in a configuration with
16501an input stream of a particular format.<wbr/> For more details,<wbr/> see
16502<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
16503<p>The following table describes the minimum required output stream
16504configurations based on the hardware level
16505(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
16506<table>
16507<thead>
16508<tr>
16509<th align="center">Format</th>
16510<th align="center">Size</th>
16511<th align="center">Hardware Level</th>
16512<th align="center">Notes</th>
16513</tr>
16514</thead>
16515<tbody>
16516<tr>
16517<td align="center">JPEG</td>
16518<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
16519<td align="center">Any</td>
16520<td align="center"></td>
16521</tr>
16522<tr>
16523<td align="center">JPEG</td>
16524<td align="center">1920x1080 (1080p)</td>
16525<td align="center">Any</td>
16526<td align="center">if 1080p &lt;= activeArraySize</td>
16527</tr>
16528<tr>
16529<td align="center">JPEG</td>
16530<td align="center">1280x720 (720)</td>
16531<td align="center">Any</td>
16532<td align="center">if 720p &lt;= activeArraySize</td>
16533</tr>
16534<tr>
16535<td align="center">JPEG</td>
16536<td align="center">640x480 (480p)</td>
16537<td align="center">Any</td>
16538<td align="center">if 480p &lt;= activeArraySize</td>
16539</tr>
16540<tr>
16541<td align="center">JPEG</td>
16542<td align="center">320x240 (240p)</td>
16543<td align="center">Any</td>
16544<td align="center">if 240p &lt;= activeArraySize</td>
16545</tr>
16546<tr>
16547<td align="center">YUV_<wbr/>420_<wbr/>888</td>
16548<td align="center">all output sizes available for JPEG</td>
16549<td align="center">FULL</td>
16550<td align="center"></td>
16551</tr>
16552<tr>
16553<td align="center">YUV_<wbr/>420_<wbr/>888</td>
16554<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
16555<td align="center">LIMITED</td>
16556<td align="center"></td>
16557</tr>
16558<tr>
16559<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
16560<td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
16561<td align="center">Any</td>
16562<td align="center"></td>
16563</tr>
16564</tbody>
16565</table>
16566<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
16567mandatory stream configurations on a per-capability basis.<wbr/></p>
16568            </td>
16569          </tr>
16570
16571          <tr class="entries_header">
16572            <th class="th_details" colspan="5">HAL Implementation Details</th>
16573          </tr>
16574          <tr class="entry_cont">
16575            <td class="entry_details" colspan="5">
16576              <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
16577of sensor maximum resolution for JPEG formats (regardless of hardware
16578level).<wbr/></p>
16579<p>(The following is a rewording of the above required table):</p>
16580<p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
16581<ul>
16582<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
16583(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
16584(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/>
16585it does not have to be included in the supported JPEG sizes.<wbr/></li>
16586<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
16587the dimensions being a multiple of 16.<wbr/></li>
16588</ul>
16589<p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
16590However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
16591resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
16592additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
16593if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
16594ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
165953264x2448.<wbr/></p>
16596<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/>
16597the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
16598here as output streams.<wbr/></p>
16599<p>It must also include each below resolution if it is smaller than or
16600equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
16601formats),<wbr/> as output streams:</p>
16602<ul>
16603<li>240p (320 x 240)</li>
16604<li>480p (640 x 480)</li>
16605<li>720p (1280 x 720)</li>
16606<li>1080p (1920 x 1080)</li>
16607</ul>
16608<p>For LIMITED capability devices
16609(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
16610the HAL only has to list up to the maximum video size
16611supported by the device.<wbr/></p>
16612<p>Regardless of hardware level,<wbr/> every output resolution available for
16613YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
16614<p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
16615<ul>
16616<li>availableFormats</li>
16617<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
16618</ul>
16619            </td>
16620          </tr>
16621
16622          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16623           <!-- end of entry -->
16624        
16625                
16626          <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
16627            <td class="entry_name
16628             " rowspan="3">
16629              android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
16630            </td>
16631            <td class="entry_type">
16632                <span class="entry_type_name">int64</span>
16633                <span class="entry_type_container">x</span>
16634
16635                <span class="entry_type_array">
16636                  4 x n
16637                </span>
16638              <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
16639
16640
16641              <span class="entry_type_hwlevel">[legacy] </span>
16642
16643
16644
16645
16646            </td> <!-- entry_type -->
16647
16648            <td class="entry_description">
16649              <p>This lists the minimum frame duration for each
16650format/<wbr/>size combination.<wbr/></p>
16651            </td>
16652
16653            <td class="entry_units">
16654              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
16655            </td>
16656
16657            <td class="entry_range">
16658            </td>
16659
16660            <td class="entry_tags">
16661              <ul class="entry_tags">
16662                  <li><a href="#tag_V1">V1</a></li>
16663              </ul>
16664            </td>
16665
16666          </tr>
16667          <tr class="entries_header">
16668            <th class="th_details" colspan="5">Details</th>
16669          </tr>
16670          <tr class="entry_cont">
16671            <td class="entry_details" colspan="5">
16672              <p>This should correspond to the frame duration when only that
16673stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
16674set to either OFF or FAST.<wbr/></p>
16675<p>When multiple streams are used in a request,<wbr/> the minimum frame
16676duration will be max(individual stream min durations).<wbr/></p>
16677<p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
16678is the same regardless of whether the stream is input or output.<wbr/></p>
16679<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
16680<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
16681calculating the max frame rate.<wbr/></p>
16682<p>(Keep in sync with
16683StreamConfigurationMap#getOutputMinFrameDuration)</p>
16684            </td>
16685          </tr>
16686
16687
16688          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16689           <!-- end of entry -->
16690        
16691                
16692          <tr class="entry" id="static_android.scaler.availableStallDurations">
16693            <td class="entry_name
16694             " rowspan="5">
16695              android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
16696            </td>
16697            <td class="entry_type">
16698                <span class="entry_type_name">int64</span>
16699                <span class="entry_type_container">x</span>
16700
16701                <span class="entry_type_array">
16702                  4 x n
16703                </span>
16704              <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
16705
16706
16707              <span class="entry_type_hwlevel">[legacy] </span>
16708
16709
16710
16711
16712            </td> <!-- entry_type -->
16713
16714            <td class="entry_description">
16715              <p>This lists the maximum stall duration for each
16716format/<wbr/>size combination.<wbr/></p>
16717            </td>
16718
16719            <td class="entry_units">
16720              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
16721            </td>
16722
16723            <td class="entry_range">
16724            </td>
16725
16726            <td class="entry_tags">
16727              <ul class="entry_tags">
16728                  <li><a href="#tag_V1">V1</a></li>
16729              </ul>
16730            </td>
16731
16732          </tr>
16733          <tr class="entries_header">
16734            <th class="th_details" colspan="5">Details</th>
16735          </tr>
16736          <tr class="entry_cont">
16737            <td class="entry_details" colspan="5">
16738              <p>A stall duration is how much extra time would get added
16739to the normal minimum frame duration for a repeating request
16740that has streams with non-zero stall.<wbr/></p>
16741<p>For example,<wbr/> consider JPEG captures which have the following
16742characteristics:</p>
16743<ul>
16744<li>JPEG streams act like processed YUV streams in requests for which
16745they are not included; in requests in which they are directly
16746referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
16747JPEG stream requires the underlying YUV data to always be ready for
16748use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
16749frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
16750<li>The JPEG processor can run concurrently to the rest of the camera
16751pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
16752</ul>
16753<p>In other words,<wbr/> using a repeating YUV request would result
16754in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
16755JPEG request is submitted periodically,<wbr/> the frame rate will stay
16756at 30 FPS (as long as we wait for the previous JPEG to return each
16757time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
16758the frame rate will drop from 30 FPS.<wbr/></p>
16759<p>In general,<wbr/> submitting a new request with a non-0 stall time
16760stream will <em>not</em> cause a frame rate drop unless there are still
16761outstanding buffers for that stream from previous requests.<wbr/></p>
16762<p>Submitting a repeating request with streams (call this <code>S</code>)
16763is the same as setting the minimum frame duration from
16764the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
16765the maximum stall duration for <code>S</code>.<wbr/></p>
16766<p>If interleaving requests with and without a stall duration,<wbr/>
16767a request will stall by the maximum of the remaining times
16768for each can-stall stream with outstanding buffers.<wbr/></p>
16769<p>This means that a stalling request will not have an exposure start
16770until the stall has completed.<wbr/></p>
16771<p>This should correspond to the stall duration when only that stream is
16772active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
16773or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
16774effectively results in an indeterminate stall duration for all
16775streams in a request (the regular stall calculation rules are
16776ignored).<wbr/></p>
16777<p>The following formats may always have a stall duration:</p>
16778<ul>
16779<li>ImageFormat#JPEG</li>
16780<li>ImageFormat#RAW_<wbr/>SENSOR</li>
16781</ul>
16782<p>The following formats will never have a stall duration:</p>
16783<ul>
16784<li>Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</li>
16785</ul>
16786<p>All other formats may or may not have an allowed stall duration on
16787a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
16788for more details.<wbr/></p>
16789<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
16790calculating the max frame rate (absent stalls).<wbr/></p>
16791<p>(Keep up to date with
16792StreamConfigurationMap#getOutputStallDuration(int,<wbr/> Size) )</p>
16793            </td>
16794          </tr>
16795
16796          <tr class="entries_header">
16797            <th class="th_details" colspan="5">HAL Implementation Details</th>
16798          </tr>
16799          <tr class="entry_cont">
16800            <td class="entry_details" colspan="5">
16801              <p>If possible,<wbr/> it is recommended that all non-JPEG formats
16802(such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
16803and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
16804            </td>
16805          </tr>
16806
16807          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16808           <!-- end of entry -->
16809        
16810                
16811          <tr class="entry" id="static_android.scaler.streamConfigurationMap">
16812            <td class="entry_name
16813             " rowspan="5">
16814              android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
16815            </td>
16816            <td class="entry_type">
16817                <span class="entry_type_name">int32</span>
16818
16819              <span class="entry_type_visibility"> [public as streamConfigurationMap]</span>
16820
16821              <span class="entry_type_synthetic">[synthetic] </span>
16822
16823              <span class="entry_type_hwlevel">[legacy] </span>
16824
16825
16826
16827
16828            </td> <!-- entry_type -->
16829
16830            <td class="entry_description">
16831              <p>The available stream configurations that this
16832camera device supports; also includes the minimum frame durations
16833and the stall durations for each format/<wbr/>size combination.<wbr/></p>
16834            </td>
16835
16836            <td class="entry_units">
16837            </td>
16838
16839            <td class="entry_range">
16840            </td>
16841
16842            <td class="entry_tags">
16843            </td>
16844
16845          </tr>
16846          <tr class="entries_header">
16847            <th class="th_details" colspan="5">Details</th>
16848          </tr>
16849          <tr class="entry_cont">
16850            <td class="entry_details" colspan="5">
16851              <p>All camera devices will support sensor maximum resolution (defined by
16852<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>
16853<p>For a given use case,<wbr/> the actual maximum supported resolution
16854may be lower than what is listed here,<wbr/> depending on the destination
16855Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
16856the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
16857smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
16858can provide.<wbr/></p>
16859<p>Please reference the documentation for the image data destination to
16860check if it limits the maximum size for image data.<wbr/></p>
16861<p>The following table describes the minimum required output stream
16862configurations based on the hardware level
16863(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
16864<table>
16865<thead>
16866<tr>
16867<th align="center">Format</th>
16868<th align="center">Size</th>
16869<th align="center">Hardware Level</th>
16870<th align="center">Notes</th>
16871</tr>
16872</thead>
16873<tbody>
16874<tr>
16875<td align="center">JPEG</td>
16876<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
16877<td align="center">Any</td>
16878<td align="center"></td>
16879</tr>
16880<tr>
16881<td align="center">JPEG</td>
16882<td align="center">1920x1080 (1080p)</td>
16883<td align="center">Any</td>
16884<td align="center">if 1080p &lt;= activeArraySize</td>
16885</tr>
16886<tr>
16887<td align="center">JPEG</td>
16888<td align="center">1280x720 (720)</td>
16889<td align="center">Any</td>
16890<td align="center">if 720p &lt;= activeArraySize</td>
16891</tr>
16892<tr>
16893<td align="center">JPEG</td>
16894<td align="center">640x480 (480p)</td>
16895<td align="center">Any</td>
16896<td align="center">if 480p &lt;= activeArraySize</td>
16897</tr>
16898<tr>
16899<td align="center">JPEG</td>
16900<td align="center">320x240 (240p)</td>
16901<td align="center">Any</td>
16902<td align="center">if 240p &lt;= activeArraySize</td>
16903</tr>
16904<tr>
16905<td align="center">YUV_<wbr/>420_<wbr/>888</td>
16906<td align="center">all output sizes available for JPEG</td>
16907<td align="center">FULL</td>
16908<td align="center"></td>
16909</tr>
16910<tr>
16911<td align="center">YUV_<wbr/>420_<wbr/>888</td>
16912<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
16913<td align="center">LIMITED</td>
16914<td align="center"></td>
16915</tr>
16916<tr>
16917<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
16918<td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
16919<td align="center">Any</td>
16920<td align="center"></td>
16921</tr>
16922</tbody>
16923</table>
16924<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
16925mandatory stream configurations on a per-capability basis.<wbr/></p>
16926            </td>
16927          </tr>
16928
16929          <tr class="entries_header">
16930            <th class="th_details" colspan="5">HAL Implementation Details</th>
16931          </tr>
16932          <tr class="entry_cont">
16933            <td class="entry_details" colspan="5">
16934              <p>Do not set this property directly
16935(it is synthetic and will not be available at the HAL layer);
16936set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
16937<p>Not all output formats may be supported in a configuration with
16938an input stream of a particular format.<wbr/> For more details,<wbr/> see
16939<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
16940<p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
16941of sensor maximum resolution for JPEG formats (regardless of hardware
16942level).<wbr/></p>
16943<p>(The following is a rewording of the above required table):</p>
16944<p>The HAL must include sensor maximum resolution (defined by
16945<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
16946<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/>
16947the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
16948here as output streams.<wbr/></p>
16949<p>It must also include each below resolution if it is smaller than or
16950equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
16951formats),<wbr/> as output streams:</p>
16952<ul>
16953<li>240p (320 x 240)</li>
16954<li>480p (640 x 480)</li>
16955<li>720p (1280 x 720)</li>
16956<li>1080p (1920 x 1080)</li>
16957</ul>
16958<p>For LIMITED capability devices
16959(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
16960the HAL only has to list up to the maximum video size
16961supported by the device.<wbr/></p>
16962<p>Regardless of hardware level,<wbr/> every output resolution available for
16963YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
16964<p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
16965<ul>
16966<li>availableFormats</li>
16967<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
16968</ul>
16969            </td>
16970          </tr>
16971
16972          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16973           <!-- end of entry -->
16974        
16975                
16976          <tr class="entry" id="static_android.scaler.croppingType">
16977            <td class="entry_name
16978             " rowspan="3">
16979              android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
16980            </td>
16981            <td class="entry_type">
16982                <span class="entry_type_name entry_type_name_enum">byte</span>
16983
16984              <span class="entry_type_visibility"> [public]</span>
16985
16986
16987              <span class="entry_type_hwlevel">[legacy] </span>
16988
16989
16990
16991                <ul class="entry_type_enum">
16992                  <li>
16993                    <span class="entry_type_enum_name">CENTER_ONLY</span>
16994                    <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
16995                  </li>
16996                  <li>
16997                    <span class="entry_type_enum_name">FREEFORM</span>
16998                    <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
16999                  </li>
17000                </ul>
17001
17002            </td> <!-- entry_type -->
17003
17004            <td class="entry_description">
17005              <p>The crop type that this camera device supports.<wbr/></p>
17006            </td>
17007
17008            <td class="entry_units">
17009            </td>
17010
17011            <td class="entry_range">
17012            </td>
17013
17014            <td class="entry_tags">
17015            </td>
17016
17017          </tr>
17018          <tr class="entries_header">
17019            <th class="th_details" colspan="5">Details</th>
17020          </tr>
17021          <tr class="entry_cont">
17022            <td class="entry_details" colspan="5">
17023              <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
17024device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
17025crop 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>)
17026and keep the crop region width and height unchanged.<wbr/> The camera device will return the
17027final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
17028<p>Camera devices that support FREEFORM cropping will support any crop region that
17029is inside of the active array.<wbr/> The camera device will apply the same crop region and
17030return 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>
17031<p>FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL) will support
17032FREEFORM cropping.<wbr/> LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
17033            </td>
17034          </tr>
17035
17036
17037          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17038           <!-- end of entry -->
17039        
17040        
17041
17042      <!-- end of kind -->
17043      </tbody>
17044      <tr><td colspan="6" class="kind">dynamic</td></tr>
17045
17046      <thead class="entries_header">
17047        <tr>
17048          <th class="th_name">Property Name</th>
17049          <th class="th_type">Type</th>
17050          <th class="th_description">Description</th>
17051          <th class="th_units">Units</th>
17052          <th class="th_range">Range</th>
17053          <th class="th_tags">Tags</th>
17054        </tr>
17055      </thead>
17056
17057      <tbody>
17058
17059        
17060
17061        
17062
17063        
17064
17065        
17066
17067                
17068          <tr class="entry" id="dynamic_android.scaler.cropRegion">
17069            <td class="entry_name
17070             " rowspan="5">
17071              android.<wbr/>scaler.<wbr/>crop<wbr/>Region
17072            </td>
17073            <td class="entry_type">
17074                <span class="entry_type_name">int32</span>
17075                <span class="entry_type_container">x</span>
17076
17077                <span class="entry_type_array">
17078                  4
17079                </span>
17080              <span class="entry_type_visibility"> [public as rectangle]</span>
17081
17082
17083              <span class="entry_type_hwlevel">[legacy] </span>
17084
17085
17086
17087
17088            </td> <!-- entry_type -->
17089
17090            <td class="entry_description">
17091              <p>The desired region of the sensor to read out for this capture.<wbr/></p>
17092            </td>
17093
17094            <td class="entry_units">
17095              Pixel coordinates relative to
17096          android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
17097            </td>
17098
17099            <td class="entry_range">
17100            </td>
17101
17102            <td class="entry_tags">
17103              <ul class="entry_tags">
17104                  <li><a href="#tag_BC">BC</a></li>
17105              </ul>
17106            </td>
17107
17108          </tr>
17109          <tr class="entries_header">
17110            <th class="th_details" colspan="5">Details</th>
17111          </tr>
17112          <tr class="entry_cont">
17113            <td class="entry_details" colspan="5">
17114              <p>This control can be used to implement digital zoom.<wbr/></p>
17115<p>The crop region coordinate system is based off
17116<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
17117top-left corner of the sensor active array.<wbr/></p>
17118<p>Output streams use this rectangle to produce their output,<wbr/>
17119cropping to a smaller region if necessary to maintain the
17120stream's aspect ratio,<wbr/> then scaling the sensor input to
17121match the output's configured resolution.<wbr/></p>
17122<p>The crop region is applied after the RAW to other color
17123space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
17124(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
17125croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
17126<p>For non-raw streams,<wbr/> any additional per-stream cropping will
17127be done to maximize the final pixel area of the stream.<wbr/></p>
17128<p>For example,<wbr/> if the crop region is set to a 4:3 aspect
17129ratio,<wbr/> then 4:3 streams will use the exact crop
17130region.<wbr/> 16:9 streams will further crop vertically
17131(letterbox).<wbr/></p>
17132<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
17133outputs will crop horizontally (pillarbox),<wbr/> and 16:9
17134streams will match exactly.<wbr/> These additional crops will
17135be centered within the crop region.<wbr/></p>
17136<p>The width and height of the crop region cannot
17137be set to be smaller than
17138<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
17139<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>
17140<p>The camera device may adjust the crop region to account
17141for rounding and other hardware requirements; the final
17142crop region used will be included in the output capture
17143result.<wbr/></p>
17144            </td>
17145          </tr>
17146
17147          <tr class="entries_header">
17148            <th class="th_details" colspan="5">HAL Implementation Details</th>
17149          </tr>
17150          <tr class="entry_cont">
17151            <td class="entry_details" colspan="5">
17152              <p>The output streams must maintain square pixels at all
17153times,<wbr/> no matter what the relative aspect ratios of the
17154crop region and the stream are.<wbr/>  Negative values for
17155corner are allowed for raw output if full pixel array is
17156larger than active pixel array.<wbr/> Width and height may be
17157rounded to nearest larger supportable width,<wbr/> especially
17158for raw output,<wbr/> where only a few fixed scales may be
17159possible.<wbr/></p>
17160<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
17161            </td>
17162          </tr>
17163
17164          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17165           <!-- end of entry -->
17166        
17167        
17168
17169      <!-- end of kind -->
17170      </tbody>
17171
17172  <!-- end of section -->
17173  <tr><td colspan="6" id="section_sensor" class="section">sensor</td></tr>
17174
17175
17176      <tr><td colspan="6" class="kind">controls</td></tr>
17177
17178      <thead class="entries_header">
17179        <tr>
17180          <th class="th_name">Property Name</th>
17181          <th class="th_type">Type</th>
17182          <th class="th_description">Description</th>
17183          <th class="th_units">Units</th>
17184          <th class="th_range">Range</th>
17185          <th class="th_tags">Tags</th>
17186        </tr>
17187      </thead>
17188
17189      <tbody>
17190
17191        
17192
17193        
17194
17195        
17196
17197        
17198
17199                
17200          <tr class="entry" id="controls_android.sensor.exposureTime">
17201            <td class="entry_name
17202             " rowspan="3">
17203              android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
17204            </td>
17205            <td class="entry_type">
17206                <span class="entry_type_name">int64</span>
17207
17208              <span class="entry_type_visibility"> [public]</span>
17209
17210
17211              <span class="entry_type_hwlevel">[full] </span>
17212
17213
17214
17215
17216            </td> <!-- entry_type -->
17217
17218            <td class="entry_description">
17219              <p>Duration each pixel is exposed to
17220light.<wbr/></p>
17221            </td>
17222
17223            <td class="entry_units">
17224              Nanoseconds
17225            </td>
17226
17227            <td class="entry_range">
17228              <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
17229            </td>
17230
17231            <td class="entry_tags">
17232              <ul class="entry_tags">
17233                  <li><a href="#tag_V1">V1</a></li>
17234              </ul>
17235            </td>
17236
17237          </tr>
17238          <tr class="entries_header">
17239            <th class="th_details" colspan="5">Details</th>
17240          </tr>
17241          <tr class="entry_cont">
17242            <td class="entry_details" colspan="5">
17243              <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
17244duration exposed to the nearest possible value (rather than expose longer).<wbr/>
17245The final exposure time used will be available in the output capture result.<wbr/></p>
17246<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
17247OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
17248            </td>
17249          </tr>
17250
17251
17252          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17253           <!-- end of entry -->
17254        
17255                
17256          <tr class="entry" id="controls_android.sensor.frameDuration">
17257            <td class="entry_name
17258             " rowspan="5">
17259              android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
17260            </td>
17261            <td class="entry_type">
17262                <span class="entry_type_name">int64</span>
17263
17264              <span class="entry_type_visibility"> [public]</span>
17265
17266
17267              <span class="entry_type_hwlevel">[full] </span>
17268
17269
17270
17271
17272            </td> <!-- entry_type -->
17273
17274            <td class="entry_description">
17275              <p>Duration from start of frame exposure to
17276start of next frame exposure.<wbr/></p>
17277            </td>
17278
17279            <td class="entry_units">
17280              Nanoseconds
17281            </td>
17282
17283            <td class="entry_range">
17284              <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
17285<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
17286is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
17287            </td>
17288
17289            <td class="entry_tags">
17290              <ul class="entry_tags">
17291                  <li><a href="#tag_V1">V1</a></li>
17292              </ul>
17293            </td>
17294
17295          </tr>
17296          <tr class="entries_header">
17297            <th class="th_details" colspan="5">Details</th>
17298          </tr>
17299          <tr class="entry_cont">
17300            <td class="entry_details" colspan="5">
17301              <p>The maximum frame rate that can be supported by a camera subsystem is
17302a function of many factors:</p>
17303<ul>
17304<li>Requested resolutions of output image streams</li>
17305<li>Availability of binning /<wbr/> skipping modes on the imager</li>
17306<li>The bandwidth of the imager interface</li>
17307<li>The bandwidth of the various ISP processing blocks</li>
17308</ul>
17309<p>Since these factors can vary greatly between different ISPs and
17310sensors,<wbr/> the camera abstraction tries to represent the bandwidth
17311restrictions with as simple a model as possible.<wbr/></p>
17312<p>The model presented has the following characteristics:</p>
17313<ul>
17314<li>The image sensor is always configured to output the smallest
17315resolution possible given the application's requested output stream
17316sizes.<wbr/>  The smallest resolution is defined as being at least as large
17317as the largest requested output stream size; the camera pipeline must
17318never digitally upsample sensor data when the crop region covers the
17319whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
17320resolutions are configured,<wbr/> the sensor can provide a higher frame
17321rate.<wbr/></li>
17322<li>Since any request may use any or all the currently configured
17323output streams,<wbr/> the sensor and ISP must be configured to support
17324scaling a single capture to all the streams at the same time.<wbr/>  This
17325means the camera pipeline must be ready to produce the largest
17326requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
17327frame rate of a given configured stream set is governed only by the
17328largest requested stream resolution.<wbr/></li>
17329<li>Using more than one output stream in a request does not affect the
17330frame duration.<wbr/></li>
17331<li>Certain format-streams may need to do additional background processing
17332before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
17333can run concurrently to the rest of the camera pipeline,<wbr/> but
17334cannot process more than 1 capture at a time.<wbr/></li>
17335</ul>
17336<p>The necessary information for the application,<wbr/> given the model above,<wbr/>
17337is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field
17338using StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size).<wbr/>
17339These are used to determine the maximum frame rate /<wbr/> minimum frame
17340duration that is possible for a given stream configuration.<wbr/></p>
17341<p>Specifically,<wbr/> the application can use the following rules to
17342determine the minimum frame duration it can request from the camera
17343device:</p>
17344<ol>
17345<li>Let the set of currently configured input/<wbr/>output streams
17346be called <code>S</code>.<wbr/></li>
17347<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by
17348looking it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using
17349StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size) (with
17350its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called
17351<code>F</code>.<wbr/></li>
17352<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
17353for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
17354used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
17355</ol>
17356<p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in
17357StreamConfigurationMap#getOutputStallDuration(int,<wbr/>Size) using its
17358respective size/<wbr/>format),<wbr/> then the frame duration in
17359<code>F</code> determines the steady state frame rate that the application will
17360get if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind
17361of request be called <code>Rsimple</code>.<wbr/></p>
17362<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
17363by a single capture of a new request <code>Rstall</code> (which has at least
17364one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
17365same minimum frame duration this will not cause a frame rate loss
17366if all buffers from the previous <code>Rstall</code> have already been
17367delivered.<wbr/></p>
17368<p>For more details about stalling,<wbr/> see
17369StreamConfigurationMap#getOutputStallDuration(int,<wbr/>Size).<wbr/></p>
17370<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
17371OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
17372            </td>
17373          </tr>
17374
17375          <tr class="entries_header">
17376            <th class="th_details" colspan="5">HAL Implementation Details</th>
17377          </tr>
17378          <tr class="entry_cont">
17379            <td class="entry_details" colspan="5">
17380              <p>For more details about stalling,<wbr/> see
17381<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
17382            </td>
17383          </tr>
17384
17385          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17386           <!-- end of entry -->
17387        
17388                
17389          <tr class="entry" id="controls_android.sensor.sensitivity">
17390            <td class="entry_name
17391             " rowspan="5">
17392              android.<wbr/>sensor.<wbr/>sensitivity
17393            </td>
17394            <td class="entry_type">
17395                <span class="entry_type_name">int32</span>
17396
17397              <span class="entry_type_visibility"> [public]</span>
17398
17399
17400              <span class="entry_type_hwlevel">[full] </span>
17401
17402
17403
17404
17405            </td> <!-- entry_type -->
17406
17407            <td class="entry_description">
17408              <p>The amount of gain applied to sensor data
17409before processing.<wbr/></p>
17410            </td>
17411
17412            <td class="entry_units">
17413              ISO arithmetic units
17414            </td>
17415
17416            <td class="entry_range">
17417              <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
17418            </td>
17419
17420            <td class="entry_tags">
17421              <ul class="entry_tags">
17422                  <li><a href="#tag_V1">V1</a></li>
17423              </ul>
17424            </td>
17425
17426          </tr>
17427          <tr class="entries_header">
17428            <th class="th_details" colspan="5">Details</th>
17429          </tr>
17430          <tr class="entry_cont">
17431            <td class="entry_details" colspan="5">
17432              <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
17433as defined in ISO 12232:2006.<wbr/></p>
17434<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
17435if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
17436is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
17437<p>If the camera device cannot apply the exact sensitivity
17438requested,<wbr/> it will reduce the gain to the nearest supported
17439value.<wbr/> The final sensitivity used will be available in the
17440output capture result.<wbr/></p>
17441            </td>
17442          </tr>
17443
17444          <tr class="entries_header">
17445            <th class="th_details" colspan="5">HAL Implementation Details</th>
17446          </tr>
17447          <tr class="entry_cont">
17448            <td class="entry_details" colspan="5">
17449              <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
17450            </td>
17451          </tr>
17452
17453          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17454           <!-- end of entry -->
17455        
17456                
17457          <tr class="entry" id="controls_android.sensor.testPatternData">
17458            <td class="entry_name
17459             " rowspan="5">
17460              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
17461            </td>
17462            <td class="entry_type">
17463                <span class="entry_type_name">int32</span>
17464                <span class="entry_type_container">x</span>
17465
17466                <span class="entry_type_array">
17467                  4
17468                </span>
17469              <span class="entry_type_visibility"> [public]</span>
17470
17471
17472
17473
17474
17475
17476            </td> <!-- entry_type -->
17477
17478            <td class="entry_description">
17479              <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
17480when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
17481            </td>
17482
17483            <td class="entry_units">
17484            </td>
17485
17486            <td class="entry_range">
17487            </td>
17488
17489            <td class="entry_tags">
17490            </td>
17491
17492          </tr>
17493          <tr class="entries_header">
17494            <th class="th_details" colspan="5">Details</th>
17495          </tr>
17496          <tr class="entry_cont">
17497            <td class="entry_details" colspan="5">
17498              <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
17499The camera device then uses the most significant X bits
17500that correspond to how many bits are in its Bayer raw sensor
17501output.<wbr/></p>
17502<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
1750310 most significant bits from each color channel.<wbr/></p>
17504            </td>
17505          </tr>
17506
17507          <tr class="entries_header">
17508            <th class="th_details" colspan="5">HAL Implementation Details</th>
17509          </tr>
17510          <tr class="entry_cont">
17511            <td class="entry_details" colspan="5">
17512              
17513            </td>
17514          </tr>
17515
17516          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17517           <!-- end of entry -->
17518        
17519                
17520          <tr class="entry" id="controls_android.sensor.testPatternMode">
17521            <td class="entry_name
17522             " rowspan="5">
17523              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
17524            </td>
17525            <td class="entry_type">
17526                <span class="entry_type_name entry_type_name_enum">int32</span>
17527
17528              <span class="entry_type_visibility"> [public]</span>
17529
17530
17531
17532
17533
17534                <ul class="entry_type_enum">
17535                  <li>
17536                    <span class="entry_type_enum_name">OFF</span>
17537                    <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
17538device returns captures from the image sensor.<wbr/></p>
17539<p>This is the default if the key is not set.<wbr/></p></span>
17540                  </li>
17541                  <li>
17542                    <span class="entry_type_enum_name">SOLID_COLOR</span>
17543                    <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
17544respective color channel provided in
17545<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
17546<p>For example:</p>
17547<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
17548</code></pre>
17549<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
17550<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
17551</code></pre>
17552<p>All red pixels are 100% red.<wbr/> Only the odd green pixels
17553are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
17554                  </li>
17555                  <li>
17556                    <span class="entry_type_enum_name">COLOR_BARS</span>
17557                    <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
17558<p>The vertical bars (left-to-right) are as follows:</p>
17559<ul>
17560<li>100% white</li>
17561<li>yellow</li>
17562<li>cyan</li>
17563<li>green</li>
17564<li>magenta</li>
17565<li>red</li>
17566<li>blue</li>
17567<li>black</li>
17568</ul>
17569<p>In general the image would look like the following:</p>
17570<pre><code>W Y C G M R B K
17571W Y C G M R B K
17572W Y C G M R B K
17573W Y C G M R B K
17574W Y C G M R B K
17575.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
17576.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
17577.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
17578
17579(B = Blue,<wbr/> K = Black)
17580</code></pre>
17581<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
17582When this is not possible,<wbr/> the bar size should be rounded
17583down to the nearest integer and the pattern can repeat
17584on the right side.<wbr/></p>
17585<p>Each bar's height must always take up the full sensor
17586pixel array height.<wbr/></p>
17587<p>Each pixel in this test pattern must be set to either
175880% intensity or 100% intensity.<wbr/></p></span>
17589                  </li>
17590                  <li>
17591                    <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
17592                    <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
17593each bar should start at its specified color at the top,<wbr/>
17594and fade to gray at the bottom.<wbr/></p>
17595<p>Furthermore each bar is further subdivided into a left and
17596right half.<wbr/> The left half should have a smooth gradient,<wbr/>
17597and the right half should have a quantized gradient.<wbr/></p>
17598<p>In particular,<wbr/> the right half's should consist of blocks of the
17599same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
17600<p>The least significant bits in the quantized gradient should
17601be copied from the most significant bits of the smooth gradient.<wbr/></p>
17602<p>The height of each bar should always be a multiple of 128.<wbr/>
17603When this is not the case,<wbr/> the pattern should repeat at the bottom
17604of the image.<wbr/></p></span>
17605                  </li>
17606                  <li>
17607                    <span class="entry_type_enum_name">PN9</span>
17608                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
17609generated from a PN9 512-bit sequence (typically implemented
17610in hardware with a linear feedback shift register).<wbr/></p>
17611<p>The generator should be reset at the beginning of each frame,<wbr/>
17612and thus each subsequent raw frame with this test pattern should
17613be exactly the same as the last.<wbr/></p></span>
17614                  </li>
17615                  <li>
17616                    <span class="entry_type_enum_name">CUSTOM1</span>
17617                    <span class="entry_type_enum_value">256</span>
17618                    <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
17619available only on this camera device are at least this numeric
17620value.<wbr/></p>
17621<p>All of the custom test patterns will be static
17622(that is the raw image must not vary from frame to frame).<wbr/></p></span>
17623                  </li>
17624                </ul>
17625
17626            </td> <!-- entry_type -->
17627
17628            <td class="entry_description">
17629              <p>When enabled,<wbr/> the sensor sends a test pattern instead of
17630doing a real exposure from the camera.<wbr/></p>
17631            </td>
17632
17633            <td class="entry_units">
17634            </td>
17635
17636            <td class="entry_range">
17637              <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
17638            </td>
17639
17640            <td class="entry_tags">
17641            </td>
17642
17643          </tr>
17644          <tr class="entries_header">
17645            <th class="th_details" colspan="5">Details</th>
17646          </tr>
17647          <tr class="entry_cont">
17648            <td class="entry_details" colspan="5">
17649              <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
17650by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
17651work as normal.<wbr/></p>
17652<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
17653occur (and that the test pattern remain unmodified,<wbr/> since the flash
17654would not actually affect it).<wbr/></p>
17655<p>Defaults to OFF.<wbr/></p>
17656            </td>
17657          </tr>
17658
17659          <tr class="entries_header">
17660            <th class="th_details" colspan="5">HAL Implementation Details</th>
17661          </tr>
17662          <tr class="entry_cont">
17663            <td class="entry_details" colspan="5">
17664              <p>All test patterns are specified in the Bayer domain.<wbr/></p>
17665<p>The HAL may choose to substitute test patterns from the sensor
17666with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
17667indistinguishable to the ISP whether the data came from the
17668sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
17669            </td>
17670          </tr>
17671
17672          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17673           <!-- end of entry -->
17674        
17675        
17676
17677      <!-- end of kind -->
17678      </tbody>
17679      <tr><td colspan="6" class="kind">static</td></tr>
17680
17681      <thead class="entries_header">
17682        <tr>
17683          <th class="th_name">Property Name</th>
17684          <th class="th_type">Type</th>
17685          <th class="th_description">Description</th>
17686          <th class="th_units">Units</th>
17687          <th class="th_range">Range</th>
17688          <th class="th_tags">Tags</th>
17689        </tr>
17690      </thead>
17691
17692      <tbody>
17693
17694        
17695
17696        
17697
17698        
17699
17700        
17701                
17702            
17703
17704                
17705          <tr class="entry" id="static_android.sensor.info.activeArraySize">
17706            <td class="entry_name
17707             " rowspan="5">
17708              android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
17709            </td>
17710            <td class="entry_type">
17711                <span class="entry_type_name">int32</span>
17712                <span class="entry_type_container">x</span>
17713
17714                <span class="entry_type_array">
17715                  4
17716                </span>
17717              <span class="entry_type_visibility"> [public as rectangle]</span>
17718
17719
17720              <span class="entry_type_hwlevel">[legacy] </span>
17721
17722
17723                <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
17724
17725
17726            </td> <!-- entry_type -->
17727
17728            <td class="entry_description">
17729              <p>The area of the image sensor which corresponds to
17730active pixels.<wbr/></p>
17731            </td>
17732
17733            <td class="entry_units">
17734              Pixel coordinates on the image sensor
17735            </td>
17736
17737            <td class="entry_range">
17738              
17739            </td>
17740
17741            <td class="entry_tags">
17742              <ul class="entry_tags">
17743                  <li><a href="#tag_RAW">RAW</a></li>
17744              </ul>
17745            </td>
17746
17747          </tr>
17748          <tr class="entries_header">
17749            <th class="th_details" colspan="5">Details</th>
17750          </tr>
17751          <tr class="entry_cont">
17752            <td class="entry_details" colspan="5">
17753              <p>This is the region of the sensor that actually receives light from the scene.<wbr/>
17754Therefore,<wbr/> the size of this region determines the maximum field of view and the maximum
17755number of pixels that an image from this sensor can contain.<wbr/></p>
17756<p>The rectangle is defined in terms of the full pixel array; (0,<wbr/>0) is the top-left of the
17757full pixel array,<wbr/> and the size of the full pixel array is given by
17758<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
17759<p>Most other keys listing pixel coordinates have their coordinate systems based on the
17760active array,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of the active array rectangle.<wbr/></p>
17761<p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
17762include black calibration pixels or other inactive regions.<wbr/></p>
17763            </td>
17764          </tr>
17765
17766          <tr class="entries_header">
17767            <th class="th_details" colspan="5">HAL Implementation Details</th>
17768          </tr>
17769          <tr class="entry_cont">
17770            <td class="entry_details" colspan="5">
17771              <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
17772&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
17773The <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>
17774            </td>
17775          </tr>
17776
17777          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17778           <!-- end of entry -->
17779        
17780                
17781          <tr class="entry" id="static_android.sensor.info.sensitivityRange">
17782            <td class="entry_name
17783             " rowspan="3">
17784              android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
17785            </td>
17786            <td class="entry_type">
17787                <span class="entry_type_name">int32</span>
17788                <span class="entry_type_container">x</span>
17789
17790                <span class="entry_type_array">
17791                  2
17792                </span>
17793              <span class="entry_type_visibility"> [public as rangeInt]</span>
17794
17795
17796              <span class="entry_type_hwlevel">[full] </span>
17797
17798
17799                <div class="entry_type_notes">Range of supported sensitivities</div>
17800
17801
17802            </td> <!-- entry_type -->
17803
17804            <td class="entry_description">
17805              <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
17806camera device.<wbr/></p>
17807            </td>
17808
17809            <td class="entry_units">
17810            </td>
17811
17812            <td class="entry_range">
17813              <p>Min &lt;= 100,<wbr/> Max &gt;= 800</p>
17814            </td>
17815
17816            <td class="entry_tags">
17817              <ul class="entry_tags">
17818                  <li><a href="#tag_BC">BC</a></li>
17819                  <li><a href="#tag_V1">V1</a></li>
17820              </ul>
17821            </td>
17822
17823          </tr>
17824          <tr class="entries_header">
17825            <th class="th_details" colspan="5">Details</th>
17826          </tr>
17827          <tr class="entry_cont">
17828            <td class="entry_details" colspan="5">
17829              <p>The values are the standard ISO sensitivity values,<wbr/>
17830as defined in ISO 12232:2006.<wbr/></p>
17831            </td>
17832          </tr>
17833
17834
17835          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17836           <!-- end of entry -->
17837        
17838                
17839          <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
17840            <td class="entry_name
17841             " rowspan="1">
17842              android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
17843            </td>
17844            <td class="entry_type">
17845                <span class="entry_type_name entry_type_name_enum">byte</span>
17846
17847              <span class="entry_type_visibility"> [public]</span>
17848
17849
17850              <span class="entry_type_hwlevel">[full] </span>
17851
17852
17853
17854                <ul class="entry_type_enum">
17855                  <li>
17856                    <span class="entry_type_enum_name">RGGB</span>
17857                  </li>
17858                  <li>
17859                    <span class="entry_type_enum_name">GRBG</span>
17860                  </li>
17861                  <li>
17862                    <span class="entry_type_enum_name">GBRG</span>
17863                  </li>
17864                  <li>
17865                    <span class="entry_type_enum_name">BGGR</span>
17866                  </li>
17867                  <li>
17868                    <span class="entry_type_enum_name">RGB</span>
17869                    <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
17870values for each pixel,<wbr/> instead of just 1 16-bit value
17871per pixel.<wbr/></p></span>
17872                  </li>
17873                </ul>
17874
17875            </td> <!-- entry_type -->
17876
17877            <td class="entry_description">
17878              <p>The arrangement of color filters on sensor;
17879represents the colors in the top-left 2x2 section of
17880the sensor,<wbr/> in reading order.<wbr/></p>
17881            </td>
17882
17883            <td class="entry_units">
17884            </td>
17885
17886            <td class="entry_range">
17887            </td>
17888
17889            <td class="entry_tags">
17890              <ul class="entry_tags">
17891                  <li><a href="#tag_RAW">RAW</a></li>
17892              </ul>
17893            </td>
17894
17895          </tr>
17896
17897
17898          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17899           <!-- end of entry -->
17900        
17901                
17902          <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
17903            <td class="entry_name
17904             " rowspan="3">
17905              android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
17906            </td>
17907            <td class="entry_type">
17908                <span class="entry_type_name">int64</span>
17909                <span class="entry_type_container">x</span>
17910
17911                <span class="entry_type_array">
17912                  2
17913                </span>
17914              <span class="entry_type_visibility"> [public as rangeLong]</span>
17915
17916
17917              <span class="entry_type_hwlevel">[full] </span>
17918
17919
17920                <div class="entry_type_notes">nanoseconds</div>
17921
17922
17923            </td> <!-- entry_type -->
17924
17925            <td class="entry_description">
17926              <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
17927by this camera device.<wbr/></p>
17928            </td>
17929
17930            <td class="entry_units">
17931              Nanoseconds
17932            </td>
17933
17934            <td class="entry_range">
17935              <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
17936capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
17937the maximum exposure time will be greater than 100ms.<wbr/></p>
17938            </td>
17939
17940            <td class="entry_tags">
17941              <ul class="entry_tags">
17942                  <li><a href="#tag_V1">V1</a></li>
17943              </ul>
17944            </td>
17945
17946          </tr>
17947
17948          <tr class="entries_header">
17949            <th class="th_details" colspan="5">HAL Implementation Details</th>
17950          </tr>
17951          <tr class="entry_cont">
17952            <td class="entry_details" colspan="5">
17953              <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
17954The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
17955100ms.<wbr/></p>
17956            </td>
17957          </tr>
17958
17959          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17960           <!-- end of entry -->
17961        
17962                
17963          <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
17964            <td class="entry_name
17965             " rowspan="5">
17966              android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
17967            </td>
17968            <td class="entry_type">
17969                <span class="entry_type_name">int64</span>
17970
17971              <span class="entry_type_visibility"> [public]</span>
17972
17973
17974              <span class="entry_type_hwlevel">[full] </span>
17975
17976
17977
17978
17979            </td> <!-- entry_type -->
17980
17981            <td class="entry_description">
17982              <p>The maximum possible frame duration (minimum frame rate) for
17983<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
17984            </td>
17985
17986            <td class="entry_units">
17987              Nanoseconds
17988            </td>
17989
17990            <td class="entry_range">
17991              <p>For FULL capability devices
17992(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<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>Attempting to use frame durations beyond the maximum will result in the frame
18008duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
18009durations.<wbr/></p>
18010<p>Refer to StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/>Size) for the minimum
18011frame duration values.<wbr/></p>
18012            </td>
18013          </tr>
18014
18015          <tr class="entries_header">
18016            <th class="th_details" colspan="5">HAL Implementation Details</th>
18017          </tr>
18018          <tr class="entry_cont">
18019            <td class="entry_details" colspan="5">
18020              <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
18021The maximum of the range SHOULD be at least
180221 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
18023<p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
18024equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
18025value (since exposure time overrides frame duration).<wbr/></p>
18026<p>Available minimum frame durations for JPEG must be no greater
18027than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
18028minimum frame durations (for that respective size).<wbr/></p>
18029<p>Since JPEG processing is considered offline and can take longer than
18030a single uncompressed capture,<wbr/> refer to
18031<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
18032for details about encoding this scenario.<wbr/></p>
18033            </td>
18034          </tr>
18035
18036          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18037           <!-- end of entry -->
18038        
18039                
18040          <tr class="entry" id="static_android.sensor.info.physicalSize">
18041            <td class="entry_name
18042             " rowspan="5">
18043              android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
18044            </td>
18045            <td class="entry_type">
18046                <span class="entry_type_name">float</span>
18047                <span class="entry_type_container">x</span>
18048
18049                <span class="entry_type_array">
18050                  2
18051                </span>
18052              <span class="entry_type_visibility"> [public as sizeF]</span>
18053
18054
18055              <span class="entry_type_hwlevel">[legacy] </span>
18056
18057
18058                <div class="entry_type_notes">width x height</div>
18059
18060
18061            </td> <!-- entry_type -->
18062
18063            <td class="entry_description">
18064              <p>The physical dimensions of the full pixel
18065array.<wbr/></p>
18066            </td>
18067
18068            <td class="entry_units">
18069              Millimeters
18070            </td>
18071
18072            <td class="entry_range">
18073            </td>
18074
18075            <td class="entry_tags">
18076              <ul class="entry_tags">
18077                  <li><a href="#tag_V1">V1</a></li>
18078                  <li><a href="#tag_BC">BC</a></li>
18079              </ul>
18080            </td>
18081
18082          </tr>
18083          <tr class="entries_header">
18084            <th class="th_details" colspan="5">Details</th>
18085          </tr>
18086          <tr class="entry_cont">
18087            <td class="entry_details" colspan="5">
18088              <p>This is the physical size of the sensor pixel
18089array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
18090            </td>
18091          </tr>
18092
18093          <tr class="entries_header">
18094            <th class="th_details" colspan="5">HAL Implementation Details</th>
18095          </tr>
18096          <tr class="entry_cont">
18097            <td class="entry_details" colspan="5">
18098              <p>Needed for FOV calculation for old API</p>
18099            </td>
18100          </tr>
18101
18102          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18103           <!-- end of entry -->
18104        
18105                
18106          <tr class="entry" id="static_android.sensor.info.pixelArraySize">
18107            <td class="entry_name
18108             " rowspan="3">
18109              android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
18110            </td>
18111            <td class="entry_type">
18112                <span class="entry_type_name">int32</span>
18113                <span class="entry_type_container">x</span>
18114
18115                <span class="entry_type_array">
18116                  2
18117                </span>
18118              <span class="entry_type_visibility"> [public as size]</span>
18119
18120
18121              <span class="entry_type_hwlevel">[legacy] </span>
18122
18123
18124
18125
18126            </td> <!-- entry_type -->
18127
18128            <td class="entry_description">
18129              <p>Dimensions of the full pixel array,<wbr/> possibly
18130including black calibration pixels.<wbr/></p>
18131            </td>
18132
18133            <td class="entry_units">
18134              Pixels
18135            </td>
18136
18137            <td class="entry_range">
18138            </td>
18139
18140            <td class="entry_tags">
18141              <ul class="entry_tags">
18142                  <li><a href="#tag_RAW">RAW</a></li>
18143                  <li><a href="#tag_BC">BC</a></li>
18144              </ul>
18145            </td>
18146
18147          </tr>
18148          <tr class="entries_header">
18149            <th class="th_details" colspan="5">Details</th>
18150          </tr>
18151          <tr class="entry_cont">
18152            <td class="entry_details" colspan="5">
18153              <p>The pixel count of the full pixel array,<wbr/>
18154which covers <a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a> area.<wbr/></p>
18155<p>If a camera device supports raw sensor formats,<wbr/> either this
18156or <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> is the maximum output
18157raw size listed in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/>
18158If a size corresponding to pixelArraySize is listed,<wbr/> the resulting
18159raw sensor image will include black pixels.<wbr/></p>
18160<p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
18161or are otherwise inactive.<wbr/>  The <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> key
18162defines the rectangle of active pixels that actually forms an image.<wbr/></p>
18163            </td>
18164          </tr>
18165
18166
18167          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18168           <!-- end of entry -->
18169        
18170                
18171          <tr class="entry" id="static_android.sensor.info.whiteLevel">
18172            <td class="entry_name
18173             " rowspan="5">
18174              android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
18175            </td>
18176            <td class="entry_type">
18177                <span class="entry_type_name">int32</span>
18178
18179              <span class="entry_type_visibility"> [public]</span>
18180
18181
18182
18183
18184
18185
18186            </td> <!-- entry_type -->
18187
18188            <td class="entry_description">
18189              <p>Maximum raw value output by sensor.<wbr/></p>
18190            </td>
18191
18192            <td class="entry_units">
18193            </td>
18194
18195            <td class="entry_range">
18196              <p>&gt; 255 (8-bit output)</p>
18197            </td>
18198
18199            <td class="entry_tags">
18200              <ul class="entry_tags">
18201                  <li><a href="#tag_RAW">RAW</a></li>
18202              </ul>
18203            </td>
18204
18205          </tr>
18206          <tr class="entries_header">
18207            <th class="th_details" colspan="5">Details</th>
18208          </tr>
18209          <tr class="entry_cont">
18210            <td class="entry_details" colspan="5">
18211              <p>This specifies the fully-saturated encoding level for the raw
18212sample values from the sensor.<wbr/>  This is typically caused by the
18213sensor becoming highly non-linear or clipping.<wbr/> The minimum for
18214each channel is specified by the offset in the
18215<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
18216<p>The white level is typically determined either by sensor bit depth
18217(8-14 bits is expected),<wbr/> or by the point where the sensor response
18218becomes too non-linear to be useful.<wbr/>  The default value for this is
18219maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
18220            </td>
18221          </tr>
18222
18223          <tr class="entries_header">
18224            <th class="th_details" colspan="5">HAL Implementation Details</th>
18225          </tr>
18226          <tr class="entry_cont">
18227            <td class="entry_details" colspan="5">
18228              <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
18229so the value for linear sensors should not be significantly lower
18230than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
18231            </td>
18232          </tr>
18233
18234          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18235           <!-- end of entry -->
18236        
18237                
18238          <tr class="entry" id="static_android.sensor.info.timestampSource">
18239            <td class="entry_name
18240             " rowspan="3">
18241              android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
18242            </td>
18243            <td class="entry_type">
18244                <span class="entry_type_name entry_type_name_enum">byte</span>
18245
18246              <span class="entry_type_visibility"> [public]</span>
18247
18248
18249              <span class="entry_type_hwlevel">[legacy] </span>
18250
18251
18252
18253                <ul class="entry_type_enum">
18254                  <li>
18255                    <span class="entry_type_enum_name">UNKNOWN</span>
18256                    <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/>
18257but can not be compared to timestamps from other subsystems
18258(e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
18259camera devices in the same system.<wbr/> Timestamps between streams and results for
18260a single camera instance are comparable,<wbr/> and the timestamps for all buffers
18261and the result metadata generated by a single capture are identical.<wbr/></p></span>
18262                  </li>
18263                  <li>
18264                    <span class="entry_type_enum_name">REALTIME</span>
18265                    <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
18266android.<wbr/>os.<wbr/>System<wbr/>Clock#elapsed<wbr/>Realtime<wbr/>Nanos(),<wbr/>
18267and they can be compared to other timestamps using that base.<wbr/></p></span>
18268                  </li>
18269                </ul>
18270
18271            </td> <!-- entry_type -->
18272
18273            <td class="entry_description">
18274              <p>The time base source for sensor capture start timestamps.<wbr/></p>
18275            </td>
18276
18277            <td class="entry_units">
18278            </td>
18279
18280            <td class="entry_range">
18281            </td>
18282
18283            <td class="entry_tags">
18284              <ul class="entry_tags">
18285                  <li><a href="#tag_V1">V1</a></li>
18286              </ul>
18287            </td>
18288
18289          </tr>
18290          <tr class="entries_header">
18291            <th class="th_details" colspan="5">Details</th>
18292          </tr>
18293          <tr class="entry_cont">
18294            <td class="entry_details" colspan="5">
18295              <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
18296may not based on a time source that can be compared to other system time sources.<wbr/></p>
18297<p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
18298can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
18299            </td>
18300          </tr>
18301
18302
18303          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18304           <!-- end of entry -->
18305        
18306                
18307          <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
18308            <td class="entry_name
18309             " rowspan="3">
18310              android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
18311            </td>
18312            <td class="entry_type">
18313                <span class="entry_type_name entry_type_name_enum">byte</span>
18314
18315              <span class="entry_type_visibility"> [public as boolean]</span>
18316
18317
18318
18319
18320
18321                <ul class="entry_type_enum">
18322                  <li>
18323                    <span class="entry_type_enum_name">FALSE</span>
18324                  </li>
18325                  <li>
18326                    <span class="entry_type_enum_name">TRUE</span>
18327                  </li>
18328                </ul>
18329
18330            </td> <!-- entry_type -->
18331
18332            <td class="entry_description">
18333              <p>Whether the RAW images output from this camera device are subject to
18334lens shading correction.<wbr/></p>
18335            </td>
18336
18337            <td class="entry_units">
18338            </td>
18339
18340            <td class="entry_range">
18341            </td>
18342
18343            <td class="entry_tags">
18344            </td>
18345
18346          </tr>
18347          <tr class="entries_header">
18348            <th class="th_details" colspan="5">Details</th>
18349          </tr>
18350          <tr class="entry_cont">
18351            <td class="entry_details" colspan="5">
18352              <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
18353have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
18354not be adjusted for lens shading correction.<wbr/>
18355See <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>
18356<p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
18357Devices with RAW capability will always report this information in this key.<wbr/></p>
18358            </td>
18359          </tr>
18360
18361
18362          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18363           <!-- end of entry -->
18364        
18365        
18366        
18367
18368                
18369          <tr class="entry" id="static_android.sensor.referenceIlluminant1">
18370            <td class="entry_name
18371             " rowspan="5">
18372              android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
18373            </td>
18374            <td class="entry_type">
18375                <span class="entry_type_name entry_type_name_enum">byte</span>
18376
18377              <span class="entry_type_visibility"> [public]</span>
18378
18379
18380
18381
18382
18383                <ul class="entry_type_enum">
18384                  <li>
18385                    <span class="entry_type_enum_name">DAYLIGHT</span>
18386                    <span class="entry_type_enum_value">1</span>
18387                  </li>
18388                  <li>
18389                    <span class="entry_type_enum_name">FLUORESCENT</span>
18390                    <span class="entry_type_enum_value">2</span>
18391                  </li>
18392                  <li>
18393                    <span class="entry_type_enum_name">TUNGSTEN</span>
18394                    <span class="entry_type_enum_value">3</span>
18395                    <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
18396                  </li>
18397                  <li>
18398                    <span class="entry_type_enum_name">FLASH</span>
18399                    <span class="entry_type_enum_value">4</span>
18400                  </li>
18401                  <li>
18402                    <span class="entry_type_enum_name">FINE_WEATHER</span>
18403                    <span class="entry_type_enum_value">9</span>
18404                  </li>
18405                  <li>
18406                    <span class="entry_type_enum_name">CLOUDY_WEATHER</span>
18407                    <span class="entry_type_enum_value">10</span>
18408                  </li>
18409                  <li>
18410                    <span class="entry_type_enum_name">SHADE</span>
18411                    <span class="entry_type_enum_value">11</span>
18412                  </li>
18413                  <li>
18414                    <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span>
18415                    <span class="entry_type_enum_value">12</span>
18416                    <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
18417                  </li>
18418                  <li>
18419                    <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span>
18420                    <span class="entry_type_enum_value">13</span>
18421                    <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
18422                  </li>
18423                  <li>
18424                    <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span>
18425                    <span class="entry_type_enum_value">14</span>
18426                    <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
18427                  </li>
18428                  <li>
18429                    <span class="entry_type_enum_name">WHITE_FLUORESCENT</span>
18430                    <span class="entry_type_enum_value">15</span>
18431                    <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
18432                  </li>
18433                  <li>
18434                    <span class="entry_type_enum_name">STANDARD_A</span>
18435                    <span class="entry_type_enum_value">17</span>
18436                  </li>
18437                  <li>
18438                    <span class="entry_type_enum_name">STANDARD_B</span>
18439                    <span class="entry_type_enum_value">18</span>
18440                  </li>
18441                  <li>
18442                    <span class="entry_type_enum_name">STANDARD_C</span>
18443                    <span class="entry_type_enum_value">19</span>
18444                  </li>
18445                  <li>
18446                    <span class="entry_type_enum_name">D55</span>
18447                    <span class="entry_type_enum_value">20</span>
18448                  </li>
18449                  <li>
18450                    <span class="entry_type_enum_name">D65</span>
18451                    <span class="entry_type_enum_value">21</span>
18452                  </li>
18453                  <li>
18454                    <span class="entry_type_enum_name">D75</span>
18455                    <span class="entry_type_enum_value">22</span>
18456                  </li>
18457                  <li>
18458                    <span class="entry_type_enum_name">D50</span>
18459                    <span class="entry_type_enum_value">23</span>
18460                  </li>
18461                  <li>
18462                    <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span>
18463                    <span class="entry_type_enum_value">24</span>
18464                  </li>
18465                </ul>
18466
18467            </td> <!-- entry_type -->
18468
18469            <td class="entry_description">
18470              <p>The standard reference illuminant used as the scene light source when
18471calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
18472<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
18473<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
18474            </td>
18475
18476            <td class="entry_units">
18477            </td>
18478
18479            <td class="entry_range">
18480            </td>
18481
18482            <td class="entry_tags">
18483              <ul class="entry_tags">
18484                  <li><a href="#tag_RAW">RAW</a></li>
18485              </ul>
18486            </td>
18487
18488          </tr>
18489          <tr class="entries_header">
18490            <th class="th_details" colspan="5">Details</th>
18491          </tr>
18492          <tr class="entry_cont">
18493            <td class="entry_details" colspan="5">
18494              <p>The values in this key correspond to the values defined for the
18495EXIF LightSource tag.<wbr/> These illuminants are standard light sources
18496that are often used calibrating camera devices.<wbr/></p>
18497<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
18498<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
18499<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
18500<p>Some devices may choose to provide a second set of calibration
18501information for improved quality,<wbr/> including
18502<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
18503            </td>
18504          </tr>
18505
18506          <tr class="entries_header">
18507            <th class="th_details" colspan="5">HAL Implementation Details</th>
18508          </tr>
18509          <tr class="entry_cont">
18510            <td class="entry_details" colspan="5">
18511              <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
18512and corresponding matrices must be present to support the RAW capability
18513and DNG output.<wbr/></p>
18514<p>When producing raw images with a color profile that has only been
18515calibrated against a single light source,<wbr/> it is valid to omit
18516<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
18517<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/>
18518and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
18519<p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
18520chosen so that it is representative of typical scene lighting.<wbr/>  In
18521general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
18522<p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
18523<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
18524chosen to represent the typical range of scene lighting conditions.<wbr/>
18525In general,<wbr/> low color temperature illuminant such as Standard-A will
18526be chosen for the first reference illuminant and a higher color
18527temperature illuminant such as D65 will be chosen for the second
18528reference illuminant.<wbr/></p>
18529            </td>
18530          </tr>
18531
18532          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18533           <!-- end of entry -->
18534        
18535                
18536          <tr class="entry" id="static_android.sensor.referenceIlluminant2">
18537            <td class="entry_name
18538             " rowspan="3">
18539              android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
18540            </td>
18541            <td class="entry_type">
18542                <span class="entry_type_name">byte</span>
18543
18544              <span class="entry_type_visibility"> [public]</span>
18545
18546
18547
18548
18549
18550
18551            </td> <!-- entry_type -->
18552
18553            <td class="entry_description">
18554              <p>The standard reference illuminant used as the scene light source when
18555calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
18556<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
18557<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
18558            </td>
18559
18560            <td class="entry_units">
18561            </td>
18562
18563            <td class="entry_range">
18564              <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
18565            </td>
18566
18567            <td class="entry_tags">
18568              <ul class="entry_tags">
18569                  <li><a href="#tag_RAW">RAW</a></li>
18570              </ul>
18571            </td>
18572
18573          </tr>
18574          <tr class="entries_header">
18575            <th class="th_details" colspan="5">Details</th>
18576          </tr>
18577          <tr class="entry_cont">
18578            <td class="entry_details" colspan="5">
18579              <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
18580<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
18581<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
18582<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
18583            </td>
18584          </tr>
18585
18586
18587          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18588           <!-- end of entry -->
18589        
18590                
18591          <tr class="entry" id="static_android.sensor.calibrationTransform1">
18592            <td class="entry_name
18593             " rowspan="3">
18594              android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
18595            </td>
18596            <td class="entry_type">
18597                <span class="entry_type_name">rational</span>
18598                <span class="entry_type_container">x</span>
18599
18600                <span class="entry_type_array">
18601                  3 x 3
18602                </span>
18603              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
18604
18605
18606
18607
18608                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
18609
18610
18611            </td> <!-- entry_type -->
18612
18613            <td class="entry_description">
18614              <p>A per-device calibration transform matrix that maps from the
18615reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
18616            </td>
18617
18618            <td class="entry_units">
18619            </td>
18620
18621            <td class="entry_range">
18622            </td>
18623
18624            <td class="entry_tags">
18625              <ul class="entry_tags">
18626                  <li><a href="#tag_RAW">RAW</a></li>
18627              </ul>
18628            </td>
18629
18630          </tr>
18631          <tr class="entries_header">
18632            <th class="th_details" colspan="5">Details</th>
18633          </tr>
18634          <tr class="entry_cont">
18635            <td class="entry_details" colspan="5">
18636              <p>This matrix is used to correct for per-device variations in the
18637sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
18638<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
18639contains a per-device calibration transform that maps colors
18640from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
18641colorspace) into this camera device's native sensor color
18642space under the first reference illuminant
18643(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
18644            </td>
18645          </tr>
18646
18647
18648          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18649           <!-- end of entry -->
18650        
18651                
18652          <tr class="entry" id="static_android.sensor.calibrationTransform2">
18653            <td class="entry_name
18654             " rowspan="3">
18655              android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
18656            </td>
18657            <td class="entry_type">
18658                <span class="entry_type_name">rational</span>
18659                <span class="entry_type_container">x</span>
18660
18661                <span class="entry_type_array">
18662                  3 x 3
18663                </span>
18664              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
18665
18666
18667
18668
18669                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
18670
18671
18672            </td> <!-- entry_type -->
18673
18674            <td class="entry_description">
18675              <p>A per-device calibration transform matrix that maps from the
18676reference sensor colorspace to the actual device sensor colorspace
18677(this is the colorspace of the raw buffer data).<wbr/></p>
18678            </td>
18679
18680            <td class="entry_units">
18681            </td>
18682
18683            <td class="entry_range">
18684            </td>
18685
18686            <td class="entry_tags">
18687              <ul class="entry_tags">
18688                  <li><a href="#tag_RAW">RAW</a></li>
18689              </ul>
18690            </td>
18691
18692          </tr>
18693          <tr class="entries_header">
18694            <th class="th_details" colspan="5">Details</th>
18695          </tr>
18696          <tr class="entry_cont">
18697            <td class="entry_details" colspan="5">
18698              <p>This matrix is used to correct for per-device variations in the
18699sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
18700<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
18701contains a per-device calibration transform that maps colors
18702from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
18703colorspace) into this camera device's native sensor color
18704space under the second reference illuminant
18705(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
18706<p>This matrix will only be present if the second reference
18707illuminant is present.<wbr/></p>
18708            </td>
18709          </tr>
18710
18711
18712          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18713           <!-- end of entry -->
18714        
18715                
18716          <tr class="entry" id="static_android.sensor.colorTransform1">
18717            <td class="entry_name
18718             " rowspan="3">
18719              android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
18720            </td>
18721            <td class="entry_type">
18722                <span class="entry_type_name">rational</span>
18723                <span class="entry_type_container">x</span>
18724
18725                <span class="entry_type_array">
18726                  3 x 3
18727                </span>
18728              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
18729
18730
18731
18732
18733                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
18734
18735
18736            </td> <!-- entry_type -->
18737
18738            <td class="entry_description">
18739              <p>A matrix that transforms color values from CIE XYZ color space to
18740reference sensor color space.<wbr/></p>
18741            </td>
18742
18743            <td class="entry_units">
18744            </td>
18745
18746            <td class="entry_range">
18747            </td>
18748
18749            <td class="entry_tags">
18750              <ul class="entry_tags">
18751                  <li><a href="#tag_RAW">RAW</a></li>
18752              </ul>
18753            </td>
18754
18755          </tr>
18756          <tr class="entries_header">
18757            <th class="th_details" colspan="5">Details</th>
18758          </tr>
18759          <tr class="entry_cont">
18760            <td class="entry_details" colspan="5">
18761              <p>This matrix is used to convert from the standard CIE XYZ color
18762space to the reference sensor colorspace,<wbr/> and is used when processing
18763raw buffer data.<wbr/></p>
18764<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
18765contains a color transform matrix that maps colors from the CIE
18766XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
18767"golden module" colorspace) under the first reference illuminant
18768(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
18769<p>The white points chosen in both the reference sensor color space
18770and the CIE XYZ colorspace when calculating this transform will
18771match the standard white point for the first reference illuminant
18772(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
18773            </td>
18774          </tr>
18775
18776
18777          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18778           <!-- end of entry -->
18779        
18780                
18781          <tr class="entry" id="static_android.sensor.colorTransform2">
18782            <td class="entry_name
18783             " rowspan="3">
18784              android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
18785            </td>
18786            <td class="entry_type">
18787                <span class="entry_type_name">rational</span>
18788                <span class="entry_type_container">x</span>
18789
18790                <span class="entry_type_array">
18791                  3 x 3
18792                </span>
18793              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
18794
18795
18796
18797
18798                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
18799
18800
18801            </td> <!-- entry_type -->
18802
18803            <td class="entry_description">
18804              <p>A matrix that transforms color values from CIE XYZ color space to
18805reference sensor color space.<wbr/></p>
18806            </td>
18807
18808            <td class="entry_units">
18809            </td>
18810
18811            <td class="entry_range">
18812            </td>
18813
18814            <td class="entry_tags">
18815              <ul class="entry_tags">
18816                  <li><a href="#tag_RAW">RAW</a></li>
18817              </ul>
18818            </td>
18819
18820          </tr>
18821          <tr class="entries_header">
18822            <th class="th_details" colspan="5">Details</th>
18823          </tr>
18824          <tr class="entry_cont">
18825            <td class="entry_details" colspan="5">
18826              <p>This matrix is used to convert from the standard CIE XYZ color
18827space to the reference sensor colorspace,<wbr/> and is used when processing
18828raw buffer data.<wbr/></p>
18829<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
18830contains a color transform matrix that maps colors from the CIE
18831XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
18832"golden module" colorspace) under the second reference illuminant
18833(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
18834<p>The white points chosen in both the reference sensor color space
18835and the CIE XYZ colorspace when calculating this transform will
18836match the standard white point for the second reference illuminant
18837(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
18838<p>This matrix will only be present if the second reference
18839illuminant is present.<wbr/></p>
18840            </td>
18841          </tr>
18842
18843
18844          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18845           <!-- end of entry -->
18846        
18847                
18848          <tr class="entry" id="static_android.sensor.forwardMatrix1">
18849            <td class="entry_name
18850             " rowspan="3">
18851              android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
18852            </td>
18853            <td class="entry_type">
18854                <span class="entry_type_name">rational</span>
18855                <span class="entry_type_container">x</span>
18856
18857                <span class="entry_type_array">
18858                  3 x 3
18859                </span>
18860              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
18861
18862
18863
18864
18865                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
18866
18867
18868            </td> <!-- entry_type -->
18869
18870            <td class="entry_description">
18871              <p>A matrix that transforms white balanced camera colors from the reference
18872sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
18873            </td>
18874
18875            <td class="entry_units">
18876            </td>
18877
18878            <td class="entry_range">
18879            </td>
18880
18881            <td class="entry_tags">
18882              <ul class="entry_tags">
18883                  <li><a href="#tag_RAW">RAW</a></li>
18884              </ul>
18885            </td>
18886
18887          </tr>
18888          <tr class="entries_header">
18889            <th class="th_details" colspan="5">Details</th>
18890          </tr>
18891          <tr class="entry_cont">
18892            <td class="entry_details" colspan="5">
18893              <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
18894is used when processing raw buffer data.<wbr/></p>
18895<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
18896a color transform matrix that maps white balanced colors from the
18897reference sensor color space to the CIE XYZ color space with a D50 white
18898point.<wbr/></p>
18899<p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
18900this matrix is chosen so that the standard white point for this reference
18901illuminant in the reference sensor colorspace is mapped to D50 in the
18902CIE XYZ colorspace.<wbr/></p>
18903            </td>
18904          </tr>
18905
18906
18907          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18908           <!-- end of entry -->
18909        
18910                
18911          <tr class="entry" id="static_android.sensor.forwardMatrix2">
18912            <td class="entry_name
18913             " rowspan="3">
18914              android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
18915            </td>
18916            <td class="entry_type">
18917                <span class="entry_type_name">rational</span>
18918                <span class="entry_type_container">x</span>
18919
18920                <span class="entry_type_array">
18921                  3 x 3
18922                </span>
18923              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
18924
18925
18926
18927
18928                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
18929
18930
18931            </td> <!-- entry_type -->
18932
18933            <td class="entry_description">
18934              <p>A matrix that transforms white balanced camera colors from the reference
18935sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
18936            </td>
18937
18938            <td class="entry_units">
18939            </td>
18940
18941            <td class="entry_range">
18942            </td>
18943
18944            <td class="entry_tags">
18945              <ul class="entry_tags">
18946                  <li><a href="#tag_RAW">RAW</a></li>
18947              </ul>
18948            </td>
18949
18950          </tr>
18951          <tr class="entries_header">
18952            <th class="th_details" colspan="5">Details</th>
18953          </tr>
18954          <tr class="entry_cont">
18955            <td class="entry_details" colspan="5">
18956              <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
18957is used when processing raw buffer data.<wbr/></p>
18958<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
18959a color transform matrix that maps white balanced colors from the
18960reference sensor color space to the CIE XYZ color space with a D50 white
18961point.<wbr/></p>
18962<p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
18963this matrix is chosen so that the standard white point for this reference
18964illuminant in the reference sensor colorspace is mapped to D50 in the
18965CIE XYZ colorspace.<wbr/></p>
18966<p>This matrix will only be present if the second reference
18967illuminant is present.<wbr/></p>
18968            </td>
18969          </tr>
18970
18971
18972          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18973           <!-- end of entry -->
18974        
18975                
18976          <tr class="entry" id="static_android.sensor.baseGainFactor">
18977            <td class="entry_name
18978             " rowspan="1">
18979              android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
18980            </td>
18981            <td class="entry_type">
18982                <span class="entry_type_name">rational</span>
18983
18984              <span class="entry_type_visibility"> [system]</span>
18985
18986
18987
18988
18989
18990
18991            </td> <!-- entry_type -->
18992
18993            <td class="entry_description">
18994              <p>Gain factor from electrons to raw units when
18995ISO=100</p>
18996            </td>
18997
18998            <td class="entry_units">
18999            </td>
19000
19001            <td class="entry_range">
19002            </td>
19003
19004            <td class="entry_tags">
19005              <ul class="entry_tags">
19006                  <li><a href="#tag_FUTURE">FUTURE</a></li>
19007              </ul>
19008            </td>
19009
19010          </tr>
19011
19012
19013          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19014           <!-- end of entry -->
19015        
19016                
19017          <tr class="entry" id="static_android.sensor.blackLevelPattern">
19018            <td class="entry_name
19019             " rowspan="5">
19020              android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
19021            </td>
19022            <td class="entry_type">
19023                <span class="entry_type_name">int32</span>
19024                <span class="entry_type_container">x</span>
19025
19026                <span class="entry_type_array">
19027                  4
19028                </span>
19029              <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
19030
19031
19032
19033
19034                <div class="entry_type_notes">2x2 raw count block</div>
19035
19036
19037            </td> <!-- entry_type -->
19038
19039            <td class="entry_description">
19040              <p>A fixed black level offset for each of the color filter arrangement
19041(CFA) mosaic channels.<wbr/></p>
19042            </td>
19043
19044            <td class="entry_units">
19045            </td>
19046
19047            <td class="entry_range">
19048              <p>&gt;= 0 for each.<wbr/></p>
19049            </td>
19050
19051            <td class="entry_tags">
19052              <ul class="entry_tags">
19053                  <li><a href="#tag_RAW">RAW</a></li>
19054              </ul>
19055            </td>
19056
19057          </tr>
19058          <tr class="entries_header">
19059            <th class="th_details" colspan="5">Details</th>
19060          </tr>
19061          <tr class="entry_cont">
19062            <td class="entry_details" colspan="5">
19063              <p>This key specifies the zero light value for each of the CFA mosaic
19064channels in the camera sensor.<wbr/>  The maximal value output by the
19065sensor 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>
19066<p>The values are given in the same order as channels listed for the CFA
19067layout 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
19068nth value given corresponds to the black level offset for the nth
19069color channel listed in the CFA.<wbr/></p>
19070            </td>
19071          </tr>
19072
19073          <tr class="entries_header">
19074            <th class="th_details" colspan="5">HAL Implementation Details</th>
19075          </tr>
19076          <tr class="entry_cont">
19077            <td class="entry_details" colspan="5">
19078              <p>The values are given in row-column scan order,<wbr/> with the first value
19079corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
19080            </td>
19081          </tr>
19082
19083          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19084           <!-- end of entry -->
19085        
19086                
19087          <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
19088            <td class="entry_name
19089             " rowspan="3">
19090              android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
19091            </td>
19092            <td class="entry_type">
19093                <span class="entry_type_name">int32</span>
19094
19095              <span class="entry_type_visibility"> [public]</span>
19096
19097
19098              <span class="entry_type_hwlevel">[full] </span>
19099
19100
19101
19102
19103            </td> <!-- entry_type -->
19104
19105            <td class="entry_description">
19106              <p>Maximum sensitivity that is implemented
19107purely through analog gain.<wbr/></p>
19108            </td>
19109
19110            <td class="entry_units">
19111            </td>
19112
19113            <td class="entry_range">
19114            </td>
19115
19116            <td class="entry_tags">
19117              <ul class="entry_tags">
19118                  <li><a href="#tag_V1">V1</a></li>
19119                  <li><a href="#tag_FULL">FULL</a></li>
19120              </ul>
19121            </td>
19122
19123          </tr>
19124          <tr class="entries_header">
19125            <th class="th_details" colspan="5">Details</th>
19126          </tr>
19127          <tr class="entry_cont">
19128            <td class="entry_details" colspan="5">
19129              <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
19130equal to this,<wbr/> all applied gain must be analog.<wbr/> For
19131values above this,<wbr/> the gain applied can be a mix of analog and
19132digital.<wbr/></p>
19133            </td>
19134          </tr>
19135
19136
19137          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19138           <!-- end of entry -->
19139        
19140                
19141          <tr class="entry" id="static_android.sensor.orientation">
19142            <td class="entry_name
19143             " rowspan="3">
19144              android.<wbr/>sensor.<wbr/>orientation
19145            </td>
19146            <td class="entry_type">
19147                <span class="entry_type_name">int32</span>
19148
19149              <span class="entry_type_visibility"> [public]</span>
19150
19151
19152              <span class="entry_type_hwlevel">[legacy] </span>
19153
19154
19155
19156
19157            </td> <!-- entry_type -->
19158
19159            <td class="entry_description">
19160              <p>Clockwise angle through which the output image needs to be rotated to be
19161upright on the device screen in its native orientation.<wbr/></p>
19162            </td>
19163
19164            <td class="entry_units">
19165              Degrees of clockwise rotation; always a multiple of
19166          90
19167            </td>
19168
19169            <td class="entry_range">
19170              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
19171            </td>
19172
19173            <td class="entry_tags">
19174              <ul class="entry_tags">
19175                  <li><a href="#tag_BC">BC</a></li>
19176              </ul>
19177            </td>
19178
19179          </tr>
19180          <tr class="entries_header">
19181            <th class="th_details" colspan="5">Details</th>
19182          </tr>
19183          <tr class="entry_cont">
19184            <td class="entry_details" colspan="5">
19185              <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
19186the sensor's coordinate system.<wbr/></p>
19187            </td>
19188          </tr>
19189
19190
19191          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19192           <!-- end of entry -->
19193        
19194                
19195          <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
19196            <td class="entry_name
19197             " rowspan="3">
19198              android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
19199            </td>
19200            <td class="entry_type">
19201                <span class="entry_type_name">int32</span>
19202                <span class="entry_type_container">x</span>
19203
19204                <span class="entry_type_array">
19205                  3
19206                </span>
19207              <span class="entry_type_visibility"> [system]</span>
19208
19209
19210
19211
19212                <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
19213
19214
19215            </td> <!-- entry_type -->
19216
19217            <td class="entry_description">
19218              <p>The number of input samples for each dimension of
19219<a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
19220            </td>
19221
19222            <td class="entry_units">
19223            </td>
19224
19225            <td class="entry_range">
19226              <p>Hue &gt;= 1,<wbr/>
19227Saturation &gt;= 2,<wbr/>
19228Value &gt;= 1</p>
19229            </td>
19230
19231            <td class="entry_tags">
19232              <ul class="entry_tags">
19233                  <li><a href="#tag_RAW">RAW</a></li>
19234              </ul>
19235            </td>
19236
19237          </tr>
19238          <tr class="entries_header">
19239            <th class="th_details" colspan="5">Details</th>
19240          </tr>
19241          <tr class="entry_cont">
19242            <td class="entry_details" colspan="5">
19243              <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
19244dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the
19245dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
19246element.<wbr/></p>
19247            </td>
19248          </tr>
19249
19250
19251          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19252           <!-- end of entry -->
19253        
19254                
19255          <tr class="entry" id="static_android.sensor.availableTestPatternModes">
19256            <td class="entry_name
19257             " rowspan="5">
19258              android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
19259            </td>
19260            <td class="entry_type">
19261                <span class="entry_type_name">int32</span>
19262                <span class="entry_type_container">x</span>
19263
19264                <span class="entry_type_array">
19265                  n
19266                </span>
19267              <span class="entry_type_visibility"> [public]</span>
19268
19269
19270
19271
19272                <div class="entry_type_notes">list of enums</div>
19273
19274
19275            </td> <!-- entry_type -->
19276
19277            <td class="entry_description">
19278              <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
19279supported by this camera device.<wbr/></p>
19280            </td>
19281
19282            <td class="entry_units">
19283            </td>
19284
19285            <td class="entry_range">
19286              <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
19287            </td>
19288
19289            <td class="entry_tags">
19290            </td>
19291
19292          </tr>
19293          <tr class="entries_header">
19294            <th class="th_details" colspan="5">Details</th>
19295          </tr>
19296          <tr class="entry_cont">
19297            <td class="entry_details" colspan="5">
19298              <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
19299            </td>
19300          </tr>
19301
19302          <tr class="entries_header">
19303            <th class="th_details" colspan="5">HAL Implementation Details</th>
19304          </tr>
19305          <tr class="entry_cont">
19306            <td class="entry_details" colspan="5">
19307              <p>All custom modes must be &gt;= CUSTOM1.<wbr/></p>
19308            </td>
19309          </tr>
19310
19311          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19312           <!-- end of entry -->
19313        
19314        
19315
19316      <!-- end of kind -->
19317      </tbody>
19318      <tr><td colspan="6" class="kind">dynamic</td></tr>
19319
19320      <thead class="entries_header">
19321        <tr>
19322          <th class="th_name">Property Name</th>
19323          <th class="th_type">Type</th>
19324          <th class="th_description">Description</th>
19325          <th class="th_units">Units</th>
19326          <th class="th_range">Range</th>
19327          <th class="th_tags">Tags</th>
19328        </tr>
19329      </thead>
19330
19331      <tbody>
19332
19333        
19334
19335        
19336
19337        
19338
19339        
19340
19341                
19342          <tr class="entry" id="dynamic_android.sensor.exposureTime">
19343            <td class="entry_name
19344             " rowspan="3">
19345              android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
19346            </td>
19347            <td class="entry_type">
19348                <span class="entry_type_name">int64</span>
19349
19350              <span class="entry_type_visibility"> [public]</span>
19351
19352
19353              <span class="entry_type_hwlevel">[full] </span>
19354
19355
19356
19357
19358            </td> <!-- entry_type -->
19359
19360            <td class="entry_description">
19361              <p>Duration each pixel is exposed to
19362light.<wbr/></p>
19363            </td>
19364
19365            <td class="entry_units">
19366              Nanoseconds
19367            </td>
19368
19369            <td class="entry_range">
19370              <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
19371            </td>
19372
19373            <td class="entry_tags">
19374              <ul class="entry_tags">
19375                  <li><a href="#tag_V1">V1</a></li>
19376              </ul>
19377            </td>
19378
19379          </tr>
19380          <tr class="entries_header">
19381            <th class="th_details" colspan="5">Details</th>
19382          </tr>
19383          <tr class="entry_cont">
19384            <td class="entry_details" colspan="5">
19385              <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
19386duration exposed to the nearest possible value (rather than expose longer).<wbr/>
19387The final exposure time used will be available in the output capture result.<wbr/></p>
19388<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
19389OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19390            </td>
19391          </tr>
19392
19393
19394          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19395           <!-- end of entry -->
19396        
19397                
19398          <tr class="entry" id="dynamic_android.sensor.frameDuration">
19399            <td class="entry_name
19400             " rowspan="5">
19401              android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
19402            </td>
19403            <td class="entry_type">
19404                <span class="entry_type_name">int64</span>
19405
19406              <span class="entry_type_visibility"> [public]</span>
19407
19408
19409              <span class="entry_type_hwlevel">[full] </span>
19410
19411
19412
19413
19414            </td> <!-- entry_type -->
19415
19416            <td class="entry_description">
19417              <p>Duration from start of frame exposure to
19418start of next frame exposure.<wbr/></p>
19419            </td>
19420
19421            <td class="entry_units">
19422              Nanoseconds
19423            </td>
19424
19425            <td class="entry_range">
19426              <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
19427<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
19428is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
19429            </td>
19430
19431            <td class="entry_tags">
19432              <ul class="entry_tags">
19433                  <li><a href="#tag_V1">V1</a></li>
19434              </ul>
19435            </td>
19436
19437          </tr>
19438          <tr class="entries_header">
19439            <th class="th_details" colspan="5">Details</th>
19440          </tr>
19441          <tr class="entry_cont">
19442            <td class="entry_details" colspan="5">
19443              <p>The maximum frame rate that can be supported by a camera subsystem is
19444a function of many factors:</p>
19445<ul>
19446<li>Requested resolutions of output image streams</li>
19447<li>Availability of binning /<wbr/> skipping modes on the imager</li>
19448<li>The bandwidth of the imager interface</li>
19449<li>The bandwidth of the various ISP processing blocks</li>
19450</ul>
19451<p>Since these factors can vary greatly between different ISPs and
19452sensors,<wbr/> the camera abstraction tries to represent the bandwidth
19453restrictions with as simple a model as possible.<wbr/></p>
19454<p>The model presented has the following characteristics:</p>
19455<ul>
19456<li>The image sensor is always configured to output the smallest
19457resolution possible given the application's requested output stream
19458sizes.<wbr/>  The smallest resolution is defined as being at least as large
19459as the largest requested output stream size; the camera pipeline must
19460never digitally upsample sensor data when the crop region covers the
19461whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
19462resolutions are configured,<wbr/> the sensor can provide a higher frame
19463rate.<wbr/></li>
19464<li>Since any request may use any or all the currently configured
19465output streams,<wbr/> the sensor and ISP must be configured to support
19466scaling a single capture to all the streams at the same time.<wbr/>  This
19467means the camera pipeline must be ready to produce the largest
19468requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
19469frame rate of a given configured stream set is governed only by the
19470largest requested stream resolution.<wbr/></li>
19471<li>Using more than one output stream in a request does not affect the
19472frame duration.<wbr/></li>
19473<li>Certain format-streams may need to do additional background processing
19474before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
19475can run concurrently to the rest of the camera pipeline,<wbr/> but
19476cannot process more than 1 capture at a time.<wbr/></li>
19477</ul>
19478<p>The necessary information for the application,<wbr/> given the model above,<wbr/>
19479is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field
19480using StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size).<wbr/>
19481These are used to determine the maximum frame rate /<wbr/> minimum frame
19482duration that is possible for a given stream configuration.<wbr/></p>
19483<p>Specifically,<wbr/> the application can use the following rules to
19484determine the minimum frame duration it can request from the camera
19485device:</p>
19486<ol>
19487<li>Let the set of currently configured input/<wbr/>output streams
19488be called <code>S</code>.<wbr/></li>
19489<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by
19490looking it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using
19491StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size) (with
19492its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called
19493<code>F</code>.<wbr/></li>
19494<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
19495for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
19496used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
19497</ol>
19498<p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in
19499StreamConfigurationMap#getOutputStallDuration(int,<wbr/>Size) using its
19500respective size/<wbr/>format),<wbr/> then the frame duration in
19501<code>F</code> determines the steady state frame rate that the application will
19502get if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind
19503of request be called <code>Rsimple</code>.<wbr/></p>
19504<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
19505by a single capture of a new request <code>Rstall</code> (which has at least
19506one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
19507same minimum frame duration this will not cause a frame rate loss
19508if all buffers from the previous <code>Rstall</code> have already been
19509delivered.<wbr/></p>
19510<p>For more details about stalling,<wbr/> see
19511StreamConfigurationMap#getOutputStallDuration(int,<wbr/>Size).<wbr/></p>
19512<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
19513OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19514            </td>
19515          </tr>
19516
19517          <tr class="entries_header">
19518            <th class="th_details" colspan="5">HAL Implementation Details</th>
19519          </tr>
19520          <tr class="entry_cont">
19521            <td class="entry_details" colspan="5">
19522              <p>For more details about stalling,<wbr/> see
19523<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
19524            </td>
19525          </tr>
19526
19527          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19528           <!-- end of entry -->
19529        
19530                
19531          <tr class="entry" id="dynamic_android.sensor.sensitivity">
19532            <td class="entry_name
19533             " rowspan="5">
19534              android.<wbr/>sensor.<wbr/>sensitivity
19535            </td>
19536            <td class="entry_type">
19537                <span class="entry_type_name">int32</span>
19538
19539              <span class="entry_type_visibility"> [public]</span>
19540
19541
19542              <span class="entry_type_hwlevel">[full] </span>
19543
19544
19545
19546
19547            </td> <!-- entry_type -->
19548
19549            <td class="entry_description">
19550              <p>The amount of gain applied to sensor data
19551before processing.<wbr/></p>
19552            </td>
19553
19554            <td class="entry_units">
19555              ISO arithmetic units
19556            </td>
19557
19558            <td class="entry_range">
19559              <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
19560            </td>
19561
19562            <td class="entry_tags">
19563              <ul class="entry_tags">
19564                  <li><a href="#tag_V1">V1</a></li>
19565              </ul>
19566            </td>
19567
19568          </tr>
19569          <tr class="entries_header">
19570            <th class="th_details" colspan="5">Details</th>
19571          </tr>
19572          <tr class="entry_cont">
19573            <td class="entry_details" colspan="5">
19574              <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
19575as defined in ISO 12232:2006.<wbr/></p>
19576<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
19577if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
19578is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
19579<p>If the camera device cannot apply the exact sensitivity
19580requested,<wbr/> it will reduce the gain to the nearest supported
19581value.<wbr/> The final sensitivity used will be available in the
19582output capture result.<wbr/></p>
19583            </td>
19584          </tr>
19585
19586          <tr class="entries_header">
19587            <th class="th_details" colspan="5">HAL Implementation Details</th>
19588          </tr>
19589          <tr class="entry_cont">
19590            <td class="entry_details" colspan="5">
19591              <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
19592            </td>
19593          </tr>
19594
19595          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19596           <!-- end of entry -->
19597        
19598                
19599          <tr class="entry" id="dynamic_android.sensor.timestamp">
19600            <td class="entry_name
19601             " rowspan="5">
19602              android.<wbr/>sensor.<wbr/>timestamp
19603            </td>
19604            <td class="entry_type">
19605                <span class="entry_type_name">int64</span>
19606
19607              <span class="entry_type_visibility"> [public]</span>
19608
19609
19610              <span class="entry_type_hwlevel">[legacy] </span>
19611
19612
19613
19614
19615            </td> <!-- entry_type -->
19616
19617            <td class="entry_description">
19618              <p>Time at start of exposure of first
19619row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
19620            </td>
19621
19622            <td class="entry_units">
19623              Nanoseconds
19624            </td>
19625
19626            <td class="entry_range">
19627              <p>&gt; 0</p>
19628            </td>
19629
19630            <td class="entry_tags">
19631              <ul class="entry_tags">
19632                  <li><a href="#tag_BC">BC</a></li>
19633              </ul>
19634            </td>
19635
19636          </tr>
19637          <tr class="entries_header">
19638            <th class="th_details" colspan="5">Details</th>
19639          </tr>
19640          <tr class="entry_cont">
19641            <td class="entry_details" colspan="5">
19642              <p>The timestamps are also included in all image
19643buffers produced for the same capture,<wbr/> and will be identical
19644on all the outputs.<wbr/></p>
19645<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
19646the timestamps measure time since an unspecified starting point,<wbr/>
19647and are monotonically increasing.<wbr/> They can be compared with the
19648timestamps for other captures from the same camera device,<wbr/> but are
19649not guaranteed to be comparable to any other time source.<wbr/></p>
19650<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
19651the timestamps measure time in the same timebase as
19652android.<wbr/>os.<wbr/>System<wbr/>Clock#elapsed<wbr/>Realtime<wbr/>Nanos(),<wbr/> and they can be
19653compared to other timestamps from other subsystems that are using
19654that base.<wbr/></p>
19655            </td>
19656          </tr>
19657
19658          <tr class="entries_header">
19659            <th class="th_details" colspan="5">HAL Implementation Details</th>
19660          </tr>
19661          <tr class="entry_cont">
19662            <td class="entry_details" colspan="5">
19663              <p>All timestamps must be in reference to the kernel's
19664CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
19665time spent asleep.<wbr/> This allows for synchronization with
19666sensors that continue to operate while the system is
19667otherwise asleep.<wbr/></p>
19668<p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
19669The timestamp must be synchronized with the timestamps from other
19670sensor subsystems that are using the same timebase.<wbr/></p>
19671            </td>
19672          </tr>
19673
19674          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19675           <!-- end of entry -->
19676        
19677                
19678          <tr class="entry" id="dynamic_android.sensor.temperature">
19679            <td class="entry_name
19680             " rowspan="1">
19681              android.<wbr/>sensor.<wbr/>temperature
19682            </td>
19683            <td class="entry_type">
19684                <span class="entry_type_name">float</span>
19685
19686              <span class="entry_type_visibility"> [system]</span>
19687
19688
19689
19690
19691
19692
19693            </td> <!-- entry_type -->
19694
19695            <td class="entry_description">
19696              <p>The temperature of the sensor,<wbr/> sampled at the time
19697exposure began for this frame.<wbr/></p>
19698<p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
19699somewhere close to it.<wbr/></p>
19700            </td>
19701
19702            <td class="entry_units">
19703              Celsius
19704            </td>
19705
19706            <td class="entry_range">
19707              <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
19708            </td>
19709
19710            <td class="entry_tags">
19711              <ul class="entry_tags">
19712                  <li><a href="#tag_FUTURE">FUTURE</a></li>
19713              </ul>
19714            </td>
19715
19716          </tr>
19717
19718
19719          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19720           <!-- end of entry -->
19721        
19722                
19723          <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
19724            <td class="entry_name
19725             " rowspan="3">
19726              android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
19727            </td>
19728            <td class="entry_type">
19729                <span class="entry_type_name">rational</span>
19730                <span class="entry_type_container">x</span>
19731
19732                <span class="entry_type_array">
19733                  3
19734                </span>
19735              <span class="entry_type_visibility"> [public]</span>
19736
19737
19738
19739
19740
19741
19742            </td> <!-- entry_type -->
19743
19744            <td class="entry_description">
19745              <p>The estimated camera neutral color in the native sensor colorspace at
19746the time of capture.<wbr/></p>
19747            </td>
19748
19749            <td class="entry_units">
19750            </td>
19751
19752            <td class="entry_range">
19753            </td>
19754
19755            <td class="entry_tags">
19756              <ul class="entry_tags">
19757                  <li><a href="#tag_RAW">RAW</a></li>
19758              </ul>
19759            </td>
19760
19761          </tr>
19762          <tr class="entries_header">
19763            <th class="th_details" colspan="5">Details</th>
19764          </tr>
19765          <tr class="entry_cont">
19766            <td class="entry_details" colspan="5">
19767              <p>This value gives the neutral color point encoded as an RGB value in the
19768native sensor color space.<wbr/>  The neutral color point indicates the
19769currently estimated white point of the scene illumination.<wbr/>  It can be
19770used to interpolate between the provided color transforms when
19771processing raw sensor data.<wbr/></p>
19772<p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
19773            </td>
19774          </tr>
19775
19776
19777          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19778           <!-- end of entry -->
19779        
19780                
19781          <tr class="entry" id="dynamic_android.sensor.noiseProfile">
19782            <td class="entry_name
19783             " rowspan="5">
19784              android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
19785            </td>
19786            <td class="entry_type">
19787                <span class="entry_type_name">double</span>
19788                <span class="entry_type_container">x</span>
19789
19790                <span class="entry_type_array">
19791                  2 x CFA Channels
19792                </span>
19793              <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
19794
19795
19796
19797
19798                <div class="entry_type_notes">Pairs of noise model coefficients</div>
19799
19800
19801            </td> <!-- entry_type -->
19802
19803            <td class="entry_description">
19804              <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
19805            </td>
19806
19807            <td class="entry_units">
19808            </td>
19809
19810            <td class="entry_range">
19811            </td>
19812
19813            <td class="entry_tags">
19814              <ul class="entry_tags">
19815                  <li><a href="#tag_RAW">RAW</a></li>
19816              </ul>
19817            </td>
19818
19819          </tr>
19820          <tr class="entries_header">
19821            <th class="th_details" colspan="5">Details</th>
19822          </tr>
19823          <tr class="entry_cont">
19824            <td class="entry_details" colspan="5">
19825              <p>This key contains two noise model coefficients for each CFA channel
19826corresponding to the sensor amplification (S) and sensor readout
19827noise (O).<wbr/>  These are given as pairs of coefficients for each channel
19828in the same order as channels listed for the CFA layout key
19829(see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/>  This is
19830represented as an array of Pair&lt;Double,<wbr/> Double&gt;,<wbr/> where
19831the first member of the Pair at index n is the S coefficient and the
19832second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
19833<p>These coefficients are used in a two parameter noise model to describe
19834the amount of noise present in the image for each CFA channel.<wbr/>  The
19835noise model used here is:</p>
19836<p>N(x) = sqrt(Sx + O)</p>
19837<p>Where x represents the recorded signal of a CFA channel normalized to
19838the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
19839that channel.<wbr/></p>
19840<p>A more detailed description of the noise model can be found in the
19841Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
19842            </td>
19843          </tr>
19844
19845          <tr class="entries_header">
19846            <th class="th_details" colspan="5">HAL Implementation Details</th>
19847          </tr>
19848          <tr class="entry_cont">
19849            <td class="entry_details" colspan="5">
19850              <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
19851an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
19852for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
19853channel,<wbr/> etc.<wbr/></p>
19854            </td>
19855          </tr>
19856
19857          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19858           <!-- end of entry -->
19859        
19860                
19861          <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
19862            <td class="entry_name
19863             " rowspan="3">
19864              android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
19865            </td>
19866            <td class="entry_type">
19867                <span class="entry_type_name">float</span>
19868                <span class="entry_type_container">x</span>
19869
19870                <span class="entry_type_array">
19871                  hue_samples x saturation_samples x value_samples x 3
19872                </span>
19873              <span class="entry_type_visibility"> [system]</span>
19874
19875
19876
19877
19878                <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
19879
19880
19881            </td> <!-- entry_type -->
19882
19883            <td class="entry_description">
19884              <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
19885for each pixel.<wbr/></p>
19886            </td>
19887
19888            <td class="entry_units">
19889              
19890          The hue shift is given in degrees; saturation and value scale factors are
19891          unitless and are between 0 and 1 inclusive
19892          
19893            </td>
19894
19895            <td class="entry_range">
19896            </td>
19897
19898            <td class="entry_tags">
19899              <ul class="entry_tags">
19900                  <li><a href="#tag_RAW">RAW</a></li>
19901              </ul>
19902            </td>
19903
19904          </tr>
19905          <tr class="entries_header">
19906            <th class="th_details" colspan="5">Details</th>
19907          </tr>
19908          <tr class="entry_cont">
19909            <td class="entry_details" colspan="5">
19910              <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
19911<a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
19912<p>Each entry of this map contains three floats corresponding to the
19913hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
19914hue shift has the lowest index.<wbr/> The map entries are stored in the key
19915in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
19916hue divisions in the middle loop,<wbr/> and the saturation divisions in the
19917inner loop.<wbr/> All zero input saturation entries are required to have a
19918value scale factor of 1.<wbr/>0.<wbr/></p>
19919            </td>
19920          </tr>
19921
19922
19923          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19924           <!-- end of entry -->
19925        
19926                
19927          <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
19928            <td class="entry_name
19929             " rowspan="3">
19930              android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
19931            </td>
19932            <td class="entry_type">
19933                <span class="entry_type_name">float</span>
19934                <span class="entry_type_container">x</span>
19935
19936                <span class="entry_type_array">
19937                  samples x 2
19938                </span>
19939              <span class="entry_type_visibility"> [system]</span>
19940
19941
19942
19943
19944                <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
19945
19946
19947            </td> <!-- entry_type -->
19948
19949            <td class="entry_description">
19950              <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
19951            </td>
19952
19953            <td class="entry_units">
19954            </td>
19955
19956            <td class="entry_range">
19957              <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
19958<code>[0,<wbr/> 1]</code>.<wbr/>  The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
19959sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
19960            </td>
19961
19962            <td class="entry_tags">
19963              <ul class="entry_tags">
19964                  <li><a href="#tag_RAW">RAW</a></li>
19965              </ul>
19966            </td>
19967
19968          </tr>
19969          <tr class="entries_header">
19970            <th class="th_details" colspan="5">Details</th>
19971          </tr>
19972          <tr class="entry_cont">
19973            <td class="entry_details" colspan="5">
19974              <p>This key contains a default tone curve that can be applied while
19975processing the image as a starting point for user adjustments.<wbr/>
19976The curve is specified as a list of value pairs in linear gamma.<wbr/>
19977The curve is interpolated using a cubic spline.<wbr/></p>
19978            </td>
19979          </tr>
19980
19981
19982          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19983           <!-- end of entry -->
19984        
19985                
19986          <tr class="entry" id="dynamic_android.sensor.greenSplit">
19987            <td class="entry_name
19988             " rowspan="5">
19989              android.<wbr/>sensor.<wbr/>green<wbr/>Split
19990            </td>
19991            <td class="entry_type">
19992                <span class="entry_type_name">float</span>
19993
19994              <span class="entry_type_visibility"> [public]</span>
19995
19996
19997
19998
19999
20000
20001            </td> <!-- entry_type -->
20002
20003            <td class="entry_description">
20004              <p>The worst-case divergence between Bayer green channels.<wbr/></p>
20005            </td>
20006
20007            <td class="entry_units">
20008            </td>
20009
20010            <td class="entry_range">
20011              <p>&gt;= 0</p>
20012            </td>
20013
20014            <td class="entry_tags">
20015              <ul class="entry_tags">
20016                  <li><a href="#tag_RAW">RAW</a></li>
20017              </ul>
20018            </td>
20019
20020          </tr>
20021          <tr class="entries_header">
20022            <th class="th_details" colspan="5">Details</th>
20023          </tr>
20024          <tr class="entry_cont">
20025            <td class="entry_details" colspan="5">
20026              <p>This value is an estimate of the worst case split between the
20027Bayer green channels in the red and blue rows in the sensor color
20028filter array.<wbr/></p>
20029<p>The green split is calculated as follows:</p>
20030<ol>
20031<li>A 5x5 pixel (or larger) window W within the active sensor array is
20032chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
20033mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/>  The location and size of the window
20034chosen is implementation defined,<wbr/> and should be chosen to provide a
20035green split estimate that is both representative of the entire image
20036for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
20037<li>The arithmetic mean of the green channels from the red
20038rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
20039<li>The arithmetic mean of the green channels from the blue
20040rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
20041<li>The maximum ratio R of the two means is computed as follows:
20042<code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
20043</ol>
20044<p>The ratio R is the green split divergence reported for this property,<wbr/>
20045which represents how much the green channels differ in the mosaic
20046pattern.<wbr/>  This value is typically used to determine the treatment of
20047the green mosaic channels when demosaicing.<wbr/></p>
20048<p>The green split value can be roughly interpreted as follows:</p>
20049<ul>
20050<li>R &lt; 1.<wbr/>03 is a negligible split (&lt;3% divergence).<wbr/></li>
20051<li>1.<wbr/>20 &lt;= R &gt;= 1.<wbr/>03 will require some software
20052correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
20053<li>R &gt; 1.<wbr/>20 will require strong software correction to produce
20054a usuable image (&gt;20% divergence).<wbr/></li>
20055</ul>
20056            </td>
20057          </tr>
20058
20059          <tr class="entries_header">
20060            <th class="th_details" colspan="5">HAL Implementation Details</th>
20061          </tr>
20062          <tr class="entry_cont">
20063            <td class="entry_details" colspan="5">
20064              <p>The green split given may be a static value based on prior
20065characterization of the camera sensor using the green split
20066calculation method given here over a large,<wbr/> representative,<wbr/> sample
20067set of images.<wbr/>  Other methods of calculation that produce equivalent
20068results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
20069            </td>
20070          </tr>
20071
20072          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20073           <!-- end of entry -->
20074        
20075                
20076          <tr class="entry" id="dynamic_android.sensor.testPatternData">
20077            <td class="entry_name
20078             " rowspan="5">
20079              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
20080            </td>
20081            <td class="entry_type">
20082                <span class="entry_type_name">int32</span>
20083                <span class="entry_type_container">x</span>
20084
20085                <span class="entry_type_array">
20086                  4
20087                </span>
20088              <span class="entry_type_visibility"> [public]</span>
20089
20090
20091
20092
20093
20094
20095            </td> <!-- entry_type -->
20096
20097            <td class="entry_description">
20098              <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
20099when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
20100            </td>
20101
20102            <td class="entry_units">
20103            </td>
20104
20105            <td class="entry_range">
20106            </td>
20107
20108            <td class="entry_tags">
20109            </td>
20110
20111          </tr>
20112          <tr class="entries_header">
20113            <th class="th_details" colspan="5">Details</th>
20114          </tr>
20115          <tr class="entry_cont">
20116            <td class="entry_details" colspan="5">
20117              <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
20118The camera device then uses the most significant X bits
20119that correspond to how many bits are in its Bayer raw sensor
20120output.<wbr/></p>
20121<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
2012210 most significant bits from each color channel.<wbr/></p>
20123            </td>
20124          </tr>
20125
20126          <tr class="entries_header">
20127            <th class="th_details" colspan="5">HAL Implementation Details</th>
20128          </tr>
20129          <tr class="entry_cont">
20130            <td class="entry_details" colspan="5">
20131              
20132            </td>
20133          </tr>
20134
20135          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20136           <!-- end of entry -->
20137        
20138                
20139          <tr class="entry" id="dynamic_android.sensor.testPatternMode">
20140            <td class="entry_name
20141             " rowspan="5">
20142              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
20143            </td>
20144            <td class="entry_type">
20145                <span class="entry_type_name entry_type_name_enum">int32</span>
20146
20147              <span class="entry_type_visibility"> [public]</span>
20148
20149
20150
20151
20152
20153                <ul class="entry_type_enum">
20154                  <li>
20155                    <span class="entry_type_enum_name">OFF</span>
20156                    <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
20157device returns captures from the image sensor.<wbr/></p>
20158<p>This is the default if the key is not set.<wbr/></p></span>
20159                  </li>
20160                  <li>
20161                    <span class="entry_type_enum_name">SOLID_COLOR</span>
20162                    <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
20163respective color channel provided in
20164<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
20165<p>For example:</p>
20166<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
20167</code></pre>
20168<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
20169<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
20170</code></pre>
20171<p>All red pixels are 100% red.<wbr/> Only the odd green pixels
20172are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
20173                  </li>
20174                  <li>
20175                    <span class="entry_type_enum_name">COLOR_BARS</span>
20176                    <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
20177<p>The vertical bars (left-to-right) are as follows:</p>
20178<ul>
20179<li>100% white</li>
20180<li>yellow</li>
20181<li>cyan</li>
20182<li>green</li>
20183<li>magenta</li>
20184<li>red</li>
20185<li>blue</li>
20186<li>black</li>
20187</ul>
20188<p>In general the image would look like the following:</p>
20189<pre><code>W Y C G M R B K
20190W Y C G M R B K
20191W Y C G M R B K
20192W Y C G M R B K
20193W Y C G M R B K
20194.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
20195.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
20196.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
20197
20198(B = Blue,<wbr/> K = Black)
20199</code></pre>
20200<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
20201When this is not possible,<wbr/> the bar size should be rounded
20202down to the nearest integer and the pattern can repeat
20203on the right side.<wbr/></p>
20204<p>Each bar's height must always take up the full sensor
20205pixel array height.<wbr/></p>
20206<p>Each pixel in this test pattern must be set to either
202070% intensity or 100% intensity.<wbr/></p></span>
20208                  </li>
20209                  <li>
20210                    <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
20211                    <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
20212each bar should start at its specified color at the top,<wbr/>
20213and fade to gray at the bottom.<wbr/></p>
20214<p>Furthermore each bar is further subdivided into a left and
20215right half.<wbr/> The left half should have a smooth gradient,<wbr/>
20216and the right half should have a quantized gradient.<wbr/></p>
20217<p>In particular,<wbr/> the right half's should consist of blocks of the
20218same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
20219<p>The least significant bits in the quantized gradient should
20220be copied from the most significant bits of the smooth gradient.<wbr/></p>
20221<p>The height of each bar should always be a multiple of 128.<wbr/>
20222When this is not the case,<wbr/> the pattern should repeat at the bottom
20223of the image.<wbr/></p></span>
20224                  </li>
20225                  <li>
20226                    <span class="entry_type_enum_name">PN9</span>
20227                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
20228generated from a PN9 512-bit sequence (typically implemented
20229in hardware with a linear feedback shift register).<wbr/></p>
20230<p>The generator should be reset at the beginning of each frame,<wbr/>
20231and thus each subsequent raw frame with this test pattern should
20232be exactly the same as the last.<wbr/></p></span>
20233                  </li>
20234                  <li>
20235                    <span class="entry_type_enum_name">CUSTOM1</span>
20236                    <span class="entry_type_enum_value">256</span>
20237                    <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
20238available only on this camera device are at least this numeric
20239value.<wbr/></p>
20240<p>All of the custom test patterns will be static
20241(that is the raw image must not vary from frame to frame).<wbr/></p></span>
20242                  </li>
20243                </ul>
20244
20245            </td> <!-- entry_type -->
20246
20247            <td class="entry_description">
20248              <p>When enabled,<wbr/> the sensor sends a test pattern instead of
20249doing a real exposure from the camera.<wbr/></p>
20250            </td>
20251
20252            <td class="entry_units">
20253            </td>
20254
20255            <td class="entry_range">
20256              <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
20257            </td>
20258
20259            <td class="entry_tags">
20260            </td>
20261
20262          </tr>
20263          <tr class="entries_header">
20264            <th class="th_details" colspan="5">Details</th>
20265          </tr>
20266          <tr class="entry_cont">
20267            <td class="entry_details" colspan="5">
20268              <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
20269by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
20270work as normal.<wbr/></p>
20271<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
20272occur (and that the test pattern remain unmodified,<wbr/> since the flash
20273would not actually affect it).<wbr/></p>
20274<p>Defaults to OFF.<wbr/></p>
20275            </td>
20276          </tr>
20277
20278          <tr class="entries_header">
20279            <th class="th_details" colspan="5">HAL Implementation Details</th>
20280          </tr>
20281          <tr class="entry_cont">
20282            <td class="entry_details" colspan="5">
20283              <p>All test patterns are specified in the Bayer domain.<wbr/></p>
20284<p>The HAL may choose to substitute test patterns from the sensor
20285with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
20286indistinguishable to the ISP whether the data came from the
20287sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
20288            </td>
20289          </tr>
20290
20291          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20292           <!-- end of entry -->
20293        
20294                
20295          <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
20296            <td class="entry_name
20297             " rowspan="5">
20298              android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
20299            </td>
20300            <td class="entry_type">
20301                <span class="entry_type_name">int64</span>
20302
20303              <span class="entry_type_visibility"> [public]</span>
20304
20305
20306              <span class="entry_type_hwlevel">[limited] </span>
20307
20308
20309
20310
20311            </td> <!-- entry_type -->
20312
20313            <td class="entry_description">
20314              <p>Duration between the start of first row exposure
20315and the start of last row exposure.<wbr/></p>
20316            </td>
20317
20318            <td class="entry_units">
20319              Nanoseconds
20320            </td>
20321
20322            <td class="entry_range">
20323              <p>&gt;= 0 and &lt;
20324StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size).<wbr/></p>
20325            </td>
20326
20327            <td class="entry_tags">
20328              <ul class="entry_tags">
20329                  <li><a href="#tag_V1">V1</a></li>
20330              </ul>
20331            </td>
20332
20333          </tr>
20334          <tr class="entries_header">
20335            <th class="th_details" colspan="5">Details</th>
20336          </tr>
20337          <tr class="entry_cont">
20338            <td class="entry_details" colspan="5">
20339              <p>This is the exposure time skew between the first and last
20340row exposure start times.<wbr/> The first row and the last row are
20341the first and last rows inside of the
20342<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20343<p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
20344to the frame readout time.<wbr/></p>
20345            </td>
20346          </tr>
20347
20348          <tr class="entries_header">
20349            <th class="th_details" colspan="5">HAL Implementation Details</th>
20350          </tr>
20351          <tr class="entry_cont">
20352            <td class="entry_details" colspan="5">
20353              <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
20354exposure at the same time.<wbr/></p>
20355            </td>
20356          </tr>
20357
20358          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20359           <!-- end of entry -->
20360        
20361        
20362
20363      <!-- end of kind -->
20364      </tbody>
20365
20366  <!-- end of section -->
20367  <tr><td colspan="6" id="section_shading" class="section">shading</td></tr>
20368
20369
20370      <tr><td colspan="6" class="kind">controls</td></tr>
20371
20372      <thead class="entries_header">
20373        <tr>
20374          <th class="th_name">Property Name</th>
20375          <th class="th_type">Type</th>
20376          <th class="th_description">Description</th>
20377          <th class="th_units">Units</th>
20378          <th class="th_range">Range</th>
20379          <th class="th_tags">Tags</th>
20380        </tr>
20381      </thead>
20382
20383      <tbody>
20384
20385        
20386
20387        
20388
20389        
20390
20391        
20392
20393                
20394          <tr class="entry" id="controls_android.shading.mode">
20395            <td class="entry_name
20396             " rowspan="3">
20397              android.<wbr/>shading.<wbr/>mode
20398            </td>
20399            <td class="entry_type">
20400                <span class="entry_type_name entry_type_name_enum">byte</span>
20401
20402              <span class="entry_type_visibility"> [public]</span>
20403
20404
20405              <span class="entry_type_hwlevel">[full] </span>
20406
20407
20408
20409                <ul class="entry_type_enum">
20410                  <li>
20411                    <span class="entry_type_enum_name">OFF</span>
20412                    <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
20413                  </li>
20414                  <li>
20415                    <span class="entry_type_enum_name">FAST</span>
20416                    <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
20417frame rate relative to sensor raw output</p></span>
20418                  </li>
20419                  <li>
20420                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
20421                    <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
20422cost of possibly reduced frame rate.<wbr/></p></span>
20423                  </li>
20424                </ul>
20425
20426            </td> <!-- entry_type -->
20427
20428            <td class="entry_description">
20429              <p>Quality of lens shading correction applied
20430to the image data.<wbr/></p>
20431            </td>
20432
20433            <td class="entry_units">
20434            </td>
20435
20436            <td class="entry_range">
20437              <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
20438            </td>
20439
20440            <td class="entry_tags">
20441            </td>
20442
20443          </tr>
20444          <tr class="entries_header">
20445            <th class="th_details" colspan="5">Details</th>
20446          </tr>
20447          <tr class="entry_cont">
20448            <td class="entry_details" colspan="5">
20449              <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
20450camera device,<wbr/> and an identity lens shading map data will be provided
20451if <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
20452shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
20453the 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
20454map shown below:</p>
20455<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/>
20456 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/>
20457 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/>
20458 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/>
20459 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/>
20460 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 ]
20461</code></pre>
20462<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
20463device.<wbr/> Applications can request lens shading map data by setting
20464<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
20465shading 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
20466data will be the one applied by the camera device for this capture request.<wbr/></p>
20467<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
20468the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
20469AWB 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>
20470OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
20471to be converged before using the returned shading map data.<wbr/></p>
20472            </td>
20473          </tr>
20474
20475
20476          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20477           <!-- end of entry -->
20478        
20479                
20480          <tr class="entry" id="controls_android.shading.strength">
20481            <td class="entry_name
20482             " rowspan="1">
20483              android.<wbr/>shading.<wbr/>strength
20484            </td>
20485            <td class="entry_type">
20486                <span class="entry_type_name">byte</span>
20487
20488              <span class="entry_type_visibility"> [system]</span>
20489
20490
20491
20492
20493
20494
20495            </td> <!-- entry_type -->
20496
20497            <td class="entry_description">
20498              <p>Control the amount of shading correction
20499applied to the images</p>
20500            </td>
20501
20502            <td class="entry_units">
20503              unitless: 1-10; 10 is full shading
20504          compensation
20505            </td>
20506
20507            <td class="entry_range">
20508            </td>
20509
20510            <td class="entry_tags">
20511              <ul class="entry_tags">
20512                  <li><a href="#tag_FUTURE">FUTURE</a></li>
20513              </ul>
20514            </td>
20515
20516          </tr>
20517
20518
20519          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20520           <!-- end of entry -->
20521        
20522        
20523
20524      <!-- end of kind -->
20525      </tbody>
20526      <tr><td colspan="6" class="kind">dynamic</td></tr>
20527
20528      <thead class="entries_header">
20529        <tr>
20530          <th class="th_name">Property Name</th>
20531          <th class="th_type">Type</th>
20532          <th class="th_description">Description</th>
20533          <th class="th_units">Units</th>
20534          <th class="th_range">Range</th>
20535          <th class="th_tags">Tags</th>
20536        </tr>
20537      </thead>
20538
20539      <tbody>
20540
20541        
20542
20543        
20544
20545        
20546
20547        
20548
20549                
20550          <tr class="entry" id="dynamic_android.shading.mode">
20551            <td class="entry_name
20552             " rowspan="3">
20553              android.<wbr/>shading.<wbr/>mode
20554            </td>
20555            <td class="entry_type">
20556                <span class="entry_type_name entry_type_name_enum">byte</span>
20557
20558              <span class="entry_type_visibility"> [public]</span>
20559
20560
20561              <span class="entry_type_hwlevel">[full] </span>
20562
20563
20564
20565                <ul class="entry_type_enum">
20566                  <li>
20567                    <span class="entry_type_enum_name">OFF</span>
20568                    <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
20569                  </li>
20570                  <li>
20571                    <span class="entry_type_enum_name">FAST</span>
20572                    <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
20573frame rate relative to sensor raw output</p></span>
20574                  </li>
20575                  <li>
20576                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
20577                    <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
20578cost of possibly reduced frame rate.<wbr/></p></span>
20579                  </li>
20580                </ul>
20581
20582            </td> <!-- entry_type -->
20583
20584            <td class="entry_description">
20585              <p>Quality of lens shading correction applied
20586to the image data.<wbr/></p>
20587            </td>
20588
20589            <td class="entry_units">
20590            </td>
20591
20592            <td class="entry_range">
20593              <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
20594            </td>
20595
20596            <td class="entry_tags">
20597            </td>
20598
20599          </tr>
20600          <tr class="entries_header">
20601            <th class="th_details" colspan="5">Details</th>
20602          </tr>
20603          <tr class="entry_cont">
20604            <td class="entry_details" colspan="5">
20605              <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
20606camera device,<wbr/> and an identity lens shading map data will be provided
20607if <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
20608shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
20609the 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
20610map shown below:</p>
20611<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/>
20612 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/>
20613 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/>
20614 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/>
20615 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/>
20616 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 ]
20617</code></pre>
20618<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
20619device.<wbr/> Applications can request lens shading map data by setting
20620<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
20621shading 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
20622data will be the one applied by the camera device for this capture request.<wbr/></p>
20623<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
20624the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
20625AWB 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>
20626OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
20627to be converged before using the returned shading map data.<wbr/></p>
20628            </td>
20629          </tr>
20630
20631
20632          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20633           <!-- end of entry -->
20634        
20635        
20636
20637      <!-- end of kind -->
20638      </tbody>
20639      <tr><td colspan="6" class="kind">static</td></tr>
20640
20641      <thead class="entries_header">
20642        <tr>
20643          <th class="th_name">Property Name</th>
20644          <th class="th_type">Type</th>
20645          <th class="th_description">Description</th>
20646          <th class="th_units">Units</th>
20647          <th class="th_range">Range</th>
20648          <th class="th_tags">Tags</th>
20649        </tr>
20650      </thead>
20651
20652      <tbody>
20653
20654        
20655
20656        
20657
20658        
20659
20660        
20661
20662                
20663          <tr class="entry" id="static_android.shading.availableModes">
20664            <td class="entry_name
20665             " rowspan="5">
20666              android.<wbr/>shading.<wbr/>available<wbr/>Modes
20667            </td>
20668            <td class="entry_type">
20669                <span class="entry_type_name">byte</span>
20670                <span class="entry_type_container">x</span>
20671
20672                <span class="entry_type_array">
20673                  n
20674                </span>
20675              <span class="entry_type_visibility"> [public as enumList]</span>
20676
20677
20678              <span class="entry_type_hwlevel">[legacy] </span>
20679
20680
20681                <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
20682
20683
20684            </td> <!-- entry_type -->
20685
20686            <td class="entry_description">
20687              <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>
20688            </td>
20689
20690            <td class="entry_units">
20691            </td>
20692
20693            <td class="entry_range">
20694              <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
20695            </td>
20696
20697            <td class="entry_tags">
20698            </td>
20699
20700          </tr>
20701          <tr class="entries_header">
20702            <th class="th_details" colspan="5">Details</th>
20703          </tr>
20704          <tr class="entry_cont">
20705            <td class="entry_details" colspan="5">
20706              <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
20707Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
20708list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
20709LEGACY devices will always only support FAST mode.<wbr/></p>
20710            </td>
20711          </tr>
20712
20713          <tr class="entries_header">
20714            <th class="th_details" colspan="5">HAL Implementation Details</th>
20715          </tr>
20716          <tr class="entry_cont">
20717            <td class="entry_details" colspan="5">
20718              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
20719available on the camera device,<wbr/> but the underlying implementation can be the same for
20720both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
20721slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
20722            </td>
20723          </tr>
20724
20725          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20726           <!-- end of entry -->
20727        
20728        
20729
20730      <!-- end of kind -->
20731      </tbody>
20732
20733  <!-- end of section -->
20734  <tr><td colspan="6" id="section_statistics" class="section">statistics</td></tr>
20735
20736
20737      <tr><td colspan="6" class="kind">controls</td></tr>
20738
20739      <thead class="entries_header">
20740        <tr>
20741          <th class="th_name">Property Name</th>
20742          <th class="th_type">Type</th>
20743          <th class="th_description">Description</th>
20744          <th class="th_units">Units</th>
20745          <th class="th_range">Range</th>
20746          <th class="th_tags">Tags</th>
20747        </tr>
20748      </thead>
20749
20750      <tbody>
20751
20752        
20753
20754        
20755
20756        
20757
20758        
20759
20760                
20761          <tr class="entry" id="controls_android.statistics.faceDetectMode">
20762            <td class="entry_name
20763             " rowspan="5">
20764              android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
20765            </td>
20766            <td class="entry_type">
20767                <span class="entry_type_name entry_type_name_enum">byte</span>
20768
20769              <span class="entry_type_visibility"> [public]</span>
20770
20771
20772              <span class="entry_type_hwlevel">[legacy] </span>
20773
20774
20775
20776                <ul class="entry_type_enum">
20777                  <li>
20778                    <span class="entry_type_enum_name">OFF</span>
20779                    <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
20780results.<wbr/></p></span>
20781                  </li>
20782                  <li>
20783                    <span class="entry_type_enum_name">SIMPLE</span>
20784                    <span class="entry_type_enum_optional">[optional]</span>
20785                    <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
20786                  </li>
20787                  <li>
20788                    <span class="entry_type_enum_name">FULL</span>
20789                    <span class="entry_type_enum_optional">[optional]</span>
20790                    <span class="entry_type_enum_notes"><p>Return all face
20791metadata.<wbr/></p>
20792<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
20793                  </li>
20794                </ul>
20795
20796            </td> <!-- entry_type -->
20797
20798            <td class="entry_description">
20799              <p>Operating mode for the face detector
20800unit.<wbr/></p>
20801            </td>
20802
20803            <td class="entry_units">
20804            </td>
20805
20806            <td class="entry_range">
20807              <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
20808            </td>
20809
20810            <td class="entry_tags">
20811              <ul class="entry_tags">
20812                  <li><a href="#tag_BC">BC</a></li>
20813              </ul>
20814            </td>
20815
20816          </tr>
20817          <tr class="entries_header">
20818            <th class="th_details" colspan="5">Details</th>
20819          </tr>
20820          <tr class="entry_cont">
20821            <td class="entry_details" colspan="5">
20822              <p>Whether face detection is enabled,<wbr/> and whether it
20823should output just the basic fields or the full set of
20824fields.<wbr/></p>
20825            </td>
20826          </tr>
20827
20828          <tr class="entries_header">
20829            <th class="th_details" colspan="5">HAL Implementation Details</th>
20830          </tr>
20831          <tr class="entry_cont">
20832            <td class="entry_details" colspan="5">
20833              <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
20834<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
20835FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
20836<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
20837            </td>
20838          </tr>
20839
20840          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20841           <!-- end of entry -->
20842        
20843                
20844          <tr class="entry" id="controls_android.statistics.histogramMode">
20845            <td class="entry_name
20846             " rowspan="1">
20847              android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
20848            </td>
20849            <td class="entry_type">
20850                <span class="entry_type_name entry_type_name_enum">byte</span>
20851
20852              <span class="entry_type_visibility"> [system as boolean]</span>
20853
20854
20855
20856
20857
20858                <ul class="entry_type_enum">
20859                  <li>
20860                    <span class="entry_type_enum_name">OFF</span>
20861                  </li>
20862                  <li>
20863                    <span class="entry_type_enum_name">ON</span>
20864                  </li>
20865                </ul>
20866
20867            </td> <!-- entry_type -->
20868
20869            <td class="entry_description">
20870              <p>Operating mode for histogram
20871generation</p>
20872            </td>
20873
20874            <td class="entry_units">
20875            </td>
20876
20877            <td class="entry_range">
20878            </td>
20879
20880            <td class="entry_tags">
20881              <ul class="entry_tags">
20882                  <li><a href="#tag_FUTURE">FUTURE</a></li>
20883              </ul>
20884            </td>
20885
20886          </tr>
20887
20888
20889          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20890           <!-- end of entry -->
20891        
20892                
20893          <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
20894            <td class="entry_name
20895             " rowspan="1">
20896              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
20897            </td>
20898            <td class="entry_type">
20899                <span class="entry_type_name entry_type_name_enum">byte</span>
20900
20901              <span class="entry_type_visibility"> [system as boolean]</span>
20902
20903
20904
20905
20906
20907                <ul class="entry_type_enum">
20908                  <li>
20909                    <span class="entry_type_enum_name">OFF</span>
20910                  </li>
20911                  <li>
20912                    <span class="entry_type_enum_name">ON</span>
20913                  </li>
20914                </ul>
20915
20916            </td> <!-- entry_type -->
20917
20918            <td class="entry_description">
20919              <p>Operating mode for sharpness map
20920generation</p>
20921            </td>
20922
20923            <td class="entry_units">
20924            </td>
20925
20926            <td class="entry_range">
20927            </td>
20928
20929            <td class="entry_tags">
20930              <ul class="entry_tags">
20931                  <li><a href="#tag_FUTURE">FUTURE</a></li>
20932              </ul>
20933            </td>
20934
20935          </tr>
20936
20937
20938          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20939           <!-- end of entry -->
20940        
20941                
20942          <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
20943            <td class="entry_name
20944             " rowspan="3">
20945              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
20946            </td>
20947            <td class="entry_type">
20948                <span class="entry_type_name entry_type_name_enum">byte</span>
20949
20950              <span class="entry_type_visibility"> [public as boolean]</span>
20951
20952
20953
20954
20955
20956                <ul class="entry_type_enum">
20957                  <li>
20958                    <span class="entry_type_enum_name">OFF</span>
20959                    <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
20960                  </li>
20961                  <li>
20962                    <span class="entry_type_enum_name">ON</span>
20963                    <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
20964                  </li>
20965                </ul>
20966
20967            </td> <!-- entry_type -->
20968
20969            <td class="entry_description">
20970              <p>Operating mode for hot pixel map generation.<wbr/></p>
20971            </td>
20972
20973            <td class="entry_units">
20974            </td>
20975
20976            <td class="entry_range">
20977              <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>
20978            </td>
20979
20980            <td class="entry_tags">
20981              <ul class="entry_tags">
20982                  <li><a href="#tag_V1">V1</a></li>
20983                  <li><a href="#tag_RAW">RAW</a></li>
20984              </ul>
20985            </td>
20986
20987          </tr>
20988          <tr class="entries_header">
20989            <th class="th_details" colspan="5">Details</th>
20990          </tr>
20991          <tr class="entry_cont">
20992            <td class="entry_details" colspan="5">
20993              <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/>
20994If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
20995            </td>
20996          </tr>
20997
20998
20999          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21000           <!-- end of entry -->
21001        
21002                
21003          <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
21004            <td class="entry_name
21005             " rowspan="3">
21006              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
21007            </td>
21008            <td class="entry_type">
21009                <span class="entry_type_name entry_type_name_enum">byte</span>
21010
21011              <span class="entry_type_visibility"> [public]</span>
21012
21013
21014              <span class="entry_type_hwlevel">[full] </span>
21015
21016
21017
21018                <ul class="entry_type_enum">
21019                  <li>
21020                    <span class="entry_type_enum_name">OFF</span>
21021                    <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
21022                  </li>
21023                  <li>
21024                    <span class="entry_type_enum_name">ON</span>
21025                    <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
21026                  </li>
21027                </ul>
21028
21029            </td> <!-- entry_type -->
21030
21031            <td class="entry_description">
21032              <p>Whether the camera device will output the lens
21033shading map in output result metadata.<wbr/></p>
21034            </td>
21035
21036            <td class="entry_units">
21037            </td>
21038
21039            <td class="entry_range">
21040              <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>
21041            </td>
21042
21043            <td class="entry_tags">
21044              <ul class="entry_tags">
21045                  <li><a href="#tag_RAW">RAW</a></li>
21046              </ul>
21047            </td>
21048
21049          </tr>
21050          <tr class="entries_header">
21051            <th class="th_details" colspan="5">Details</th>
21052          </tr>
21053          <tr class="entry_cont">
21054            <td class="entry_details" colspan="5">
21055              <p>When set to ON,<wbr/>
21056<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
21057the output result metadata.<wbr/></p>
21058<p>ON is always supported on devices with the RAW capability.<wbr/></p>
21059            </td>
21060          </tr>
21061
21062
21063          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21064           <!-- end of entry -->
21065        
21066        
21067
21068      <!-- end of kind -->
21069      </tbody>
21070      <tr><td colspan="6" class="kind">static</td></tr>
21071
21072      <thead class="entries_header">
21073        <tr>
21074          <th class="th_name">Property Name</th>
21075          <th class="th_type">Type</th>
21076          <th class="th_description">Description</th>
21077          <th class="th_units">Units</th>
21078          <th class="th_range">Range</th>
21079          <th class="th_tags">Tags</th>
21080        </tr>
21081      </thead>
21082
21083      <tbody>
21084
21085        
21086
21087        
21088
21089        
21090
21091        
21092                
21093            
21094
21095                
21096          <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
21097            <td class="entry_name
21098             " rowspan="3">
21099              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
21100            </td>
21101            <td class="entry_type">
21102                <span class="entry_type_name">byte</span>
21103                <span class="entry_type_container">x</span>
21104
21105                <span class="entry_type_array">
21106                  n
21107                </span>
21108              <span class="entry_type_visibility"> [public as enumList]</span>
21109
21110
21111              <span class="entry_type_hwlevel">[legacy] </span>
21112
21113
21114                <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
21115
21116
21117            </td> <!-- entry_type -->
21118
21119            <td class="entry_description">
21120              <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
21121supported by this camera device.<wbr/></p>
21122            </td>
21123
21124            <td class="entry_units">
21125            </td>
21126
21127            <td class="entry_range">
21128              <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
21129            </td>
21130
21131            <td class="entry_tags">
21132            </td>
21133
21134          </tr>
21135          <tr class="entries_header">
21136            <th class="th_details" colspan="5">Details</th>
21137          </tr>
21138          <tr class="entry_cont">
21139            <td class="entry_details" colspan="5">
21140              <p>OFF is always supported.<wbr/></p>
21141            </td>
21142          </tr>
21143
21144
21145          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21146           <!-- end of entry -->
21147        
21148                
21149          <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
21150            <td class="entry_name
21151             " rowspan="1">
21152              android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
21153            </td>
21154            <td class="entry_type">
21155                <span class="entry_type_name">int32</span>
21156
21157              <span class="entry_type_visibility"> [system]</span>
21158
21159
21160
21161
21162
21163
21164            </td> <!-- entry_type -->
21165
21166            <td class="entry_description">
21167              <p>Number of histogram buckets
21168supported</p>
21169            </td>
21170
21171            <td class="entry_units">
21172            </td>
21173
21174            <td class="entry_range">
21175              <p>&gt;= 64</p>
21176            </td>
21177
21178            <td class="entry_tags">
21179              <ul class="entry_tags">
21180                  <li><a href="#tag_FUTURE">FUTURE</a></li>
21181              </ul>
21182            </td>
21183
21184          </tr>
21185
21186
21187          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21188           <!-- end of entry -->
21189        
21190                
21191          <tr class="entry" id="static_android.statistics.info.maxFaceCount">
21192            <td class="entry_name
21193             " rowspan="1">
21194              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
21195            </td>
21196            <td class="entry_type">
21197                <span class="entry_type_name">int32</span>
21198
21199              <span class="entry_type_visibility"> [public]</span>
21200
21201
21202              <span class="entry_type_hwlevel">[legacy] </span>
21203
21204
21205
21206
21207            </td> <!-- entry_type -->
21208
21209            <td class="entry_description">
21210              <p>The maximum number of simultaneously detectable
21211faces.<wbr/></p>
21212            </td>
21213
21214            <td class="entry_units">
21215            </td>
21216
21217            <td class="entry_range">
21218              <p>0 for cameras without available face detection; otherwise:
21219<code>&gt;=4</code> for LIMITED or FULL hwlevel devices or
21220<code>&gt;0</code> for LEGACY devices.<wbr/></p>
21221            </td>
21222
21223            <td class="entry_tags">
21224              <ul class="entry_tags">
21225                  <li><a href="#tag_BC">BC</a></li>
21226              </ul>
21227            </td>
21228
21229          </tr>
21230
21231
21232          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21233           <!-- end of entry -->
21234        
21235                
21236          <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
21237            <td class="entry_name
21238             " rowspan="1">
21239              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
21240            </td>
21241            <td class="entry_type">
21242                <span class="entry_type_name">int32</span>
21243
21244              <span class="entry_type_visibility"> [system]</span>
21245
21246
21247
21248
21249
21250
21251            </td> <!-- entry_type -->
21252
21253            <td class="entry_description">
21254              <p>Maximum value possible for a histogram
21255bucket</p>
21256            </td>
21257
21258            <td class="entry_units">
21259            </td>
21260
21261            <td class="entry_range">
21262            </td>
21263
21264            <td class="entry_tags">
21265              <ul class="entry_tags">
21266                  <li><a href="#tag_FUTURE">FUTURE</a></li>
21267              </ul>
21268            </td>
21269
21270          </tr>
21271
21272
21273          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21274           <!-- end of entry -->
21275        
21276                
21277          <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
21278            <td class="entry_name
21279             " rowspan="1">
21280              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
21281            </td>
21282            <td class="entry_type">
21283                <span class="entry_type_name">int32</span>
21284
21285              <span class="entry_type_visibility"> [system]</span>
21286
21287
21288
21289
21290
21291
21292            </td> <!-- entry_type -->
21293
21294            <td class="entry_description">
21295              <p>Maximum value possible for a sharpness map
21296region.<wbr/></p>
21297            </td>
21298
21299            <td class="entry_units">
21300            </td>
21301
21302            <td class="entry_range">
21303            </td>
21304
21305            <td class="entry_tags">
21306              <ul class="entry_tags">
21307                  <li><a href="#tag_FUTURE">FUTURE</a></li>
21308              </ul>
21309            </td>
21310
21311          </tr>
21312
21313
21314          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21315           <!-- end of entry -->
21316        
21317                
21318          <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
21319            <td class="entry_name
21320             " rowspan="1">
21321              android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
21322            </td>
21323            <td class="entry_type">
21324                <span class="entry_type_name">int32</span>
21325                <span class="entry_type_container">x</span>
21326
21327                <span class="entry_type_array">
21328                  2
21329                </span>
21330              <span class="entry_type_visibility"> [system as size]</span>
21331
21332
21333
21334
21335                <div class="entry_type_notes">width x height</div>
21336
21337
21338            </td> <!-- entry_type -->
21339
21340            <td class="entry_description">
21341              <p>Dimensions of the sharpness
21342map</p>
21343            </td>
21344
21345            <td class="entry_units">
21346            </td>
21347
21348            <td class="entry_range">
21349              <p>Must be at least 32 x 32</p>
21350            </td>
21351
21352            <td class="entry_tags">
21353              <ul class="entry_tags">
21354                  <li><a href="#tag_FUTURE">FUTURE</a></li>
21355              </ul>
21356            </td>
21357
21358          </tr>
21359
21360
21361          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21362           <!-- end of entry -->
21363        
21364                
21365          <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
21366            <td class="entry_name
21367             " rowspan="3">
21368              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
21369            </td>
21370            <td class="entry_type">
21371                <span class="entry_type_name">byte</span>
21372                <span class="entry_type_container">x</span>
21373
21374                <span class="entry_type_array">
21375                  n
21376                </span>
21377              <span class="entry_type_visibility"> [public as boolean]</span>
21378
21379
21380
21381
21382                <div class="entry_type_notes">list of enums</div>
21383
21384
21385            </td> <!-- entry_type -->
21386
21387            <td class="entry_description">
21388              <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
21389supported by this camera device.<wbr/></p>
21390            </td>
21391
21392            <td class="entry_units">
21393            </td>
21394
21395            <td class="entry_range">
21396              <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
21397            </td>
21398
21399            <td class="entry_tags">
21400              <ul class="entry_tags">
21401                  <li><a href="#tag_V1">V1</a></li>
21402                  <li><a href="#tag_RAW">RAW</a></li>
21403              </ul>
21404            </td>
21405
21406          </tr>
21407          <tr class="entries_header">
21408            <th class="th_details" colspan="5">Details</th>
21409          </tr>
21410          <tr class="entry_cont">
21411            <td class="entry_details" colspan="5">
21412              <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
21413<code>false</code>.<wbr/></p>
21414<p>ON is always supported on devices with the RAW capability.<wbr/></p>
21415            </td>
21416          </tr>
21417
21418
21419          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21420           <!-- end of entry -->
21421        
21422                
21423          <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
21424            <td class="entry_name
21425             " rowspan="3">
21426              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
21427            </td>
21428            <td class="entry_type">
21429                <span class="entry_type_name">byte</span>
21430                <span class="entry_type_container">x</span>
21431
21432                <span class="entry_type_array">
21433                  n
21434                </span>
21435              <span class="entry_type_visibility"> [public]</span>
21436
21437
21438
21439
21440                <div class="entry_type_notes">list of enums</div>
21441
21442
21443            </td> <!-- entry_type -->
21444
21445            <td class="entry_description">
21446              <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
21447are supported by this camera device.<wbr/></p>
21448            </td>
21449
21450            <td class="entry_units">
21451            </td>
21452
21453            <td class="entry_range">
21454              <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
21455            </td>
21456
21457            <td class="entry_tags">
21458            </td>
21459
21460          </tr>
21461          <tr class="entries_header">
21462            <th class="th_details" colspan="5">Details</th>
21463          </tr>
21464          <tr class="entry_cont">
21465            <td class="entry_details" colspan="5">
21466              <p>If no lens shading map output is available for this camera device,<wbr/> this key will
21467contain only OFF.<wbr/></p>
21468<p>ON is always supported on devices with the RAW capability.<wbr/>
21469LEGACY mode devices will always only support OFF.<wbr/></p>
21470            </td>
21471          </tr>
21472
21473
21474          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21475           <!-- end of entry -->
21476        
21477        
21478        
21479
21480        
21481
21482      <!-- end of kind -->
21483      </tbody>
21484      <tr><td colspan="6" class="kind">dynamic</td></tr>
21485
21486      <thead class="entries_header">
21487        <tr>
21488          <th class="th_name">Property Name</th>
21489          <th class="th_type">Type</th>
21490          <th class="th_description">Description</th>
21491          <th class="th_units">Units</th>
21492          <th class="th_range">Range</th>
21493          <th class="th_tags">Tags</th>
21494        </tr>
21495      </thead>
21496
21497      <tbody>
21498
21499        
21500
21501        
21502
21503        
21504
21505        
21506
21507                
21508          <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
21509            <td class="entry_name
21510             " rowspan="5">
21511              android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
21512            </td>
21513            <td class="entry_type">
21514                <span class="entry_type_name entry_type_name_enum">byte</span>
21515
21516              <span class="entry_type_visibility"> [public]</span>
21517
21518
21519              <span class="entry_type_hwlevel">[legacy] </span>
21520
21521
21522
21523                <ul class="entry_type_enum">
21524                  <li>
21525                    <span class="entry_type_enum_name">OFF</span>
21526                    <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
21527results.<wbr/></p></span>
21528                  </li>
21529                  <li>
21530                    <span class="entry_type_enum_name">SIMPLE</span>
21531                    <span class="entry_type_enum_optional">[optional]</span>
21532                    <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
21533                  </li>
21534                  <li>
21535                    <span class="entry_type_enum_name">FULL</span>
21536                    <span class="entry_type_enum_optional">[optional]</span>
21537                    <span class="entry_type_enum_notes"><p>Return all face
21538metadata.<wbr/></p>
21539<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
21540                  </li>
21541                </ul>
21542
21543            </td> <!-- entry_type -->
21544
21545            <td class="entry_description">
21546              <p>Operating mode for the face detector
21547unit.<wbr/></p>
21548            </td>
21549
21550            <td class="entry_units">
21551            </td>
21552
21553            <td class="entry_range">
21554              <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
21555            </td>
21556
21557            <td class="entry_tags">
21558              <ul class="entry_tags">
21559                  <li><a href="#tag_BC">BC</a></li>
21560              </ul>
21561            </td>
21562
21563          </tr>
21564          <tr class="entries_header">
21565            <th class="th_details" colspan="5">Details</th>
21566          </tr>
21567          <tr class="entry_cont">
21568            <td class="entry_details" colspan="5">
21569              <p>Whether face detection is enabled,<wbr/> and whether it
21570should output just the basic fields or the full set of
21571fields.<wbr/></p>
21572            </td>
21573          </tr>
21574
21575          <tr class="entries_header">
21576            <th class="th_details" colspan="5">HAL Implementation Details</th>
21577          </tr>
21578          <tr class="entry_cont">
21579            <td class="entry_details" colspan="5">
21580              <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
21581<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
21582FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
21583<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
21584            </td>
21585          </tr>
21586
21587          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21588           <!-- end of entry -->
21589        
21590                
21591          <tr class="entry" id="dynamic_android.statistics.faceIds">
21592            <td class="entry_name
21593             " rowspan="3">
21594              android.<wbr/>statistics.<wbr/>face<wbr/>Ids
21595            </td>
21596            <td class="entry_type">
21597                <span class="entry_type_name">int32</span>
21598                <span class="entry_type_container">x</span>
21599
21600                <span class="entry_type_array">
21601                  n
21602                </span>
21603              <span class="entry_type_visibility"> [hidden]</span>
21604
21605
21606              <span class="entry_type_hwlevel">[legacy] </span>
21607
21608
21609
21610
21611            </td> <!-- entry_type -->
21612
21613            <td class="entry_description">
21614              <p>List of unique IDs for detected faces.<wbr/></p>
21615            </td>
21616
21617            <td class="entry_units">
21618            </td>
21619
21620            <td class="entry_range">
21621            </td>
21622
21623            <td class="entry_tags">
21624              <ul class="entry_tags">
21625                  <li><a href="#tag_BC">BC</a></li>
21626              </ul>
21627            </td>
21628
21629          </tr>
21630          <tr class="entries_header">
21631            <th class="th_details" colspan="5">Details</th>
21632          </tr>
21633          <tr class="entry_cont">
21634            <td class="entry_details" colspan="5">
21635              <p>Each detected face is given a unique ID that is valid for as long as the face is visible
21636to the camera device.<wbr/>  A face that leaves the field of view and later returns may be
21637assigned a new ID.<wbr/></p>
21638<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
21639            </td>
21640          </tr>
21641
21642
21643          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21644           <!-- end of entry -->
21645        
21646                
21647          <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
21648            <td class="entry_name
21649             " rowspan="3">
21650              android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
21651            </td>
21652            <td class="entry_type">
21653                <span class="entry_type_name">int32</span>
21654                <span class="entry_type_container">x</span>
21655
21656                <span class="entry_type_array">
21657                  n x 6
21658                </span>
21659              <span class="entry_type_visibility"> [hidden]</span>
21660
21661
21662              <span class="entry_type_hwlevel">[legacy] </span>
21663
21664
21665                <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
21666
21667
21668            </td> <!-- entry_type -->
21669
21670            <td class="entry_description">
21671              <p>List of landmarks for detected
21672faces.<wbr/></p>
21673            </td>
21674
21675            <td class="entry_units">
21676            </td>
21677
21678            <td class="entry_range">
21679            </td>
21680
21681            <td class="entry_tags">
21682              <ul class="entry_tags">
21683                  <li><a href="#tag_BC">BC</a></li>
21684              </ul>
21685            </td>
21686
21687          </tr>
21688          <tr class="entries_header">
21689            <th class="th_details" colspan="5">Details</th>
21690          </tr>
21691          <tr class="entry_cont">
21692            <td class="entry_details" colspan="5">
21693              <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
21694<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
21695<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
21696            </td>
21697          </tr>
21698
21699
21700          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21701           <!-- end of entry -->
21702        
21703                
21704          <tr class="entry" id="dynamic_android.statistics.faceRectangles">
21705            <td class="entry_name
21706             " rowspan="3">
21707              android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
21708            </td>
21709            <td class="entry_type">
21710                <span class="entry_type_name">int32</span>
21711                <span class="entry_type_container">x</span>
21712
21713                <span class="entry_type_array">
21714                  n x 4
21715                </span>
21716              <span class="entry_type_visibility"> [hidden as rectangle]</span>
21717
21718
21719              <span class="entry_type_hwlevel">[legacy] </span>
21720
21721
21722                <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
21723
21724
21725            </td> <!-- entry_type -->
21726
21727            <td class="entry_description">
21728              <p>List of the bounding rectangles for detected
21729faces.<wbr/></p>
21730            </td>
21731
21732            <td class="entry_units">
21733            </td>
21734
21735            <td class="entry_range">
21736            </td>
21737
21738            <td class="entry_tags">
21739              <ul class="entry_tags">
21740                  <li><a href="#tag_BC">BC</a></li>
21741              </ul>
21742            </td>
21743
21744          </tr>
21745          <tr class="entries_header">
21746            <th class="th_details" colspan="5">Details</th>
21747          </tr>
21748          <tr class="entry_cont">
21749            <td class="entry_details" colspan="5">
21750              <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
21751<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
21752<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
21753            </td>
21754          </tr>
21755
21756
21757          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21758           <!-- end of entry -->
21759        
21760                
21761          <tr class="entry" id="dynamic_android.statistics.faceScores">
21762            <td class="entry_name
21763             " rowspan="5">
21764              android.<wbr/>statistics.<wbr/>face<wbr/>Scores
21765            </td>
21766            <td class="entry_type">
21767                <span class="entry_type_name">byte</span>
21768                <span class="entry_type_container">x</span>
21769
21770                <span class="entry_type_array">
21771                  n
21772                </span>
21773              <span class="entry_type_visibility"> [hidden]</span>
21774
21775
21776              <span class="entry_type_hwlevel">[legacy] </span>
21777
21778
21779
21780
21781            </td> <!-- entry_type -->
21782
21783            <td class="entry_description">
21784              <p>List of the face confidence scores for
21785detected faces</p>
21786            </td>
21787
21788            <td class="entry_units">
21789            </td>
21790
21791            <td class="entry_range">
21792              <p>1-100</p>
21793            </td>
21794
21795            <td class="entry_tags">
21796              <ul class="entry_tags">
21797                  <li><a href="#tag_BC">BC</a></li>
21798              </ul>
21799            </td>
21800
21801          </tr>
21802          <tr class="entries_header">
21803            <th class="th_details" colspan="5">Details</th>
21804          </tr>
21805          <tr class="entry_cont">
21806            <td class="entry_details" colspan="5">
21807              <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
21808            </td>
21809          </tr>
21810
21811          <tr class="entries_header">
21812            <th class="th_details" colspan="5">HAL Implementation Details</th>
21813          </tr>
21814          <tr class="entry_cont">
21815            <td class="entry_details" colspan="5">
21816              <p>The value should be meaningful (for example,<wbr/> setting 100 at
21817all times is illegal).<wbr/></p>
21818            </td>
21819          </tr>
21820
21821          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21822           <!-- end of entry -->
21823        
21824                
21825          <tr class="entry" id="dynamic_android.statistics.faces">
21826            <td class="entry_name
21827             " rowspan="3">
21828              android.<wbr/>statistics.<wbr/>faces
21829            </td>
21830            <td class="entry_type">
21831                <span class="entry_type_name">int32</span>
21832                <span class="entry_type_container">x</span>
21833
21834                <span class="entry_type_array">
21835                  n
21836                </span>
21837              <span class="entry_type_visibility"> [public as face]</span>
21838
21839              <span class="entry_type_synthetic">[synthetic] </span>
21840
21841              <span class="entry_type_hwlevel">[legacy] </span>
21842
21843
21844
21845
21846            </td> <!-- entry_type -->
21847
21848            <td class="entry_description">
21849              <p>List of the faces detected through camera face detection
21850in this capture.<wbr/></p>
21851            </td>
21852
21853            <td class="entry_units">
21854            </td>
21855
21856            <td class="entry_range">
21857            </td>
21858
21859            <td class="entry_tags">
21860            </td>
21861
21862          </tr>
21863          <tr class="entries_header">
21864            <th class="th_details" colspan="5">Details</th>
21865          </tr>
21866          <tr class="entry_cont">
21867            <td class="entry_details" colspan="5">
21868              <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>
21869            </td>
21870          </tr>
21871
21872
21873          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21874           <!-- end of entry -->
21875        
21876                
21877          <tr class="entry" id="dynamic_android.statistics.histogram">
21878            <td class="entry_name
21879             " rowspan="3">
21880              android.<wbr/>statistics.<wbr/>histogram
21881            </td>
21882            <td class="entry_type">
21883                <span class="entry_type_name">int32</span>
21884                <span class="entry_type_container">x</span>
21885
21886                <span class="entry_type_array">
21887                  n x 3
21888                </span>
21889              <span class="entry_type_visibility"> [system]</span>
21890
21891
21892
21893
21894                <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>
21895
21896
21897            </td> <!-- entry_type -->
21898
21899            <td class="entry_description">
21900              <p>A 3-channel histogram based on the raw
21901sensor data</p>
21902            </td>
21903
21904            <td class="entry_units">
21905            </td>
21906
21907            <td class="entry_range">
21908            </td>
21909
21910            <td class="entry_tags">
21911              <ul class="entry_tags">
21912                  <li><a href="#tag_FUTURE">FUTURE</a></li>
21913              </ul>
21914            </td>
21915
21916          </tr>
21917          <tr class="entries_header">
21918            <th class="th_details" colspan="5">Details</th>
21919          </tr>
21920          <tr class="entry_cont">
21921            <td class="entry_details" colspan="5">
21922              <p>The k'th bucket (0-based) covers the input range
21923(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/>
21924(k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
21925supported,<wbr/> all channels should have the same data</p>
21926            </td>
21927          </tr>
21928
21929
21930          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21931           <!-- end of entry -->
21932        
21933                
21934          <tr class="entry" id="dynamic_android.statistics.histogramMode">
21935            <td class="entry_name
21936             " rowspan="1">
21937              android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
21938            </td>
21939            <td class="entry_type">
21940                <span class="entry_type_name entry_type_name_enum">byte</span>
21941
21942              <span class="entry_type_visibility"> [system as boolean]</span>
21943
21944
21945
21946
21947
21948                <ul class="entry_type_enum">
21949                  <li>
21950                    <span class="entry_type_enum_name">OFF</span>
21951                  </li>
21952                  <li>
21953                    <span class="entry_type_enum_name">ON</span>
21954                  </li>
21955                </ul>
21956
21957            </td> <!-- entry_type -->
21958
21959            <td class="entry_description">
21960              <p>Operating mode for histogram
21961generation</p>
21962            </td>
21963
21964            <td class="entry_units">
21965            </td>
21966
21967            <td class="entry_range">
21968            </td>
21969
21970            <td class="entry_tags">
21971              <ul class="entry_tags">
21972                  <li><a href="#tag_FUTURE">FUTURE</a></li>
21973              </ul>
21974            </td>
21975
21976          </tr>
21977
21978
21979          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21980           <!-- end of entry -->
21981        
21982                
21983          <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
21984            <td class="entry_name
21985             " rowspan="3">
21986              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
21987            </td>
21988            <td class="entry_type">
21989                <span class="entry_type_name">int32</span>
21990                <span class="entry_type_container">x</span>
21991
21992                <span class="entry_type_array">
21993                  n x m x 3
21994                </span>
21995              <span class="entry_type_visibility"> [system]</span>
21996
21997
21998
21999
22000                <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>
22001
22002
22003            </td> <!-- entry_type -->
22004
22005            <td class="entry_description">
22006              <p>A 3-channel sharpness map,<wbr/> based on the raw
22007sensor data</p>
22008            </td>
22009
22010            <td class="entry_units">
22011            </td>
22012
22013            <td class="entry_range">
22014            </td>
22015
22016            <td class="entry_tags">
22017              <ul class="entry_tags">
22018                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22019              </ul>
22020            </td>
22021
22022          </tr>
22023          <tr class="entries_header">
22024            <th class="th_details" colspan="5">Details</th>
22025          </tr>
22026          <tr class="entry_cont">
22027            <td class="entry_details" colspan="5">
22028              <p>If only a monochrome sharpness map is supported,<wbr/>
22029all channels should have the same data</p>
22030            </td>
22031          </tr>
22032
22033
22034          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22035           <!-- end of entry -->
22036        
22037                
22038          <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
22039            <td class="entry_name
22040             " rowspan="1">
22041              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
22042            </td>
22043            <td class="entry_type">
22044                <span class="entry_type_name entry_type_name_enum">byte</span>
22045
22046              <span class="entry_type_visibility"> [system as boolean]</span>
22047
22048
22049
22050
22051
22052                <ul class="entry_type_enum">
22053                  <li>
22054                    <span class="entry_type_enum_name">OFF</span>
22055                  </li>
22056                  <li>
22057                    <span class="entry_type_enum_name">ON</span>
22058                  </li>
22059                </ul>
22060
22061            </td> <!-- entry_type -->
22062
22063            <td class="entry_description">
22064              <p>Operating mode for sharpness map
22065generation</p>
22066            </td>
22067
22068            <td class="entry_units">
22069            </td>
22070
22071            <td class="entry_range">
22072            </td>
22073
22074            <td class="entry_tags">
22075              <ul class="entry_tags">
22076                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22077              </ul>
22078            </td>
22079
22080          </tr>
22081
22082
22083          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22084           <!-- end of entry -->
22085        
22086                
22087          <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
22088            <td class="entry_name
22089             " rowspan="3">
22090              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
22091            </td>
22092            <td class="entry_type">
22093                <span class="entry_type_name">byte</span>
22094
22095              <span class="entry_type_visibility"> [public as lensShadingMap]</span>
22096
22097
22098              <span class="entry_type_hwlevel">[full] </span>
22099
22100
22101
22102
22103            </td> <!-- entry_type -->
22104
22105            <td class="entry_description">
22106              <p>The shading map is a low-resolution floating-point map
22107that lists the coefficients used to correct for vignetting,<wbr/> for each
22108Bayer color channel.<wbr/></p>
22109            </td>
22110
22111            <td class="entry_units">
22112            </td>
22113
22114            <td class="entry_range">
22115              <p>Each gain factor is &gt;= 1</p>
22116            </td>
22117
22118            <td class="entry_tags">
22119            </td>
22120
22121          </tr>
22122          <tr class="entries_header">
22123            <th class="th_details" colspan="5">Details</th>
22124          </tr>
22125          <tr class="entry_cont">
22126            <td class="entry_details" colspan="5">
22127              <p>The least shaded section of the image should have a gain factor
22128of 1; all other sections should have gains above 1.<wbr/></p>
22129<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
22130must take into account the colorCorrection settings.<wbr/></p>
22131<p>The shading map is for the entire active pixel array,<wbr/> and is not
22132affected by the crop region specified in the request.<wbr/> Each shading map
22133entry is the value of the shading compensation map over a specific
22134pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
22135map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
22136(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
22137pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
22138The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
22139<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
22140channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
22141The shading map is stored in a fully interleaved format.<wbr/></p>
22142<p>The shading map should have on the order of 30-40 rows and columns,<wbr/>
22143and must be smaller than 64x64.<wbr/></p>
22144<p>As an example,<wbr/> given a very small map defined as:</p>
22145<pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
22146values =
22147[ 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/>
22148    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/>
22149  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/>
22150    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/>
22151  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/>
22152    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 ]
22153</code></pre>
22154<p>The low-resolution scaling map images for each channel are
22155(displayed using nearest-neighbor interpolation):</p>
22156<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
22157<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
22158<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
22159<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
22160<p>As a visualization only,<wbr/> inverting the full-color map to recover an
22161image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
22162<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
22163            </td>
22164          </tr>
22165
22166
22167          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22168           <!-- end of entry -->
22169        
22170                
22171          <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
22172            <td class="entry_name
22173             " rowspan="5">
22174              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
22175            </td>
22176            <td class="entry_type">
22177                <span class="entry_type_name">float</span>
22178                <span class="entry_type_container">x</span>
22179
22180                <span class="entry_type_array">
22181                  4 x n x m
22182                </span>
22183              <span class="entry_type_visibility"> [hidden]</span>
22184
22185
22186              <span class="entry_type_hwlevel">[full] </span>
22187
22188
22189                <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
22190
22191
22192            </td> <!-- entry_type -->
22193
22194            <td class="entry_description">
22195              <p>The shading map is a low-resolution floating-point map
22196that lists the coefficients used to correct for vignetting,<wbr/> for each
22197Bayer color channel of RAW image data.<wbr/></p>
22198            </td>
22199
22200            <td class="entry_units">
22201            </td>
22202
22203            <td class="entry_range">
22204              <p>Each gain factor is &gt;= 1</p>
22205            </td>
22206
22207            <td class="entry_tags">
22208            </td>
22209
22210          </tr>
22211          <tr class="entries_header">
22212            <th class="th_details" colspan="5">Details</th>
22213          </tr>
22214          <tr class="entry_cont">
22215            <td class="entry_details" colspan="5">
22216              <p>The least shaded section of the image should have a gain factor
22217of 1; all other sections should have gains above 1.<wbr/></p>
22218<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
22219must take into account the colorCorrection settings.<wbr/></p>
22220<p>The shading map is for the entire active pixel array,<wbr/> and is not
22221affected by the crop region specified in the request.<wbr/> Each shading map
22222entry is the value of the shading compensation map over a specific
22223pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
22224map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
22225(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
22226pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
22227The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
22228<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
22229channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
22230The shading map is stored in a fully interleaved format,<wbr/> and its size
22231is 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>
22232<p>The shading map should have on the order of 30-40 rows and columns,<wbr/>
22233and must be smaller than 64x64.<wbr/></p>
22234<p>As an example,<wbr/> given a very small map defined as:</p>
22235<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
22236<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
22237[ 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/>
22238    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/>
22239  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/>
22240    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/>
22241  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/>
22242    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 ]
22243</code></pre>
22244<p>The low-resolution scaling map images for each channel are
22245(displayed using nearest-neighbor interpolation):</p>
22246<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
22247<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
22248<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
22249<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
22250<p>As a visualization only,<wbr/> inverting the full-color map to recover an
22251image of a gray wall (using bicubic interpolation for visual quality)
22252as captured by the sensor gives:</p>
22253<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
22254<p>Note that the RAW image data might be subject to lens shading
22255correction not reported on this map.<wbr/> Query
22256<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
22257to lens shading correction.<wbr/> If <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a>
22258is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
22259correction.<wbr/> In the case full lens shading correction is applied to RAW
22260images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
22261In other words,<wbr/> the map reported in this key is the remaining lens shading
22262that needs to be applied on the RAW image to get images without lens shading
22263artifacts.<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
22264formats.<wbr/></p>
22265            </td>
22266          </tr>
22267
22268          <tr class="entries_header">
22269            <th class="th_details" colspan="5">HAL Implementation Details</th>
22270          </tr>
22271          <tr class="entry_cont">
22272            <td class="entry_details" colspan="5">
22273              <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
22274When AE and AWB are in AUTO modes
22275(<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
22276may have all the information it need to generate most accurate lens shading map.<wbr/> When
22277AE or AWB are in manual mode
22278(<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
22279may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
22280generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
22281the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
22282            </td>
22283          </tr>
22284
22285          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22286           <!-- end of entry -->
22287        
22288                
22289          <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
22290            <td class="entry_name
22291                entry_name_deprecated
22292             " rowspan="3">
22293              android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
22294            </td>
22295            <td class="entry_type">
22296                <span class="entry_type_name">float</span>
22297                <span class="entry_type_container">x</span>
22298
22299                <span class="entry_type_array">
22300                  4
22301                </span>
22302              <span class="entry_type_visibility"> [hidden]</span>
22303
22304
22305
22306              <span class="entry_type_deprecated">[deprecated] </span>
22307
22308                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
22309
22310
22311            </td> <!-- entry_type -->
22312
22313            <td class="entry_description">
22314              <p>The best-fit color channel gains calculated
22315by the camera device's statistics units for the current output frame.<wbr/></p>
22316            </td>
22317
22318            <td class="entry_units">
22319            </td>
22320
22321            <td class="entry_range">
22322              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
22323            </td>
22324
22325            <td class="entry_tags">
22326            </td>
22327
22328          </tr>
22329          <tr class="entries_header">
22330            <th class="th_details" colspan="5">Details</th>
22331          </tr>
22332          <tr class="entry_cont">
22333            <td class="entry_details" colspan="5">
22334              <p>This may be different than the gains used for this frame,<wbr/>
22335since statistics processing on data from a new frame
22336typically completes after the transform has already been
22337applied to that frame.<wbr/></p>
22338<p>The 4 channel gains are defined in Bayer domain,<wbr/>
22339see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
22340<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
22341regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
22342            </td>
22343          </tr>
22344
22345
22346          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22347           <!-- end of entry -->
22348        
22349                
22350          <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
22351            <td class="entry_name
22352                entry_name_deprecated
22353             " rowspan="3">
22354              android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
22355            </td>
22356            <td class="entry_type">
22357                <span class="entry_type_name">rational</span>
22358                <span class="entry_type_container">x</span>
22359
22360                <span class="entry_type_array">
22361                  3 x 3
22362                </span>
22363              <span class="entry_type_visibility"> [hidden]</span>
22364
22365
22366
22367              <span class="entry_type_deprecated">[deprecated] </span>
22368
22369                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
22370
22371
22372            </td> <!-- entry_type -->
22373
22374            <td class="entry_description">
22375              <p>The best-fit color transform matrix estimate
22376calculated by the camera device's statistics units for the current
22377output frame.<wbr/></p>
22378            </td>
22379
22380            <td class="entry_units">
22381            </td>
22382
22383            <td class="entry_range">
22384              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
22385            </td>
22386
22387            <td class="entry_tags">
22388            </td>
22389
22390          </tr>
22391          <tr class="entries_header">
22392            <th class="th_details" colspan="5">Details</th>
22393          </tr>
22394          <tr class="entry_cont">
22395            <td class="entry_details" colspan="5">
22396              <p>The camera device will provide the estimate from its
22397statistics unit on the white balance transforms to use
22398for the next frame.<wbr/> These are the values the camera device believes
22399are the best fit for the current output frame.<wbr/> This may
22400be different than the transform used for this frame,<wbr/> since
22401statistics processing on data from a new frame typically
22402completes after the transform has already been applied to
22403that frame.<wbr/></p>
22404<p>These estimates must be provided for all frames,<wbr/> even if
22405capture settings and color transforms are set by the application.<wbr/></p>
22406<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
22407regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
22408            </td>
22409          </tr>
22410
22411
22412          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22413           <!-- end of entry -->
22414        
22415                
22416          <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
22417            <td class="entry_name
22418             " rowspan="3">
22419              android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
22420            </td>
22421            <td class="entry_type">
22422                <span class="entry_type_name entry_type_name_enum">byte</span>
22423
22424              <span class="entry_type_visibility"> [public]</span>
22425
22426
22427              <span class="entry_type_hwlevel">[full] </span>
22428
22429
22430
22431                <ul class="entry_type_enum">
22432                  <li>
22433                    <span class="entry_type_enum_name">NONE</span>
22434                    <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
22435in the current scene.<wbr/></p></span>
22436                  </li>
22437                  <li>
22438                    <span class="entry_type_enum_name">50HZ</span>
22439                    <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
22440in the current scene.<wbr/></p></span>
22441                  </li>
22442                  <li>
22443                    <span class="entry_type_enum_name">60HZ</span>
22444                    <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
22445in the current scene.<wbr/></p></span>
22446                  </li>
22447                </ul>
22448
22449            </td> <!-- entry_type -->
22450
22451            <td class="entry_description">
22452              <p>The camera device estimated scene illumination lighting
22453frequency.<wbr/></p>
22454            </td>
22455
22456            <td class="entry_units">
22457            </td>
22458
22459            <td class="entry_range">
22460            </td>
22461
22462            <td class="entry_tags">
22463            </td>
22464
22465          </tr>
22466          <tr class="entries_header">
22467            <th class="th_details" colspan="5">Details</th>
22468          </tr>
22469          <tr class="entry_cont">
22470            <td class="entry_details" colspan="5">
22471              <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
22472that depends on the local utility power standards.<wbr/> This flicker must be
22473accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
22474The camera device uses this entry to tell the application what the scene
22475illuminant frequency is.<wbr/></p>
22476<p>When manual exposure control is enabled
22477(<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> ==
22478OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
22479antibanding,<wbr/> and the application can ensure it selects
22480exposure times that do not cause banding issues by looking
22481into this metadata field.<wbr/> See
22482<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
22483<p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
22484            </td>
22485          </tr>
22486
22487
22488          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22489           <!-- end of entry -->
22490        
22491                
22492          <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
22493            <td class="entry_name
22494             " rowspan="3">
22495              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
22496            </td>
22497            <td class="entry_type">
22498                <span class="entry_type_name entry_type_name_enum">byte</span>
22499
22500              <span class="entry_type_visibility"> [public as boolean]</span>
22501
22502
22503
22504
22505
22506                <ul class="entry_type_enum">
22507                  <li>
22508                    <span class="entry_type_enum_name">OFF</span>
22509                    <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
22510                  </li>
22511                  <li>
22512                    <span class="entry_type_enum_name">ON</span>
22513                    <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
22514                  </li>
22515                </ul>
22516
22517            </td> <!-- entry_type -->
22518
22519            <td class="entry_description">
22520              <p>Operating mode for hot pixel map generation.<wbr/></p>
22521            </td>
22522
22523            <td class="entry_units">
22524            </td>
22525
22526            <td class="entry_range">
22527              <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>
22528            </td>
22529
22530            <td class="entry_tags">
22531              <ul class="entry_tags">
22532                  <li><a href="#tag_V1">V1</a></li>
22533                  <li><a href="#tag_RAW">RAW</a></li>
22534              </ul>
22535            </td>
22536
22537          </tr>
22538          <tr class="entries_header">
22539            <th class="th_details" colspan="5">Details</th>
22540          </tr>
22541          <tr class="entry_cont">
22542            <td class="entry_details" colspan="5">
22543              <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/>
22544If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
22545            </td>
22546          </tr>
22547
22548
22549          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22550           <!-- end of entry -->
22551        
22552                
22553          <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
22554            <td class="entry_name
22555             " rowspan="5">
22556              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
22557            </td>
22558            <td class="entry_type">
22559                <span class="entry_type_name">int32</span>
22560                <span class="entry_type_container">x</span>
22561
22562                <span class="entry_type_array">
22563                  2 x n
22564                </span>
22565              <span class="entry_type_visibility"> [public as point]</span>
22566
22567
22568
22569
22570                <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
22571
22572
22573            </td> <!-- entry_type -->
22574
22575            <td class="entry_description">
22576              <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
22577            </td>
22578
22579            <td class="entry_units">
22580            </td>
22581
22582            <td class="entry_range">
22583              <p>n &lt;= number of pixels on the sensor.<wbr/>
22584The <code>(x,<wbr/> y)</code> coordinates must be bounded by
22585<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
22586            </td>
22587
22588            <td class="entry_tags">
22589              <ul class="entry_tags">
22590                  <li><a href="#tag_V1">V1</a></li>
22591                  <li><a href="#tag_RAW">RAW</a></li>
22592              </ul>
22593            </td>
22594
22595          </tr>
22596          <tr class="entries_header">
22597            <th class="th_details" colspan="5">Details</th>
22598          </tr>
22599          <tr class="entry_cont">
22600            <td class="entry_details" colspan="5">
22601              <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
22602<code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
22603bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
22604height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/>
22605This may include hot pixels that lie outside of the active array
22606bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
22607            </td>
22608          </tr>
22609
22610          <tr class="entries_header">
22611            <th class="th_details" colspan="5">HAL Implementation Details</th>
22612          </tr>
22613          <tr class="entry_cont">
22614            <td class="entry_details" colspan="5">
22615              <p>A hotpixel map contains the coordinates of pixels on the camera
22616sensor that do report valid values (usually due to defects in
22617the camera sensor).<wbr/> This includes pixels that are stuck at certain
22618values,<wbr/> or have a response that does not accuractly encode the
22619incoming light from the scene.<wbr/></p>
22620<p>To avoid performance issues,<wbr/> there should be significantly fewer hot
22621pixels than actual pixels on the camera sensor.<wbr/></p>
22622            </td>
22623          </tr>
22624
22625          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22626           <!-- end of entry -->
22627        
22628                
22629          <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
22630            <td class="entry_name
22631             " rowspan="3">
22632              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
22633            </td>
22634            <td class="entry_type">
22635                <span class="entry_type_name entry_type_name_enum">byte</span>
22636
22637              <span class="entry_type_visibility"> [public]</span>
22638
22639
22640              <span class="entry_type_hwlevel">[full] </span>
22641
22642
22643
22644                <ul class="entry_type_enum">
22645                  <li>
22646                    <span class="entry_type_enum_name">OFF</span>
22647                    <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
22648                  </li>
22649                  <li>
22650                    <span class="entry_type_enum_name">ON</span>
22651                    <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
22652                  </li>
22653                </ul>
22654
22655            </td> <!-- entry_type -->
22656
22657            <td class="entry_description">
22658              <p>Whether the camera device will output the lens
22659shading map in output result metadata.<wbr/></p>
22660            </td>
22661
22662            <td class="entry_units">
22663            </td>
22664
22665            <td class="entry_range">
22666              <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>
22667            </td>
22668
22669            <td class="entry_tags">
22670              <ul class="entry_tags">
22671                  <li><a href="#tag_RAW">RAW</a></li>
22672              </ul>
22673            </td>
22674
22675          </tr>
22676          <tr class="entries_header">
22677            <th class="th_details" colspan="5">Details</th>
22678          </tr>
22679          <tr class="entry_cont">
22680            <td class="entry_details" colspan="5">
22681              <p>When set to ON,<wbr/>
22682<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
22683the output result metadata.<wbr/></p>
22684<p>ON is always supported on devices with the RAW capability.<wbr/></p>
22685            </td>
22686          </tr>
22687
22688
22689          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22690           <!-- end of entry -->
22691        
22692        
22693
22694      <!-- end of kind -->
22695      </tbody>
22696
22697  <!-- end of section -->
22698  <tr><td colspan="6" id="section_tonemap" class="section">tonemap</td></tr>
22699
22700
22701      <tr><td colspan="6" class="kind">controls</td></tr>
22702
22703      <thead class="entries_header">
22704        <tr>
22705          <th class="th_name">Property Name</th>
22706          <th class="th_type">Type</th>
22707          <th class="th_description">Description</th>
22708          <th class="th_units">Units</th>
22709          <th class="th_range">Range</th>
22710          <th class="th_tags">Tags</th>
22711        </tr>
22712      </thead>
22713
22714      <tbody>
22715
22716        
22717
22718        
22719
22720        
22721
22722        
22723
22724                
22725          <tr class="entry" id="controls_android.tonemap.curveBlue">
22726            <td class="entry_name
22727             " rowspan="3">
22728              android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
22729            </td>
22730            <td class="entry_type">
22731                <span class="entry_type_name">float</span>
22732                <span class="entry_type_container">x</span>
22733
22734                <span class="entry_type_array">
22735                  n x 2
22736                </span>
22737              <span class="entry_type_visibility"> [hidden]</span>
22738
22739
22740              <span class="entry_type_hwlevel">[full] </span>
22741
22742
22743                <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>
22744
22745
22746            </td> <!-- entry_type -->
22747
22748            <td class="entry_description">
22749              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
22750channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
22751CONTRAST_<wbr/>CURVE.<wbr/></p>
22752            </td>
22753
22754            <td class="entry_units">
22755            </td>
22756
22757            <td class="entry_range">
22758            </td>
22759
22760            <td class="entry_tags">
22761            </td>
22762
22763          </tr>
22764          <tr class="entries_header">
22765            <th class="th_details" colspan="5">Details</th>
22766          </tr>
22767          <tr class="entry_cont">
22768            <td class="entry_details" colspan="5">
22769              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
22770            </td>
22771          </tr>
22772
22773
22774          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22775           <!-- end of entry -->
22776        
22777                
22778          <tr class="entry" id="controls_android.tonemap.curveGreen">
22779            <td class="entry_name
22780             " rowspan="3">
22781              android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
22782            </td>
22783            <td class="entry_type">
22784                <span class="entry_type_name">float</span>
22785                <span class="entry_type_container">x</span>
22786
22787                <span class="entry_type_array">
22788                  n x 2
22789                </span>
22790              <span class="entry_type_visibility"> [hidden]</span>
22791
22792
22793              <span class="entry_type_hwlevel">[full] </span>
22794
22795
22796                <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>
22797
22798
22799            </td> <!-- entry_type -->
22800
22801            <td class="entry_description">
22802              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
22803channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
22804CONTRAST_<wbr/>CURVE.<wbr/></p>
22805            </td>
22806
22807            <td class="entry_units">
22808            </td>
22809
22810            <td class="entry_range">
22811            </td>
22812
22813            <td class="entry_tags">
22814            </td>
22815
22816          </tr>
22817          <tr class="entries_header">
22818            <th class="th_details" colspan="5">Details</th>
22819          </tr>
22820          <tr class="entry_cont">
22821            <td class="entry_details" colspan="5">
22822              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
22823            </td>
22824          </tr>
22825
22826
22827          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22828           <!-- end of entry -->
22829        
22830                
22831          <tr class="entry" id="controls_android.tonemap.curveRed">
22832            <td class="entry_name
22833             " rowspan="5">
22834              android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
22835            </td>
22836            <td class="entry_type">
22837                <span class="entry_type_name">float</span>
22838                <span class="entry_type_container">x</span>
22839
22840                <span class="entry_type_array">
22841                  n x 2
22842                </span>
22843              <span class="entry_type_visibility"> [hidden]</span>
22844
22845
22846              <span class="entry_type_hwlevel">[full] </span>
22847
22848
22849                <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>
22850
22851
22852            </td> <!-- entry_type -->
22853
22854            <td class="entry_description">
22855              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
22856channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
22857CONTRAST_<wbr/>CURVE.<wbr/></p>
22858            </td>
22859
22860            <td class="entry_units">
22861            </td>
22862
22863            <td class="entry_range">
22864              <p>0-1 on both input and output coordinates,<wbr/> normalized
22865as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
22866            </td>
22867
22868            <td class="entry_tags">
22869            </td>
22870
22871          </tr>
22872          <tr class="entries_header">
22873            <th class="th_details" colspan="5">Details</th>
22874          </tr>
22875          <tr class="entry_cont">
22876            <td class="entry_details" colspan="5">
22877              <p>Each channel's curve is defined by an array of control points:</p>
22878<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
22879  [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
228802 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
22881<p>These are sorted in order of increasing <code>Pin</code>; it is
22882required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
22883define a complete mapping.<wbr/> For input values between control points,<wbr/>
22884the camera device must linearly interpolate between the control
22885points.<wbr/></p>
22886<p>Each curve can have an independent number of points,<wbr/> and the number
22887of points can be less than max (that is,<wbr/> the request doesn't have to
22888always provide a curve with number of points equivalent to
22889<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
22890<p>A few examples,<wbr/> and their corresponding graphical mappings; these
22891only specify the red channel and the precision is limited to 4
22892digits,<wbr/> for conciseness.<wbr/></p>
22893<p>Linear mapping:</p>
22894<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 ]
22895</code></pre>
22896<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
22897<p>Invert mapping:</p>
22898<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 ]
22899</code></pre>
22900<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
22901<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
22902<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
22903  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/>
22904  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/>
22905  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/>
22906  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 ]
22907</code></pre>
22908<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
22909<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
22910<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
22911  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/>
22912  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/>
22913  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/>
22914  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 ]
22915</code></pre>
22916<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
22917            </td>
22918          </tr>
22919
22920          <tr class="entries_header">
22921            <th class="th_details" colspan="5">HAL Implementation Details</th>
22922          </tr>
22923          <tr class="entry_cont">
22924            <td class="entry_details" colspan="5">
22925              <p>For good quality of mapping,<wbr/> at least 128 control points are
22926preferred.<wbr/></p>
22927<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
22928control points used as are available.<wbr/></p>
22929            </td>
22930          </tr>
22931
22932          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22933           <!-- end of entry -->
22934        
22935                
22936          <tr class="entry" id="controls_android.tonemap.curve">
22937            <td class="entry_name
22938             " rowspan="5">
22939              android.<wbr/>tonemap.<wbr/>curve
22940            </td>
22941            <td class="entry_type">
22942                <span class="entry_type_name">float</span>
22943
22944              <span class="entry_type_visibility"> [public as tonemapCurve]</span>
22945
22946              <span class="entry_type_synthetic">[synthetic] </span>
22947
22948              <span class="entry_type_hwlevel">[full] </span>
22949
22950
22951
22952
22953            </td> <!-- entry_type -->
22954
22955            <td class="entry_description">
22956              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
22957is CONTRAST_<wbr/>CURVE.<wbr/></p>
22958            </td>
22959
22960            <td class="entry_units">
22961            </td>
22962
22963            <td class="entry_range">
22964            </td>
22965
22966            <td class="entry_tags">
22967            </td>
22968
22969          </tr>
22970          <tr class="entries_header">
22971            <th class="th_details" colspan="5">Details</th>
22972          </tr>
22973          <tr class="entry_cont">
22974            <td class="entry_details" colspan="5">
22975              <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
22976channels respectively.<wbr/> The following example uses the red channel as an
22977example.<wbr/> The same logic applies to green and blue channel.<wbr/>
22978Each channel's curve is defined by an array of control points:</p>
22979<pre><code>curveRed =
22980  [ 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) ]
229812 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
22982<p>These are sorted in order of increasing <code>Pin</code>; it is always
22983guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
22984define a complete mapping.<wbr/> For input values between control points,<wbr/>
22985the camera device must linearly interpolate between the control
22986points.<wbr/></p>
22987<p>Each curve can have an independent number of points,<wbr/> and the number
22988of points can be less than max (that is,<wbr/> the request doesn't have to
22989always provide a curve with number of points equivalent to
22990<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
22991<p>A few examples,<wbr/> and their corresponding graphical mappings; these
22992only specify the red channel and the precision is limited to 4
22993digits,<wbr/> for conciseness.<wbr/></p>
22994<p>Linear mapping:</p>
22995<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
22996</code></pre>
22997<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
22998<p>Invert mapping:</p>
22999<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
23000</code></pre>
23001<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
23002<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
23003<pre><code>curveRed = [
23004  (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/>
23005  (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/>
23006  (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/>
23007  (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) ]
23008</code></pre>
23009<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
23010<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
23011<pre><code>curveRed = [
23012  (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/>
23013  (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/>
23014  (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/>
23015  (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) ]
23016</code></pre>
23017<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
23018            </td>
23019          </tr>
23020
23021          <tr class="entries_header">
23022            <th class="th_details" colspan="5">HAL Implementation Details</th>
23023          </tr>
23024          <tr class="entry_cont">
23025            <td class="entry_details" colspan="5">
23026              <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
23027curveBlue entries.<wbr/></p>
23028            </td>
23029          </tr>
23030
23031          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23032           <!-- end of entry -->
23033        
23034                
23035          <tr class="entry" id="controls_android.tonemap.mode">
23036            <td class="entry_name
23037             " rowspan="3">
23038              android.<wbr/>tonemap.<wbr/>mode
23039            </td>
23040            <td class="entry_type">
23041                <span class="entry_type_name entry_type_name_enum">byte</span>
23042
23043              <span class="entry_type_visibility"> [public]</span>
23044
23045
23046              <span class="entry_type_hwlevel">[full] </span>
23047
23048
23049
23050                <ul class="entry_type_enum">
23051                  <li>
23052                    <span class="entry_type_enum_name">CONTRAST_CURVE</span>
23053                    <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
23054the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
23055<p>All color enhancement and tonemapping must be disabled,<wbr/> except
23056for applying the tonemapping curve specified by
23057<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
23058<p>Must not slow down frame rate relative to raw
23059sensor output.<wbr/></p></span>
23060                  </li>
23061                  <li>
23062                    <span class="entry_type_enum_name">FAST</span>
23063                    <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
23064reducing frame rate compared to raw sensor output.<wbr/></p></span>
23065                  </li>
23066                  <li>
23067                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
23068                    <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
23069the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
23070                  </li>
23071                  <li>
23072                    <span class="entry_type_enum_name">GAMMA_VALUE</span>
23073                    <span class="entry_type_enum_notes"><p>Use the gamma value specified in <a href="#dynamic_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a> to peform
23074tonemapping.<wbr/></p>
23075<p>All color enhancement and tonemapping must be disabled,<wbr/> except
23076for applying the tonemapping curve specified by <a href="#dynamic_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
23077<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
23078                  </li>
23079                  <li>
23080                    <span class="entry_type_enum_name">PRESET_CURVE</span>
23081                    <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
23082<a href="#dynamic_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
23083<p>All color enhancement and tonemapping must be disabled,<wbr/> except
23084for applying the tonemapping curve specified by
23085<a href="#dynamic_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
23086<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
23087                  </li>
23088                </ul>
23089
23090            </td> <!-- entry_type -->
23091
23092            <td class="entry_description">
23093              <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
23094            </td>
23095
23096            <td class="entry_units">
23097            </td>
23098
23099            <td class="entry_range">
23100              <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
23101            </td>
23102
23103            <td class="entry_tags">
23104            </td>
23105
23106          </tr>
23107          <tr class="entries_header">
23108            <th class="th_details" colspan="5">Details</th>
23109          </tr>
23110          <tr class="entry_cont">
23111            <td class="entry_details" colspan="5">
23112              <p>When switching to an application-defined contrast curve by setting
23113<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
23114per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
23115mapping from input high-bit-depth pixel value to the output
23116low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
23117and output may change depending on the camera pipeline,<wbr/> the values
23118are specified by normalized floating-point numbers.<wbr/></p>
23119<p>More-complex color mapping operations such as 3D color look-up
23120tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
23121transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23122CONTRAST_<wbr/>CURVE.<wbr/></p>
23123<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
23124emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
23125These values are always available,<wbr/> and as close as possible to the
23126actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
23127<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
23128provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
23129roughly the same.<wbr/></p>
23130            </td>
23131          </tr>
23132
23133
23134          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23135           <!-- end of entry -->
23136        
23137                
23138          <tr class="entry" id="controls_android.tonemap.gamma">
23139            <td class="entry_name
23140             " rowspan="3">
23141              android.<wbr/>tonemap.<wbr/>gamma
23142            </td>
23143            <td class="entry_type">
23144                <span class="entry_type_name">float</span>
23145
23146              <span class="entry_type_visibility"> [public]</span>
23147
23148
23149
23150
23151
23152
23153            </td> <!-- entry_type -->
23154
23155            <td class="entry_description">
23156              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23157GAMMA_<wbr/>VALUE</p>
23158            </td>
23159
23160            <td class="entry_units">
23161            </td>
23162
23163            <td class="entry_range">
23164            </td>
23165
23166            <td class="entry_tags">
23167            </td>
23168
23169          </tr>
23170          <tr class="entries_header">
23171            <th class="th_details" colspan="5">Details</th>
23172          </tr>
23173          <tr class="entry_cont">
23174            <td class="entry_details" colspan="5">
23175              <p>The tonemap curve will be defined the following formula:
23176* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
23177where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
23178pow is the power function and gamma is the gamma value specified by this
23179key.<wbr/></p>
23180<p>The same curve will be applied to all color channels.<wbr/> The camera device
23181may clip the input gamma value to its supported range.<wbr/> The actual applied
23182value will be returned in capture result.<wbr/></p>
23183<p>The valid range of gamma value varies on different devices,<wbr/> but values
23184within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
23185            </td>
23186          </tr>
23187
23188
23189          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23190           <!-- end of entry -->
23191        
23192                
23193          <tr class="entry" id="controls_android.tonemap.presetCurve">
23194            <td class="entry_name
23195             " rowspan="3">
23196              android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
23197            </td>
23198            <td class="entry_type">
23199                <span class="entry_type_name entry_type_name_enum">byte</span>
23200
23201              <span class="entry_type_visibility"> [public]</span>
23202
23203
23204
23205
23206
23207                <ul class="entry_type_enum">
23208                  <li>
23209                    <span class="entry_type_enum_name">SRGB</span>
23210                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
23211                  </li>
23212                  <li>
23213                    <span class="entry_type_enum_name">REC709</span>
23214                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
23215                  </li>
23216                </ul>
23217
23218            </td> <!-- entry_type -->
23219
23220            <td class="entry_description">
23221              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23222PRESET_<wbr/>CURVE</p>
23223            </td>
23224
23225            <td class="entry_units">
23226            </td>
23227
23228            <td class="entry_range">
23229            </td>
23230
23231            <td class="entry_tags">
23232            </td>
23233
23234          </tr>
23235          <tr class="entries_header">
23236            <th class="th_details" colspan="5">Details</th>
23237          </tr>
23238          <tr class="entry_cont">
23239            <td class="entry_details" colspan="5">
23240              <p>The tonemap curve will be defined by specified standard.<wbr/></p>
23241<p>sRGB (approximated by 16 control points):</p>
23242<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
23243<p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
23244<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
23245<p>Note that above figures show a 16 control points approximation of preset
23246curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
23247            </td>
23248          </tr>
23249
23250
23251          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23252           <!-- end of entry -->
23253        
23254        
23255
23256      <!-- end of kind -->
23257      </tbody>
23258      <tr><td colspan="6" class="kind">static</td></tr>
23259
23260      <thead class="entries_header">
23261        <tr>
23262          <th class="th_name">Property Name</th>
23263          <th class="th_type">Type</th>
23264          <th class="th_description">Description</th>
23265          <th class="th_units">Units</th>
23266          <th class="th_range">Range</th>
23267          <th class="th_tags">Tags</th>
23268        </tr>
23269      </thead>
23270
23271      <tbody>
23272
23273        
23274
23275        
23276
23277        
23278
23279        
23280
23281                
23282          <tr class="entry" id="static_android.tonemap.maxCurvePoints">
23283            <td class="entry_name
23284             " rowspan="5">
23285              android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
23286            </td>
23287            <td class="entry_type">
23288                <span class="entry_type_name">int32</span>
23289
23290              <span class="entry_type_visibility"> [public]</span>
23291
23292
23293              <span class="entry_type_hwlevel">[full] </span>
23294
23295
23296
23297
23298            </td> <!-- entry_type -->
23299
23300            <td class="entry_description">
23301              <p>Maximum number of supported points in the
23302tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
23303            </td>
23304
23305            <td class="entry_units">
23306            </td>
23307
23308            <td class="entry_range">
23309            </td>
23310
23311            <td class="entry_tags">
23312            </td>
23313
23314          </tr>
23315          <tr class="entries_header">
23316            <th class="th_details" colspan="5">Details</th>
23317          </tr>
23318          <tr class="entry_cont">
23319            <td class="entry_details" colspan="5">
23320              <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
23321less than this maximum,<wbr/> the camera device will resample the curve to its internal
23322representation,<wbr/> using linear interpolation.<wbr/></p>
23323<p>The output curves in the result metadata may have a different number
23324of points than the input curves,<wbr/> and will represent the actual
23325hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
23326            </td>
23327          </tr>
23328
23329          <tr class="entries_header">
23330            <th class="th_details" colspan="5">HAL Implementation Details</th>
23331          </tr>
23332          <tr class="entry_cont">
23333            <td class="entry_details" colspan="5">
23334              <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
23335            </td>
23336          </tr>
23337
23338          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23339           <!-- end of entry -->
23340        
23341                
23342          <tr class="entry" id="static_android.tonemap.availableToneMapModes">
23343            <td class="entry_name
23344             " rowspan="5">
23345              android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
23346            </td>
23347            <td class="entry_type">
23348                <span class="entry_type_name">byte</span>
23349                <span class="entry_type_container">x</span>
23350
23351                <span class="entry_type_array">
23352                  n
23353                </span>
23354              <span class="entry_type_visibility"> [public as enumList]</span>
23355
23356
23357              <span class="entry_type_hwlevel">[full] </span>
23358
23359
23360                <div class="entry_type_notes">list of enums</div>
23361
23362
23363            </td> <!-- entry_type -->
23364
23365            <td class="entry_description">
23366              <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
23367device.<wbr/></p>
23368            </td>
23369
23370            <td class="entry_units">
23371            </td>
23372
23373            <td class="entry_range">
23374              <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
23375            </td>
23376
23377            <td class="entry_tags">
23378            </td>
23379
23380          </tr>
23381          <tr class="entries_header">
23382            <th class="th_details" colspan="5">Details</th>
23383          </tr>
23384          <tr class="entry_cont">
23385            <td class="entry_details" colspan="5">
23386              <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
23387at least one of below mode combinations:</p>
23388<ul>
23389<li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
23390<li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
23391</ul>
23392<p>This includes all FULL level devices.<wbr/></p>
23393            </td>
23394          </tr>
23395
23396          <tr class="entries_header">
23397            <th class="th_details" colspan="5">HAL Implementation Details</th>
23398          </tr>
23399          <tr class="entry_cont">
23400            <td class="entry_details" colspan="5">
23401              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
23402on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
23403That is,<wbr/> if the highest quality implementation on the camera device does not slow down
23404capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
23405            </td>
23406          </tr>
23407
23408          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23409           <!-- end of entry -->
23410        
23411        
23412
23413      <!-- end of kind -->
23414      </tbody>
23415      <tr><td colspan="6" class="kind">dynamic</td></tr>
23416
23417      <thead class="entries_header">
23418        <tr>
23419          <th class="th_name">Property Name</th>
23420          <th class="th_type">Type</th>
23421          <th class="th_description">Description</th>
23422          <th class="th_units">Units</th>
23423          <th class="th_range">Range</th>
23424          <th class="th_tags">Tags</th>
23425        </tr>
23426      </thead>
23427
23428      <tbody>
23429
23430        
23431
23432        
23433
23434        
23435
23436        
23437
23438                
23439          <tr class="entry" id="dynamic_android.tonemap.curveBlue">
23440            <td class="entry_name
23441             " rowspan="3">
23442              android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
23443            </td>
23444            <td class="entry_type">
23445                <span class="entry_type_name">float</span>
23446                <span class="entry_type_container">x</span>
23447
23448                <span class="entry_type_array">
23449                  n x 2
23450                </span>
23451              <span class="entry_type_visibility"> [hidden]</span>
23452
23453
23454              <span class="entry_type_hwlevel">[full] </span>
23455
23456
23457                <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>
23458
23459
23460            </td> <!-- entry_type -->
23461
23462            <td class="entry_description">
23463              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
23464channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23465CONTRAST_<wbr/>CURVE.<wbr/></p>
23466            </td>
23467
23468            <td class="entry_units">
23469            </td>
23470
23471            <td class="entry_range">
23472            </td>
23473
23474            <td class="entry_tags">
23475            </td>
23476
23477          </tr>
23478          <tr class="entries_header">
23479            <th class="th_details" colspan="5">Details</th>
23480          </tr>
23481          <tr class="entry_cont">
23482            <td class="entry_details" colspan="5">
23483              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
23484            </td>
23485          </tr>
23486
23487
23488          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23489           <!-- end of entry -->
23490        
23491                
23492          <tr class="entry" id="dynamic_android.tonemap.curveGreen">
23493            <td class="entry_name
23494             " rowspan="3">
23495              android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
23496            </td>
23497            <td class="entry_type">
23498                <span class="entry_type_name">float</span>
23499                <span class="entry_type_container">x</span>
23500
23501                <span class="entry_type_array">
23502                  n x 2
23503                </span>
23504              <span class="entry_type_visibility"> [hidden]</span>
23505
23506
23507              <span class="entry_type_hwlevel">[full] </span>
23508
23509
23510                <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>
23511
23512
23513            </td> <!-- entry_type -->
23514
23515            <td class="entry_description">
23516              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
23517channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23518CONTRAST_<wbr/>CURVE.<wbr/></p>
23519            </td>
23520
23521            <td class="entry_units">
23522            </td>
23523
23524            <td class="entry_range">
23525            </td>
23526
23527            <td class="entry_tags">
23528            </td>
23529
23530          </tr>
23531          <tr class="entries_header">
23532            <th class="th_details" colspan="5">Details</th>
23533          </tr>
23534          <tr class="entry_cont">
23535            <td class="entry_details" colspan="5">
23536              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
23537            </td>
23538          </tr>
23539
23540
23541          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23542           <!-- end of entry -->
23543        
23544                
23545          <tr class="entry" id="dynamic_android.tonemap.curveRed">
23546            <td class="entry_name
23547             " rowspan="5">
23548              android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
23549            </td>
23550            <td class="entry_type">
23551                <span class="entry_type_name">float</span>
23552                <span class="entry_type_container">x</span>
23553
23554                <span class="entry_type_array">
23555                  n x 2
23556                </span>
23557              <span class="entry_type_visibility"> [hidden]</span>
23558
23559
23560              <span class="entry_type_hwlevel">[full] </span>
23561
23562
23563                <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>
23564
23565
23566            </td> <!-- entry_type -->
23567
23568            <td class="entry_description">
23569              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
23570channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23571CONTRAST_<wbr/>CURVE.<wbr/></p>
23572            </td>
23573
23574            <td class="entry_units">
23575            </td>
23576
23577            <td class="entry_range">
23578              <p>0-1 on both input and output coordinates,<wbr/> normalized
23579as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
23580            </td>
23581
23582            <td class="entry_tags">
23583            </td>
23584
23585          </tr>
23586          <tr class="entries_header">
23587            <th class="th_details" colspan="5">Details</th>
23588          </tr>
23589          <tr class="entry_cont">
23590            <td class="entry_details" colspan="5">
23591              <p>Each channel's curve is defined by an array of control points:</p>
23592<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
23593  [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
235942 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
23595<p>These are sorted in order of increasing <code>Pin</code>; it is
23596required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
23597define a complete mapping.<wbr/> For input values between control points,<wbr/>
23598the camera device must linearly interpolate between the control
23599points.<wbr/></p>
23600<p>Each curve can have an independent number of points,<wbr/> and the number
23601of points can be less than max (that is,<wbr/> the request doesn't have to
23602always provide a curve with number of points equivalent to
23603<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
23604<p>A few examples,<wbr/> and their corresponding graphical mappings; these
23605only specify the red channel and the precision is limited to 4
23606digits,<wbr/> for conciseness.<wbr/></p>
23607<p>Linear mapping:</p>
23608<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 ]
23609</code></pre>
23610<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
23611<p>Invert mapping:</p>
23612<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 ]
23613</code></pre>
23614<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
23615<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
23616<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
23617  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/>
23618  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/>
23619  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/>
23620  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 ]
23621</code></pre>
23622<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
23623<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
23624<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
23625  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/>
23626  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/>
23627  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/>
23628  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 ]
23629</code></pre>
23630<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
23631            </td>
23632          </tr>
23633
23634          <tr class="entries_header">
23635            <th class="th_details" colspan="5">HAL Implementation Details</th>
23636          </tr>
23637          <tr class="entry_cont">
23638            <td class="entry_details" colspan="5">
23639              <p>For good quality of mapping,<wbr/> at least 128 control points are
23640preferred.<wbr/></p>
23641<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
23642control points used as are available.<wbr/></p>
23643            </td>
23644          </tr>
23645
23646          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23647           <!-- end of entry -->
23648        
23649                
23650          <tr class="entry" id="dynamic_android.tonemap.curve">
23651            <td class="entry_name
23652             " rowspan="5">
23653              android.<wbr/>tonemap.<wbr/>curve
23654            </td>
23655            <td class="entry_type">
23656                <span class="entry_type_name">float</span>
23657
23658              <span class="entry_type_visibility"> [public as tonemapCurve]</span>
23659
23660              <span class="entry_type_synthetic">[synthetic] </span>
23661
23662              <span class="entry_type_hwlevel">[full] </span>
23663
23664
23665
23666
23667            </td> <!-- entry_type -->
23668
23669            <td class="entry_description">
23670              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
23671is CONTRAST_<wbr/>CURVE.<wbr/></p>
23672            </td>
23673
23674            <td class="entry_units">
23675            </td>
23676
23677            <td class="entry_range">
23678            </td>
23679
23680            <td class="entry_tags">
23681            </td>
23682
23683          </tr>
23684          <tr class="entries_header">
23685            <th class="th_details" colspan="5">Details</th>
23686          </tr>
23687          <tr class="entry_cont">
23688            <td class="entry_details" colspan="5">
23689              <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
23690channels respectively.<wbr/> The following example uses the red channel as an
23691example.<wbr/> The same logic applies to green and blue channel.<wbr/>
23692Each channel's curve is defined by an array of control points:</p>
23693<pre><code>curveRed =
23694  [ 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) ]
236952 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
23696<p>These are sorted in order of increasing <code>Pin</code>; it is always
23697guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
23698define a complete mapping.<wbr/> For input values between control points,<wbr/>
23699the camera device must linearly interpolate between the control
23700points.<wbr/></p>
23701<p>Each curve can have an independent number of points,<wbr/> and the number
23702of points can be less than max (that is,<wbr/> the request doesn't have to
23703always provide a curve with number of points equivalent to
23704<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
23705<p>A few examples,<wbr/> and their corresponding graphical mappings; these
23706only specify the red channel and the precision is limited to 4
23707digits,<wbr/> for conciseness.<wbr/></p>
23708<p>Linear mapping:</p>
23709<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
23710</code></pre>
23711<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
23712<p>Invert mapping:</p>
23713<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
23714</code></pre>
23715<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
23716<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
23717<pre><code>curveRed = [
23718  (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/>
23719  (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/>
23720  (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/>
23721  (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) ]
23722</code></pre>
23723<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
23724<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
23725<pre><code>curveRed = [
23726  (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/>
23727  (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/>
23728  (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/>
23729  (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) ]
23730</code></pre>
23731<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
23732            </td>
23733          </tr>
23734
23735          <tr class="entries_header">
23736            <th class="th_details" colspan="5">HAL Implementation Details</th>
23737          </tr>
23738          <tr class="entry_cont">
23739            <td class="entry_details" colspan="5">
23740              <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
23741curveBlue entries.<wbr/></p>
23742            </td>
23743          </tr>
23744
23745          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23746           <!-- end of entry -->
23747        
23748                
23749          <tr class="entry" id="dynamic_android.tonemap.mode">
23750            <td class="entry_name
23751             " rowspan="3">
23752              android.<wbr/>tonemap.<wbr/>mode
23753            </td>
23754            <td class="entry_type">
23755                <span class="entry_type_name entry_type_name_enum">byte</span>
23756
23757              <span class="entry_type_visibility"> [public]</span>
23758
23759
23760              <span class="entry_type_hwlevel">[full] </span>
23761
23762
23763
23764                <ul class="entry_type_enum">
23765                  <li>
23766                    <span class="entry_type_enum_name">CONTRAST_CURVE</span>
23767                    <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
23768the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
23769<p>All color enhancement and tonemapping must be disabled,<wbr/> except
23770for applying the tonemapping curve specified by
23771<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
23772<p>Must not slow down frame rate relative to raw
23773sensor output.<wbr/></p></span>
23774                  </li>
23775                  <li>
23776                    <span class="entry_type_enum_name">FAST</span>
23777                    <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
23778reducing frame rate compared to raw sensor output.<wbr/></p></span>
23779                  </li>
23780                  <li>
23781                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
23782                    <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
23783the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
23784                  </li>
23785                  <li>
23786                    <span class="entry_type_enum_name">GAMMA_VALUE</span>
23787                    <span class="entry_type_enum_notes"><p>Use the gamma value specified in <a href="#dynamic_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a> to peform
23788tonemapping.<wbr/></p>
23789<p>All color enhancement and tonemapping must be disabled,<wbr/> except
23790for applying the tonemapping curve specified by <a href="#dynamic_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
23791<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
23792                  </li>
23793                  <li>
23794                    <span class="entry_type_enum_name">PRESET_CURVE</span>
23795                    <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
23796<a href="#dynamic_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
23797<p>All color enhancement and tonemapping must be disabled,<wbr/> except
23798for applying the tonemapping curve specified by
23799<a href="#dynamic_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
23800<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
23801                  </li>
23802                </ul>
23803
23804            </td> <!-- entry_type -->
23805
23806            <td class="entry_description">
23807              <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
23808            </td>
23809
23810            <td class="entry_units">
23811            </td>
23812
23813            <td class="entry_range">
23814              <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
23815            </td>
23816
23817            <td class="entry_tags">
23818            </td>
23819
23820          </tr>
23821          <tr class="entries_header">
23822            <th class="th_details" colspan="5">Details</th>
23823          </tr>
23824          <tr class="entry_cont">
23825            <td class="entry_details" colspan="5">
23826              <p>When switching to an application-defined contrast curve by setting
23827<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
23828per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
23829mapping from input high-bit-depth pixel value to the output
23830low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
23831and output may change depending on the camera pipeline,<wbr/> the values
23832are specified by normalized floating-point numbers.<wbr/></p>
23833<p>More-complex color mapping operations such as 3D color look-up
23834tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
23835transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23836CONTRAST_<wbr/>CURVE.<wbr/></p>
23837<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
23838emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
23839These values are always available,<wbr/> and as close as possible to the
23840actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
23841<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
23842provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
23843roughly the same.<wbr/></p>
23844            </td>
23845          </tr>
23846
23847
23848          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23849           <!-- end of entry -->
23850        
23851                
23852          <tr class="entry" id="dynamic_android.tonemap.gamma">
23853            <td class="entry_name
23854             " rowspan="3">
23855              android.<wbr/>tonemap.<wbr/>gamma
23856            </td>
23857            <td class="entry_type">
23858                <span class="entry_type_name">float</span>
23859
23860              <span class="entry_type_visibility"> [public]</span>
23861
23862
23863
23864
23865
23866
23867            </td> <!-- entry_type -->
23868
23869            <td class="entry_description">
23870              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23871GAMMA_<wbr/>VALUE</p>
23872            </td>
23873
23874            <td class="entry_units">
23875            </td>
23876
23877            <td class="entry_range">
23878            </td>
23879
23880            <td class="entry_tags">
23881            </td>
23882
23883          </tr>
23884          <tr class="entries_header">
23885            <th class="th_details" colspan="5">Details</th>
23886          </tr>
23887          <tr class="entry_cont">
23888            <td class="entry_details" colspan="5">
23889              <p>The tonemap curve will be defined the following formula:
23890* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
23891where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
23892pow is the power function and gamma is the gamma value specified by this
23893key.<wbr/></p>
23894<p>The same curve will be applied to all color channels.<wbr/> The camera device
23895may clip the input gamma value to its supported range.<wbr/> The actual applied
23896value will be returned in capture result.<wbr/></p>
23897<p>The valid range of gamma value varies on different devices,<wbr/> but values
23898within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
23899            </td>
23900          </tr>
23901
23902
23903          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23904           <!-- end of entry -->
23905        
23906                
23907          <tr class="entry" id="dynamic_android.tonemap.presetCurve">
23908            <td class="entry_name
23909             " rowspan="3">
23910              android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
23911            </td>
23912            <td class="entry_type">
23913                <span class="entry_type_name entry_type_name_enum">byte</span>
23914
23915              <span class="entry_type_visibility"> [public]</span>
23916
23917
23918
23919
23920
23921                <ul class="entry_type_enum">
23922                  <li>
23923                    <span class="entry_type_enum_name">SRGB</span>
23924                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
23925                  </li>
23926                  <li>
23927                    <span class="entry_type_enum_name">REC709</span>
23928                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
23929                  </li>
23930                </ul>
23931
23932            </td> <!-- entry_type -->
23933
23934            <td class="entry_description">
23935              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23936PRESET_<wbr/>CURVE</p>
23937            </td>
23938
23939            <td class="entry_units">
23940            </td>
23941
23942            <td class="entry_range">
23943            </td>
23944
23945            <td class="entry_tags">
23946            </td>
23947
23948          </tr>
23949          <tr class="entries_header">
23950            <th class="th_details" colspan="5">Details</th>
23951          </tr>
23952          <tr class="entry_cont">
23953            <td class="entry_details" colspan="5">
23954              <p>The tonemap curve will be defined by specified standard.<wbr/></p>
23955<p>sRGB (approximated by 16 control points):</p>
23956<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
23957<p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
23958<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
23959<p>Note that above figures show a 16 control points approximation of preset
23960curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
23961            </td>
23962          </tr>
23963
23964
23965          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23966           <!-- end of entry -->
23967        
23968        
23969
23970      <!-- end of kind -->
23971      </tbody>
23972
23973  <!-- end of section -->
23974  <tr><td colspan="6" id="section_led" class="section">led</td></tr>
23975
23976
23977      <tr><td colspan="6" class="kind">controls</td></tr>
23978
23979      <thead class="entries_header">
23980        <tr>
23981          <th class="th_name">Property Name</th>
23982          <th class="th_type">Type</th>
23983          <th class="th_description">Description</th>
23984          <th class="th_units">Units</th>
23985          <th class="th_range">Range</th>
23986          <th class="th_tags">Tags</th>
23987        </tr>
23988      </thead>
23989
23990      <tbody>
23991
23992        
23993
23994        
23995
23996        
23997
23998        
23999
24000                
24001          <tr class="entry" id="controls_android.led.transmit">
24002            <td class="entry_name
24003             " rowspan="1">
24004              android.<wbr/>led.<wbr/>transmit
24005            </td>
24006            <td class="entry_type">
24007                <span class="entry_type_name entry_type_name_enum">byte</span>
24008
24009              <span class="entry_type_visibility"> [hidden as boolean]</span>
24010
24011
24012
24013
24014
24015                <ul class="entry_type_enum">
24016                  <li>
24017                    <span class="entry_type_enum_name">OFF</span>
24018                  </li>
24019                  <li>
24020                    <span class="entry_type_enum_name">ON</span>
24021                  </li>
24022                </ul>
24023
24024            </td> <!-- entry_type -->
24025
24026            <td class="entry_description">
24027              <p>This LED is nominally used to indicate to the user
24028that the camera is powered on and may be streaming images back to the
24029Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
24030disable this when video is processed locally and not transmitted to
24031any untrusted applications.<wbr/></p>
24032<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
24033transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
24034data is stored locally on the device.<wbr/></p>
24035<p>The LED <em>may</em> be off if a trusted application is using the data that
24036doesn't violate the above rules.<wbr/></p>
24037            </td>
24038
24039            <td class="entry_units">
24040            </td>
24041
24042            <td class="entry_range">
24043            </td>
24044
24045            <td class="entry_tags">
24046            </td>
24047
24048          </tr>
24049
24050
24051          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24052           <!-- end of entry -->
24053        
24054        
24055
24056      <!-- end of kind -->
24057      </tbody>
24058      <tr><td colspan="6" class="kind">dynamic</td></tr>
24059
24060      <thead class="entries_header">
24061        <tr>
24062          <th class="th_name">Property Name</th>
24063          <th class="th_type">Type</th>
24064          <th class="th_description">Description</th>
24065          <th class="th_units">Units</th>
24066          <th class="th_range">Range</th>
24067          <th class="th_tags">Tags</th>
24068        </tr>
24069      </thead>
24070
24071      <tbody>
24072
24073        
24074
24075        
24076
24077        
24078
24079        
24080
24081                
24082          <tr class="entry" id="dynamic_android.led.transmit">
24083            <td class="entry_name
24084             " rowspan="1">
24085              android.<wbr/>led.<wbr/>transmit
24086            </td>
24087            <td class="entry_type">
24088                <span class="entry_type_name entry_type_name_enum">byte</span>
24089
24090              <span class="entry_type_visibility"> [hidden as boolean]</span>
24091
24092
24093
24094
24095
24096                <ul class="entry_type_enum">
24097                  <li>
24098                    <span class="entry_type_enum_name">OFF</span>
24099                  </li>
24100                  <li>
24101                    <span class="entry_type_enum_name">ON</span>
24102                  </li>
24103                </ul>
24104
24105            </td> <!-- entry_type -->
24106
24107            <td class="entry_description">
24108              <p>This LED is nominally used to indicate to the user
24109that the camera is powered on and may be streaming images back to the
24110Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
24111disable this when video is processed locally and not transmitted to
24112any untrusted applications.<wbr/></p>
24113<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
24114transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
24115data is stored locally on the device.<wbr/></p>
24116<p>The LED <em>may</em> be off if a trusted application is using the data that
24117doesn't violate the above rules.<wbr/></p>
24118            </td>
24119
24120            <td class="entry_units">
24121            </td>
24122
24123            <td class="entry_range">
24124            </td>
24125
24126            <td class="entry_tags">
24127            </td>
24128
24129          </tr>
24130
24131
24132          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24133           <!-- end of entry -->
24134        
24135        
24136
24137      <!-- end of kind -->
24138      </tbody>
24139      <tr><td colspan="6" class="kind">static</td></tr>
24140
24141      <thead class="entries_header">
24142        <tr>
24143          <th class="th_name">Property Name</th>
24144          <th class="th_type">Type</th>
24145          <th class="th_description">Description</th>
24146          <th class="th_units">Units</th>
24147          <th class="th_range">Range</th>
24148          <th class="th_tags">Tags</th>
24149        </tr>
24150      </thead>
24151
24152      <tbody>
24153
24154        
24155
24156        
24157
24158        
24159
24160        
24161
24162                
24163          <tr class="entry" id="static_android.led.availableLeds">
24164            <td class="entry_name
24165             " rowspan="1">
24166              android.<wbr/>led.<wbr/>available<wbr/>Leds
24167            </td>
24168            <td class="entry_type">
24169                <span class="entry_type_name entry_type_name_enum">byte</span>
24170                <span class="entry_type_container">x</span>
24171
24172                <span class="entry_type_array">
24173                  n
24174                </span>
24175              <span class="entry_type_visibility"> [hidden]</span>
24176
24177
24178
24179
24180
24181                <ul class="entry_type_enum">
24182                  <li>
24183                    <span class="entry_type_enum_name">TRANSMIT</span>
24184                    <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>
24185                  </li>
24186                </ul>
24187
24188            </td> <!-- entry_type -->
24189
24190            <td class="entry_description">
24191              <p>A list of camera LEDs that are available on this system.<wbr/></p>
24192            </td>
24193
24194            <td class="entry_units">
24195            </td>
24196
24197            <td class="entry_range">
24198            </td>
24199
24200            <td class="entry_tags">
24201            </td>
24202
24203          </tr>
24204
24205
24206          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24207           <!-- end of entry -->
24208        
24209        
24210
24211      <!-- end of kind -->
24212      </tbody>
24213
24214  <!-- end of section -->
24215  <tr><td colspan="6" id="section_info" class="section">info</td></tr>
24216
24217
24218      <tr><td colspan="6" class="kind">static</td></tr>
24219
24220      <thead class="entries_header">
24221        <tr>
24222          <th class="th_name">Property Name</th>
24223          <th class="th_type">Type</th>
24224          <th class="th_description">Description</th>
24225          <th class="th_units">Units</th>
24226          <th class="th_range">Range</th>
24227          <th class="th_tags">Tags</th>
24228        </tr>
24229      </thead>
24230
24231      <tbody>
24232
24233        
24234
24235        
24236
24237        
24238
24239        
24240
24241                
24242          <tr class="entry" id="static_android.info.supportedHardwareLevel">
24243            <td class="entry_name
24244             " rowspan="5">
24245              android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
24246            </td>
24247            <td class="entry_type">
24248                <span class="entry_type_name entry_type_name_enum">byte</span>
24249
24250              <span class="entry_type_visibility"> [public]</span>
24251
24252
24253              <span class="entry_type_hwlevel">[legacy] </span>
24254
24255
24256
24257                <ul class="entry_type_enum">
24258                  <li>
24259                    <span class="entry_type_enum_name">LIMITED</span>
24260                    <span class="entry_type_enum_notes"><p>This camera device has only limited capabilities.<wbr/></p></span>
24261                  </li>
24262                  <li>
24263                    <span class="entry_type_enum_name">FULL</span>
24264                    <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p></span>
24265                  </li>
24266                  <li>
24267                    <span class="entry_type_enum_name">LEGACY</span>
24268                    <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p></span>
24269                  </li>
24270                  <li>
24271                    <span class="entry_type_enum_name">HIGH_RESOLUTION</span>
24272                    <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications at full rate,<wbr/>
24273and additional high-resolution outputs at lower rates.<wbr/></p></span>
24274                  </li>
24275                </ul>
24276
24277            </td> <!-- entry_type -->
24278
24279            <td class="entry_description">
24280              <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
24281            </td>
24282
24283            <td class="entry_units">
24284            </td>
24285
24286            <td class="entry_range">
24287            </td>
24288
24289            <td class="entry_tags">
24290            </td>
24291
24292          </tr>
24293          <tr class="entries_header">
24294            <th class="th_details" colspan="5">Details</th>
24295          </tr>
24296          <tr class="entry_cont">
24297            <td class="entry_details" colspan="5">
24298              <p>Camera devices will come in three flavors: LEGACY,<wbr/> LIMITED and FULL.<wbr/></p>
24299<p>A FULL device will support below capabilities:</p>
24300<ul>
24301<li>30fps operation at maximum resolution (== sensor resolution) is preferred,<wbr/> more than
24302  20fps is required,<wbr/> for at least uncompressed YUV
24303  output.<wbr/> (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains BURST_<wbr/>CAPTURE)</li>
24304<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>
24305<li>Manual sensor control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR)</li>
24306<li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
24307  MANUAL_<wbr/>POST_<wbr/>PROCESSING)</li>
24308<li>Arbitrary cropping region (<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>==</code> FREEFORM)</li>
24309<li>At least 3 processed (but not stalling) format output streams
24310  (<a href="#static_android.request.maxNumOutputProc">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc</a> <code>&gt;=</code> 3)</li>
24311<li>The required stream configuration defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a></li>
24312<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>
24313<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>
24314</ul>
24315<p>A LIMITED device may have some or none of the above characteristics.<wbr/>
24316To find out more refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
24317<p>Some features are not part of any particular hardware level or capability and must be
24318queried separately.<wbr/> These include:</p>
24319<ul>
24320<li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
24321<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>
24322<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>
24323<li>Optical or electrical image stabilization
24324  (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
24325   <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
24326</ul>
24327<p>A LEGACY device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
24328post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/></p>
24329<p>Each higher level supports everything the lower level supports
24330in this order: FULL <code>&gt;</code> LIMITED <code>&gt;</code> LEGACY.<wbr/></p>
24331<p>A HIGH_<wbr/>RESOLUTION device is equivalent to a FULL device,<wbr/> except that:</p>
24332<ul>
24333<li>At least one output resolution of 8 megapixels or higher in uncompressed YUV is
24334  supported at <code>&gt;=</code> 20 fps.<wbr/></li>
24335<li>Maximum-size (sensor resolution) uncompressed YUV is supported  at <code>&gt;=</code> 10
24336  fps.<wbr/></li>
24337<li>For devices that list the RAW capability and support either RAW10 or RAW12 output,<wbr/>
24338  maximum-resolution RAW10 or RAW12 capture will operate at least at the rate of
24339  maximum-resolution YUV capture,<wbr/> and at least one supported output resolution of
24340  8 megapixels or higher in RAW10 or RAW12 is supported <code>&gt;=</code> 20 fps.<wbr/></li>
24341</ul>
24342            </td>
24343          </tr>
24344
24345          <tr class="entries_header">
24346            <th class="th_details" colspan="5">HAL Implementation Details</th>
24347          </tr>
24348          <tr class="entry_cont">
24349            <td class="entry_details" colspan="5">
24350              <p>The camera 3 HAL device can implement one of two possible
24351operational modes; limited and full.<wbr/> Full support is
24352expected from new higher-end devices.<wbr/> Limited mode has
24353hardware requirements roughly in line with those for a
24354camera HAL device v1 implementation,<wbr/> and is expected from
24355older or inexpensive devices.<wbr/> Full is a strict superset of
24356limited,<wbr/> and they share the same essential operational flow.<wbr/></p>
24357<p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
24358<p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there
24359for backwards compatibility in the <code>android.<wbr/>hardware.<wbr/>camera2</code>
24360user-facing API only.<wbr/></p>
24361            </td>
24362          </tr>
24363
24364          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24365           <!-- end of entry -->
24366        
24367        
24368
24369      <!-- end of kind -->
24370      </tbody>
24371
24372  <!-- end of section -->
24373  <tr><td colspan="6" id="section_blackLevel" class="section">blackLevel</td></tr>
24374
24375
24376      <tr><td colspan="6" class="kind">controls</td></tr>
24377
24378      <thead class="entries_header">
24379        <tr>
24380          <th class="th_name">Property Name</th>
24381          <th class="th_type">Type</th>
24382          <th class="th_description">Description</th>
24383          <th class="th_units">Units</th>
24384          <th class="th_range">Range</th>
24385          <th class="th_tags">Tags</th>
24386        </tr>
24387      </thead>
24388
24389      <tbody>
24390
24391        
24392
24393        
24394
24395        
24396
24397        
24398
24399                
24400          <tr class="entry" id="controls_android.blackLevel.lock">
24401            <td class="entry_name
24402             " rowspan="5">
24403              android.<wbr/>black<wbr/>Level.<wbr/>lock
24404            </td>
24405            <td class="entry_type">
24406                <span class="entry_type_name entry_type_name_enum">byte</span>
24407
24408              <span class="entry_type_visibility"> [public as boolean]</span>
24409
24410
24411              <span class="entry_type_hwlevel">[full] </span>
24412
24413
24414
24415                <ul class="entry_type_enum">
24416                  <li>
24417                    <span class="entry_type_enum_name">OFF</span>
24418                  </li>
24419                  <li>
24420                    <span class="entry_type_enum_name">ON</span>
24421                  </li>
24422                </ul>
24423
24424            </td> <!-- entry_type -->
24425
24426            <td class="entry_description">
24427              <p>Whether black-level compensation is locked
24428to its current values,<wbr/> or is free to vary.<wbr/></p>
24429            </td>
24430
24431            <td class="entry_units">
24432            </td>
24433
24434            <td class="entry_range">
24435            </td>
24436
24437            <td class="entry_tags">
24438              <ul class="entry_tags">
24439                  <li><a href="#tag_HAL2">HAL2</a></li>
24440              </ul>
24441            </td>
24442
24443          </tr>
24444          <tr class="entries_header">
24445            <th class="th_details" colspan="5">Details</th>
24446          </tr>
24447          <tr class="entry_cont">
24448            <td class="entry_details" colspan="5">
24449              <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
24450compensation will not change until the lock is set to
24451<code>false</code> (OFF).<wbr/></p>
24452<p>Since changes to certain capture parameters (such as
24453exposure time) may require resetting of black level
24454compensation,<wbr/> the camera device must report whether setting
24455the black level lock was successful in the output result
24456metadata.<wbr/></p>
24457<p>For example,<wbr/> if a sequence of requests is as follows:</p>
24458<ul>
24459<li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
24460<li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
24461<li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
24462<li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
24463<li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
24464<li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
24465</ul>
24466<p>And the exposure change in Request 4 requires the camera
24467device to reset the black level offsets,<wbr/> then the output
24468result metadata is expected to be:</p>
24469<ul>
24470<li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
24471<li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
24472<li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
24473<li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
24474<li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
24475<li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
24476</ul>
24477<p>This indicates to the application that on frame 4,<wbr/> black
24478levels were reset due to exposure value changes,<wbr/> and pixel
24479values may not be consistent across captures.<wbr/></p>
24480<p>The camera device will maintain the lock to the extent
24481possible,<wbr/> only overriding the lock to OFF when changes to
24482other request parameters require a black level recalculation
24483or reset.<wbr/></p>
24484            </td>
24485          </tr>
24486
24487          <tr class="entries_header">
24488            <th class="th_details" colspan="5">HAL Implementation Details</th>
24489          </tr>
24490          <tr class="entry_cont">
24491            <td class="entry_details" colspan="5">
24492              <p>If for some reason black level locking is no longer possible
24493(for example,<wbr/> the analog gain has changed,<wbr/> which forces
24494black level offsets to be recalculated),<wbr/> then the HAL must
24495override this request (and it must report 'OFF' when this
24496does happen) until the next capture for which locking is
24497possible again.<wbr/></p>
24498            </td>
24499          </tr>
24500
24501          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24502           <!-- end of entry -->
24503        
24504        
24505
24506      <!-- end of kind -->
24507      </tbody>
24508      <tr><td colspan="6" class="kind">dynamic</td></tr>
24509
24510      <thead class="entries_header">
24511        <tr>
24512          <th class="th_name">Property Name</th>
24513          <th class="th_type">Type</th>
24514          <th class="th_description">Description</th>
24515          <th class="th_units">Units</th>
24516          <th class="th_range">Range</th>
24517          <th class="th_tags">Tags</th>
24518        </tr>
24519      </thead>
24520
24521      <tbody>
24522
24523        
24524
24525        
24526
24527        
24528
24529        
24530
24531                
24532          <tr class="entry" id="dynamic_android.blackLevel.lock">
24533            <td class="entry_name
24534             " rowspan="5">
24535              android.<wbr/>black<wbr/>Level.<wbr/>lock
24536            </td>
24537            <td class="entry_type">
24538                <span class="entry_type_name entry_type_name_enum">byte</span>
24539
24540              <span class="entry_type_visibility"> [public as boolean]</span>
24541
24542
24543              <span class="entry_type_hwlevel">[full] </span>
24544
24545
24546
24547                <ul class="entry_type_enum">
24548                  <li>
24549                    <span class="entry_type_enum_name">OFF</span>
24550                  </li>
24551                  <li>
24552                    <span class="entry_type_enum_name">ON</span>
24553                  </li>
24554                </ul>
24555
24556            </td> <!-- entry_type -->
24557
24558            <td class="entry_description">
24559              <p>Whether black-level compensation is locked
24560to its current values,<wbr/> or is free to vary.<wbr/></p>
24561            </td>
24562
24563            <td class="entry_units">
24564            </td>
24565
24566            <td class="entry_range">
24567            </td>
24568
24569            <td class="entry_tags">
24570              <ul class="entry_tags">
24571                  <li><a href="#tag_HAL2">HAL2</a></li>
24572              </ul>
24573            </td>
24574
24575          </tr>
24576          <tr class="entries_header">
24577            <th class="th_details" colspan="5">Details</th>
24578          </tr>
24579          <tr class="entry_cont">
24580            <td class="entry_details" colspan="5">
24581              <p>Whether the black level offset was locked for this frame.<wbr/>  Should be
24582ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
24583a change in other capture settings forced the camera device to
24584perform a black level reset.<wbr/></p>
24585            </td>
24586          </tr>
24587
24588          <tr class="entries_header">
24589            <th class="th_details" colspan="5">HAL Implementation Details</th>
24590          </tr>
24591          <tr class="entry_cont">
24592            <td class="entry_details" colspan="5">
24593              <p>If for some reason black level locking is no longer possible
24594(for example,<wbr/> the analog gain has changed,<wbr/> which forces
24595black level offsets to be recalculated),<wbr/> then the HAL must
24596override this request (and it must report 'OFF' when this
24597does happen) until the next capture for which locking is
24598possible again.<wbr/></p>
24599            </td>
24600          </tr>
24601
24602          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24603           <!-- end of entry -->
24604        
24605        
24606
24607      <!-- end of kind -->
24608      </tbody>
24609
24610  <!-- end of section -->
24611  <tr><td colspan="6" id="section_sync" class="section">sync</td></tr>
24612
24613
24614      <tr><td colspan="6" class="kind">dynamic</td></tr>
24615
24616      <thead class="entries_header">
24617        <tr>
24618          <th class="th_name">Property Name</th>
24619          <th class="th_type">Type</th>
24620          <th class="th_description">Description</th>
24621          <th class="th_units">Units</th>
24622          <th class="th_range">Range</th>
24623          <th class="th_tags">Tags</th>
24624        </tr>
24625      </thead>
24626
24627      <tbody>
24628
24629        
24630
24631        
24632
24633        
24634
24635        
24636
24637                
24638          <tr class="entry" id="dynamic_android.sync.frameNumber">
24639            <td class="entry_name
24640             " rowspan="5">
24641              android.<wbr/>sync.<wbr/>frame<wbr/>Number
24642            </td>
24643            <td class="entry_type">
24644                <span class="entry_type_name entry_type_name_enum">int64</span>
24645
24646              <span class="entry_type_visibility"> [hidden]</span>
24647
24648
24649              <span class="entry_type_hwlevel">[legacy] </span>
24650
24651
24652
24653                <ul class="entry_type_enum">
24654                  <li>
24655                    <span class="entry_type_enum_name">CONVERGING</span>
24656                    <span class="entry_type_enum_value">-1</span>
24657                    <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
24658<p>Synchronization is in progress,<wbr/> and reading metadata from this
24659result may include a mix of data that have taken effect since the
24660last synchronization time.<wbr/></p>
24661<p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
24662this value will update to the actual frame number frame number
24663the result is guaranteed to be synchronized to (as long as the
24664request settings remain constant).<wbr/></p></span>
24665                  </li>
24666                  <li>
24667                    <span class="entry_type_enum_name">UNKNOWN</span>
24668                    <span class="entry_type_enum_value">-2</span>
24669                    <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
24670<p>The result may have already converged,<wbr/> or it may be in
24671progress.<wbr/>  Reading from this result may include some mix
24672of settings from past requests.<wbr/></p>
24673<p>After a settings change,<wbr/> the new settings will eventually all
24674take effect for the output buffers and results.<wbr/> However,<wbr/> this
24675value will not change when that happens.<wbr/> Altering settings
24676rapidly may provide outcomes using mixes of settings from recent
24677requests.<wbr/></p>
24678<p>This value is intended primarily for backwards compatibility with
24679the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
24680                  </li>
24681                </ul>
24682
24683            </td> <!-- entry_type -->
24684
24685            <td class="entry_description">
24686              <p>The frame number corresponding to the last request
24687with which the output result (metadata + buffers) has been fully
24688synchronized.<wbr/></p>
24689            </td>
24690
24691            <td class="entry_units">
24692            </td>
24693
24694            <td class="entry_range">
24695              <p>Either a non-negative value corresponding to a
24696<code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
24697            </td>
24698
24699            <td class="entry_tags">
24700              <ul class="entry_tags">
24701                  <li><a href="#tag_V1">V1</a></li>
24702              </ul>
24703            </td>
24704
24705          </tr>
24706          <tr class="entries_header">
24707            <th class="th_details" colspan="5">Details</th>
24708          </tr>
24709          <tr class="entry_cont">
24710            <td class="entry_details" colspan="5">
24711              <p>When a request is submitted to the camera device,<wbr/> there is usually a
24712delay of several frames before the controls get applied.<wbr/> A camera
24713device may either choose to account for this delay by implementing a
24714pipeline and carefully submit well-timed atomic control updates,<wbr/> or
24715it may start streaming control changes that span over several frame
24716boundaries.<wbr/></p>
24717<p>In the latter case,<wbr/> whenever a request's settings change relative to
24718the previous submitted request,<wbr/> the full set of changes may take
24719multiple frame durations to fully take effect.<wbr/> Some settings may
24720take effect sooner (in less frame durations) than others.<wbr/></p>
24721<p>While a set of control changes are being propagated,<wbr/> this value
24722will be CONVERGING.<wbr/></p>
24723<p>Once it is fully known that a set of control changes have been
24724finished propagating,<wbr/> and the resulting updated control settings
24725have been read back by the camera device,<wbr/> this value will be set
24726to a non-negative frame number (corresponding to the request to
24727which the results have synchronized to).<wbr/></p>
24728<p>Older camera device implementations may not have a way to detect
24729when all camera controls have been applied,<wbr/> and will always set this
24730value to UNKNOWN.<wbr/></p>
24731<p>FULL capability devices will always have this value set to the
24732frame number of the request corresponding to this result.<wbr/></p>
24733<p><em>Further details</em>:</p>
24734<ul>
24735<li>Whenever a request differs from the last request,<wbr/> any future
24736results not yet returned may have this value set to CONVERGING (this
24737could include any in-progress captures not yet returned by the camera
24738device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
24739<li>Submitting a series of multiple requests that differ from the
24740previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
24741moves the new synchronization frame to the last non-repeating
24742request (using the smallest frame number from the contiguous list of
24743repeating requests).<wbr/></li>
24744<li>Submitting the same request repeatedly will not change this value
24745to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
24746<li>When this value changes to non-negative,<wbr/> that means that all of the
24747metadata controls from the request have been applied,<wbr/> all of the
24748metadata controls from the camera device have been read to the
24749updated values (into the result),<wbr/> and all of the graphics buffers
24750corresponding to this result are also synchronized to the request.<wbr/></li>
24751</ul>
24752<p><em>Pipeline considerations</em>:</p>
24753<p>Submitting a request with updated controls relative to the previously
24754submitted requests may also invalidate the synchronization state
24755of all the results corresponding to currently in-flight requests.<wbr/></p>
24756<p>In other words,<wbr/> results for this current request and up to
24757<a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
24758<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
24759            </td>
24760          </tr>
24761
24762          <tr class="entries_header">
24763            <th class="th_details" colspan="5">HAL Implementation Details</th>
24764          </tr>
24765          <tr class="entry_cont">
24766            <td class="entry_details" colspan="5">
24767              <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
24768is also UNKNOWN.<wbr/></p>
24769<p>FULL capability devices should simply set this value to the
24770<code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
24771            </td>
24772          </tr>
24773
24774          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24775           <!-- end of entry -->
24776        
24777        
24778
24779      <!-- end of kind -->
24780      </tbody>
24781      <tr><td colspan="6" class="kind">static</td></tr>
24782
24783      <thead class="entries_header">
24784        <tr>
24785          <th class="th_name">Property Name</th>
24786          <th class="th_type">Type</th>
24787          <th class="th_description">Description</th>
24788          <th class="th_units">Units</th>
24789          <th class="th_range">Range</th>
24790          <th class="th_tags">Tags</th>
24791        </tr>
24792      </thead>
24793
24794      <tbody>
24795
24796        
24797
24798        
24799
24800        
24801
24802        
24803
24804                
24805          <tr class="entry" id="static_android.sync.maxLatency">
24806            <td class="entry_name
24807             " rowspan="5">
24808              android.<wbr/>sync.<wbr/>max<wbr/>Latency
24809            </td>
24810            <td class="entry_type">
24811                <span class="entry_type_name entry_type_name_enum">int32</span>
24812
24813              <span class="entry_type_visibility"> [public]</span>
24814
24815
24816              <span class="entry_type_hwlevel">[legacy] </span>
24817
24818
24819
24820                <ul class="entry_type_enum">
24821                  <li>
24822                    <span class="entry_type_enum_name">PER_FRAME_CONTROL</span>
24823                    <span class="entry_type_enum_value">0</span>
24824                    <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
24825<p>Furthermore for all results,<wbr/>
24826<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CaptureResult#getFrameNumber()</code></p>
24827<p>Changing controls over multiple requests one after another will
24828produce results that have those controls applied atomically
24829each frame.<wbr/></p>
24830<p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
24831                  </li>
24832                  <li>
24833                    <span class="entry_type_enum_name">UNKNOWN</span>
24834                    <span class="entry_type_enum_value">-1</span>
24835                    <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
24836of the past requests applied to the camera settings.<wbr/></p>
24837<p>By submitting a series of identical requests,<wbr/> the camera device
24838will eventually have the camera settings applied,<wbr/> but it is
24839unknown when that exact point will be.<wbr/></p>
24840<p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
24841                  </li>
24842                </ul>
24843
24844            </td> <!-- entry_type -->
24845
24846            <td class="entry_description">
24847              <p>The maximum number of frames that can occur after a request
24848(different than the previous) has been submitted,<wbr/> and before the
24849result's state becomes synchronized (by setting
24850<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> to a non-negative value).<wbr/></p>
24851            </td>
24852
24853            <td class="entry_units">
24854              Frame counts
24855            </td>
24856
24857            <td class="entry_range">
24858              <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
24859            </td>
24860
24861            <td class="entry_tags">
24862              <ul class="entry_tags">
24863                  <li><a href="#tag_V1">V1</a></li>
24864              </ul>
24865            </td>
24866
24867          </tr>
24868          <tr class="entries_header">
24869            <th class="th_details" colspan="5">Details</th>
24870          </tr>
24871          <tr class="entry_cont">
24872            <td class="entry_details" colspan="5">
24873              <p>This defines the maximum distance (in number of metadata results),<wbr/>
24874between <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> and the equivalent
24875frame number for that result.<wbr/></p>
24876<p>In other words this acts as an upper boundary for how many frames
24877must occur before the camera device knows for a fact that the new
24878submitted camera settings have been applied in outgoing frames.<wbr/></p>
24879<p>For example if the distance was 2,<wbr/></p>
24880<pre><code>initial request = X (repeating)
24881request1 = X
24882request2 = Y
24883request3 = Y
24884request4 = Y
24885
24886where requestN has frameNumber N,<wbr/> and the first of the repeating
24887initial request's has frameNumber F (and F &lt; 1).<wbr/>
24888
24889initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
24890result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
24891result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
24892result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
24893result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
24894
24895where resultN has frameNumber N.<wbr/>
24896</code></pre>
24897<p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
24898<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
24899<code>4 - 2 = 2</code>.<wbr/></p>
24900            </td>
24901          </tr>
24902
24903          <tr class="entries_header">
24904            <th class="th_details" colspan="5">HAL Implementation Details</th>
24905          </tr>
24906          <tr class="entry_cont">
24907            <td class="entry_details" colspan="5">
24908              <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
24909<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or <code>CaptureResult#getFrameNumber()</code>.<wbr/></p>
24910<p>LIMITED devices are strongly encouraged to use a non-negative
24911value.<wbr/> If UNKNOWN is used here then app developers do not have a way
24912to know when sensor settings have been applied.<wbr/></p>
24913            </td>
24914          </tr>
24915
24916          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24917           <!-- end of entry -->
24918        
24919        
24920
24921      <!-- end of kind -->
24922      </tbody>
24923
24924  <!-- end of section -->
24925  <tr><td colspan="6" id="section_reprocess" class="section">reprocess</td></tr>
24926
24927
24928      <tr><td colspan="6" class="kind">controls</td></tr>
24929
24930      <thead class="entries_header">
24931        <tr>
24932          <th class="th_name">Property Name</th>
24933          <th class="th_type">Type</th>
24934          <th class="th_description">Description</th>
24935          <th class="th_units">Units</th>
24936          <th class="th_range">Range</th>
24937          <th class="th_tags">Tags</th>
24938        </tr>
24939      </thead>
24940
24941      <tbody>
24942
24943        
24944
24945        
24946
24947        
24948
24949        
24950
24951                
24952          <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
24953            <td class="entry_name
24954             " rowspan="3">
24955              android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
24956            </td>
24957            <td class="entry_type">
24958                <span class="entry_type_name">float</span>
24959
24960              <span class="entry_type_visibility"> [public]</span>
24961
24962
24963
24964
24965
24966
24967            </td> <!-- entry_type -->
24968
24969            <td class="entry_description">
24970              <p>The amount of exposure time increase factor applied to the original output
24971frame by the application processing before sending for reprocessing.<wbr/></p>
24972            </td>
24973
24974            <td class="entry_units">
24975              Relative exposure time increase factor.<wbr/>
24976            </td>
24977
24978            <td class="entry_range">
24979              <p>&gt;= 1.<wbr/>0</p>
24980            </td>
24981
24982            <td class="entry_tags">
24983              <ul class="entry_tags">
24984                  <li><a href="#tag_V1">V1</a></li>
24985              </ul>
24986            </td>
24987
24988          </tr>
24989          <tr class="entries_header">
24990            <th class="th_details" colspan="5">Details</th>
24991          </tr>
24992          <tr class="entry_cont">
24993            <td class="entry_details" colspan="5">
24994              <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
24995capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
24996<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
24997output frames to effectively reduce the noise to the same level as a frame that was
24998captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
24999images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
25000the camera device is that the amount of noise in the image would be approximately what
25001would be expected if the original capture parameters had been a sensitivity of
25002S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
25003than S and T respectively.<wbr/> If the captured images were processed by the application
25004before being sent for reprocessing,<wbr/> then the application may have used image processing
25005algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
25006application-processed images (input images).<wbr/> By using the effectiveExposureFactor
25007control,<wbr/> the application can communicate to the camera device the actual noise level
25008improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
25009device can select appropriate noise reduction and edge enhancement parameters to avoid
25010excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
25011enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
25012<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
25013multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
25014fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
25015square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
25016adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
25017produce the best quality images.<wbr/></p>
25018<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
25019buffer in a way that affects its effective exposure time.<wbr/></p>
25020<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
25021reduction 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/>
25022Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
25023<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
25024            </td>
25025          </tr>
25026
25027
25028          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25029           <!-- end of entry -->
25030        
25031        
25032
25033      <!-- end of kind -->
25034      </tbody>
25035      <tr><td colspan="6" class="kind">dynamic</td></tr>
25036
25037      <thead class="entries_header">
25038        <tr>
25039          <th class="th_name">Property Name</th>
25040          <th class="th_type">Type</th>
25041          <th class="th_description">Description</th>
25042          <th class="th_units">Units</th>
25043          <th class="th_range">Range</th>
25044          <th class="th_tags">Tags</th>
25045        </tr>
25046      </thead>
25047
25048      <tbody>
25049
25050        
25051
25052        
25053
25054        
25055
25056        
25057
25058                
25059          <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
25060            <td class="entry_name
25061             " rowspan="3">
25062              android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
25063            </td>
25064            <td class="entry_type">
25065                <span class="entry_type_name">float</span>
25066
25067              <span class="entry_type_visibility"> [public]</span>
25068
25069
25070
25071
25072
25073
25074            </td> <!-- entry_type -->
25075
25076            <td class="entry_description">
25077              <p>The amount of exposure time increase factor applied to the original output
25078frame by the application processing before sending for reprocessing.<wbr/></p>
25079            </td>
25080
25081            <td class="entry_units">
25082              Relative exposure time increase factor.<wbr/>
25083            </td>
25084
25085            <td class="entry_range">
25086              <p>&gt;= 1.<wbr/>0</p>
25087            </td>
25088
25089            <td class="entry_tags">
25090              <ul class="entry_tags">
25091                  <li><a href="#tag_V1">V1</a></li>
25092              </ul>
25093            </td>
25094
25095          </tr>
25096          <tr class="entries_header">
25097            <th class="th_details" colspan="5">Details</th>
25098          </tr>
25099          <tr class="entry_cont">
25100            <td class="entry_details" colspan="5">
25101              <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
25102capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
25103<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
25104output frames to effectively reduce the noise to the same level as a frame that was
25105captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
25106images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
25107the camera device is that the amount of noise in the image would be approximately what
25108would be expected if the original capture parameters had been a sensitivity of
25109S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
25110than S and T respectively.<wbr/> If the captured images were processed by the application
25111before being sent for reprocessing,<wbr/> then the application may have used image processing
25112algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
25113application-processed images (input images).<wbr/> By using the effectiveExposureFactor
25114control,<wbr/> the application can communicate to the camera device the actual noise level
25115improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
25116device can select appropriate noise reduction and edge enhancement parameters to avoid
25117excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
25118enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
25119<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
25120multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
25121fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
25122square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
25123adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
25124produce the best quality images.<wbr/></p>
25125<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
25126buffer in a way that affects its effective exposure time.<wbr/></p>
25127<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
25128reduction 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/>
25129Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
25130<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
25131            </td>
25132          </tr>
25133
25134
25135          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25136           <!-- end of entry -->
25137        
25138        
25139
25140      <!-- end of kind -->
25141      </tbody>
25142
25143  <!-- end of section -->
25144  <tr><td colspan="6" id="section_depth" class="section">depth</td></tr>
25145
25146
25147      <tr><td colspan="6" class="kind">static</td></tr>
25148
25149      <thead class="entries_header">
25150        <tr>
25151          <th class="th_name">Property Name</th>
25152          <th class="th_type">Type</th>
25153          <th class="th_description">Description</th>
25154          <th class="th_units">Units</th>
25155          <th class="th_range">Range</th>
25156          <th class="th_tags">Tags</th>
25157        </tr>
25158      </thead>
25159
25160      <tbody>
25161
25162        
25163
25164        
25165
25166        
25167
25168        
25169
25170                
25171          <tr class="entry" id="static_android.depth.maxDepthSamples">
25172            <td class="entry_name
25173             " rowspan="3">
25174              android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
25175            </td>
25176            <td class="entry_type">
25177                <span class="entry_type_name">int32</span>
25178
25179              <span class="entry_type_visibility"> [system]</span>
25180
25181
25182              <span class="entry_type_hwlevel">[limited] </span>
25183
25184
25185
25186
25187            </td> <!-- entry_type -->
25188
25189            <td class="entry_description">
25190              <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
25191            </td>
25192
25193            <td class="entry_units">
25194            </td>
25195
25196            <td class="entry_range">
25197            </td>
25198
25199            <td class="entry_tags">
25200              <ul class="entry_tags">
25201                  <li><a href="#tag_DEPTH">DEPTH</a></li>
25202              </ul>
25203            </td>
25204
25205          </tr>
25206          <tr class="entries_header">
25207            <th class="th_details" colspan="5">Details</th>
25208          </tr>
25209          <tr class="entry_cont">
25210            <td class="entry_details" colspan="5">
25211              <p>If a camera device supports outputting depth range data in the form of a depth
25212point cloud (Image<wbr/>Format#DEPTH_<wbr/>POINT_<wbr/>CLOUD),<wbr/> this is the maximum number of points
25213an output buffer may contain.<wbr/></p>
25214<p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
25215If output in the depth point cloud format is not supported,<wbr/> this entry will
25216not be defined.<wbr/></p>
25217            </td>
25218          </tr>
25219
25220
25221          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25222           <!-- end of entry -->
25223        
25224                
25225          <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
25226            <td class="entry_name
25227             " rowspan="3">
25228              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
25229            </td>
25230            <td class="entry_type">
25231                <span class="entry_type_name entry_type_name_enum">int32</span>
25232                <span class="entry_type_container">x</span>
25233
25234                <span class="entry_type_array">
25235                  n x 4
25236                </span>
25237              <span class="entry_type_visibility"> [hidden as streamConfiguration]</span>
25238
25239
25240              <span class="entry_type_hwlevel">[limited] </span>
25241
25242
25243
25244                <ul class="entry_type_enum">
25245                  <li>
25246                    <span class="entry_type_enum_name">OUTPUT</span>
25247                  </li>
25248                  <li>
25249                    <span class="entry_type_enum_name">INPUT</span>
25250                  </li>
25251                </ul>
25252
25253            </td> <!-- entry_type -->
25254
25255            <td class="entry_description">
25256              <p>The available depth dataspace stream
25257configurations that this camera device supports
25258(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
25259            </td>
25260
25261            <td class="entry_units">
25262            </td>
25263
25264            <td class="entry_range">
25265            </td>
25266
25267            <td class="entry_tags">
25268              <ul class="entry_tags">
25269                  <li><a href="#tag_DEPTH">DEPTH</a></li>
25270              </ul>
25271            </td>
25272
25273          </tr>
25274          <tr class="entries_header">
25275            <th class="th_details" colspan="5">Details</th>
25276          </tr>
25277          <tr class="entry_cont">
25278            <td class="entry_details" colspan="5">
25279              <p>These are output stream configurations for use with
25280dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
25281listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
25282<p>Only devices that support depth output for at least
25283the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
25284this entry.<wbr/></p>
25285<p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
25286sparse depth point cloud must report a single entry for
25287the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
25288<a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
25289the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
25290            </td>
25291          </tr>
25292
25293
25294          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25295           <!-- end of entry -->
25296        
25297                
25298          <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
25299            <td class="entry_name
25300             " rowspan="3">
25301              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
25302            </td>
25303            <td class="entry_type">
25304                <span class="entry_type_name">int64</span>
25305                <span class="entry_type_container">x</span>
25306
25307                <span class="entry_type_array">
25308                  4 x n
25309                </span>
25310              <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
25311
25312
25313              <span class="entry_type_hwlevel">[limited] </span>
25314
25315
25316
25317
25318            </td> <!-- entry_type -->
25319
25320            <td class="entry_description">
25321              <p>This lists the minimum frame duration for each
25322format/<wbr/>size combination for depth output formats.<wbr/></p>
25323            </td>
25324
25325            <td class="entry_units">
25326              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
25327            </td>
25328
25329            <td class="entry_range">
25330            </td>
25331
25332            <td class="entry_tags">
25333              <ul class="entry_tags">
25334                  <li><a href="#tag_DEPTH">DEPTH</a></li>
25335              </ul>
25336            </td>
25337
25338          </tr>
25339          <tr class="entries_header">
25340            <th class="th_details" colspan="5">Details</th>
25341          </tr>
25342          <tr class="entry_cont">
25343            <td class="entry_details" colspan="5">
25344              <p>This should correspond to the frame duration when only that
25345stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
25346set to either OFF or FAST.<wbr/></p>
25347<p>When multiple streams are used in a request,<wbr/> the minimum frame
25348duration will be max(individual stream min durations).<wbr/></p>
25349<p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
25350is the same regardless of whether the stream is input or output.<wbr/></p>
25351<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
25352<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
25353calculating the max frame rate.<wbr/></p>
25354<p>(Keep in sync with
25355StreamConfigurationMap#getOutputMinFrameDuration)</p>
25356            </td>
25357          </tr>
25358
25359
25360          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25361           <!-- end of entry -->
25362        
25363                
25364          <tr class="entry" id="static_android.depth.availableDepthStallDurations">
25365            <td class="entry_name
25366             " rowspan="3">
25367              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
25368            </td>
25369            <td class="entry_type">
25370                <span class="entry_type_name">int64</span>
25371                <span class="entry_type_container">x</span>
25372
25373                <span class="entry_type_array">
25374                  4 x n
25375                </span>
25376              <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
25377
25378
25379              <span class="entry_type_hwlevel">[limited] </span>
25380
25381
25382
25383
25384            </td> <!-- entry_type -->
25385
25386            <td class="entry_description">
25387              <p>This lists the maximum stall duration for each
25388format/<wbr/>size combination for depth streams.<wbr/></p>
25389            </td>
25390
25391            <td class="entry_units">
25392              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
25393            </td>
25394
25395            <td class="entry_range">
25396            </td>
25397
25398            <td class="entry_tags">
25399              <ul class="entry_tags">
25400                  <li><a href="#tag_DEPTH">DEPTH</a></li>
25401              </ul>
25402            </td>
25403
25404          </tr>
25405          <tr class="entries_header">
25406            <th class="th_details" colspan="5">Details</th>
25407          </tr>
25408          <tr class="entry_cont">
25409            <td class="entry_details" colspan="5">
25410              <p>A stall duration is how much extra time would get added
25411to the normal minimum frame duration for a repeating request
25412that has streams with non-zero stall.<wbr/></p>
25413<p>This functions similarly to
25414<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
25415streams.<wbr/></p>
25416<p>All depth output stream formats may have a nonzero stall
25417duration.<wbr/></p>
25418            </td>
25419          </tr>
25420
25421
25422          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25423           <!-- end of entry -->
25424        
25425        
25426
25427      <!-- end of kind -->
25428      </tbody>
25429
25430  <!-- end of section -->
25431<!-- </namespace> -->
25432  </table>
25433
25434  <div class="tags" id="tag_index">
25435    <h2>Tags</h2>
25436    <ul>
25437      <li id="tag_BC">BC - 
25438        Needed for backwards compatibility with old Java API
25439    
25440        <ul class="tags_entries">
25441          <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
25442          <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
25443          <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
25444          <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
25445          <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
25446          <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
25447          <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
25448          <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
25449          <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
25450          <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
25451          <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
25452          <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
25453          <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
25454          <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
25455          <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
25456          <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
25457          <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
25458          <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
25459          <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
25460          <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
25461          <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
25462          <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
25463          <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
25464          <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
25465          <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
25466          <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
25467          <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
25468          <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
25469          <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
25470          <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
25471          <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
25472          <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
25473          <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
25474          <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
25475          <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
25476          <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
25477          <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
25478          <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
25479          <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
25480          <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
25481          <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
25482          <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
25483          <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
25484          <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
25485          <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
25486          <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
25487          <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
25488          <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
25489          <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
25490          <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
25491          <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
25492          <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
25493          <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
25494          <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
25495          <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
25496          <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
25497          <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
25498          <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
25499          <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
25500          <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
25501          <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
25502          <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
25503          <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
25504          <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
25505          <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
25506          <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
25507          <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
25508        </ul>
25509      </li> <!-- tag_BC -->
25510      <li id="tag_V1">V1 - 
25511        New features for first camera 2 release (API1)
25512    
25513        <ul class="tags_entries">
25514          <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
25515          <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
25516          <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
25517          <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
25518          <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
25519          <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
25520          <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
25521          <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
25522          <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
25523          <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
25524          <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
25525          <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
25526          <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
25527          <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
25528          <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
25529          <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
25530          <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
25531          <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
25532          <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
25533          <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
25534          <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
25535          <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
25536          <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
25537          <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
25538          <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
25539          <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
25540          <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
25541          <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
25542          <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
25543          <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
25544          <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
25545          <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
25546          <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
25547          <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
25548          <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
25549          <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
25550          <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
25551          <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
25552          <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
25553          <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
25554          <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
25555          <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
25556          <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
25557          <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
25558          <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
25559          <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
25560        </ul>
25561      </li> <!-- tag_V1 -->
25562      <li id="tag_RAW">RAW - 
25563        Needed for useful RAW image processing and DNG file support
25564    
25565        <ul class="tags_entries">
25566          <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
25567          <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
25568          <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
25569          <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
25570          <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
25571          <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
25572          <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
25573          <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
25574          <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
25575          <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
25576          <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
25577          <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
25578          <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
25579          <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
25580          <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
25581          <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
25582          <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
25583          <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
25584          <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
25585          <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
25586          <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
25587          <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
25588          <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
25589          <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
25590          <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
25591          <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
25592        </ul>
25593      </li> <!-- tag_RAW -->
25594      <li id="tag_HAL2">HAL2 - 
25595        Entry is only used by camera device HAL 2.x
25596    
25597        <ul class="tags_entries">
25598          <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
25599          <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
25600          <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
25601          <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
25602          <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
25603        </ul>
25604      </li> <!-- tag_HAL2 -->
25605      <li id="tag_FULL">FULL - 
25606        Entry is required for full hardware level devices, and optional for other hardware levels
25607    
25608        <ul class="tags_entries">
25609          <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
25610        </ul>
25611      </li> <!-- tag_FULL -->
25612      <li id="tag_DEPTH">DEPTH - 
25613        Entry is required for the depth capability.
25614    
25615        <ul class="tags_entries">
25616          <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
25617          <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
25618          <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
25619          <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
25620          <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
25621          <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
25622          <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
25623          <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
25624        </ul>
25625      </li> <!-- tag_DEPTH -->
25626      <li id="tag_FUTURE">FUTURE - 
25627        Entry is  under-specified and is not required for now. This is for book-keeping purpose,
25628        do not implement or use it, it may be revised for future.
25629    
25630        <ul class="tags_entries">
25631          <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
25632          <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
25633          <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
25634          <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
25635          <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
25636          <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
25637          <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
25638          <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
25639          <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
25640          <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
25641          <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
25642          <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
25643          <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
25644          <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
25645          <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
25646          <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
25647          <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
25648          <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
25649          <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
25650          <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
25651          <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
25652        </ul>
25653      </li> <!-- tag_FUTURE -->
25654    </ul>
25655  </div>
25656
25657  [ <a href="#">top</a> ]
25658
25659</body>
25660</html>
25661