docs.html revision ea3b26886f230c995490a7affe2da58cd8361934
1<!DOCTYPE html>
2<html>
3<!-- Copyright (C) 2012 The Android Open Source Project
4
5     Licensed under the Apache License, Version 2.0 (the "License");
6     you may not use this file except in compliance with the License.
7     You may obtain a copy of the License at
8
9          http://www.apache.org/licenses/LICENSE-2.0
10
11     Unless required by applicable law or agreed to in writing, software
12     distributed under the License is distributed on an "AS IS" BASIS,
13     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14     See the License for the specific language governing permissions and
15     limitations under the License.
16-->
17<head>
18  <!-- automatically generated from html.mako. do NOT edit directly -->
19  <meta charset="utf-8" />
20  <title>Android Camera HAL3.2 Properties</title>
21  <style type="text/css">
22     body { background-color: #f7f7f7; font-family: Roboto, sans-serif;}
23     h1 { color: #333333; }
24     h2 { color: #333333; }
25     a:link { color: #258aaf; text-decoration: none}
26     a:hover { color: #459aaf; text-decoration: underline }
27     a:visited { color: #154a5f; text-decoration: none}
28    .section { color: #eeeeee; font-size: 1.5em; font-weight: bold; background-color: #888888; padding: 0.5em 0em 0.5em 0.5em; border-width: thick thin thin thin; border-color: #111111 #777777 #777777 #777777}
29    .kind { color: #eeeeee; font-size: 1.2em; font-weight: bold; padding-left: 1.5em; background-color: #aaaaaa }
30    .entry { background-color: #f0f0f0 }
31    .entry_cont { background-color: #f0f0f0 }
32    .entries_header { background-color: #dddddd; text-align: center}
33
34    /* toc style */
35    .toc_section_header { font-size:1.3em;  }
36    .toc_kind_header { font-size:1.2em;  }
37    .toc_deprecated { text-decoration:line-through; }
38
39    /* table column sizes */
40    table { border-collapse:collapse; table-layout: fixed; width: 100%; word-wrap: break-word }
41    td,th { border: 1px solid; border-color: #aaaaaa; padding-left: 0.5em; padding-right: 0.5em }
42    .th_name { width: 20% }
43    .th_units { width: 10% }
44    .th_tags { width: 5% }
45    .th_details { width: 25% }
46    .th_type { width: 20% }
47    .th_description { width: 20% }
48    .th_range { width: 10% }
49    td { font-size: 0.9em; }
50
51    /* hide the first thead, we need it there only to enforce column sizes */
52    .thead_dummy { visibility: hidden; }
53
54    /* Entry flair */
55    .entry_name { color: #333333; padding-left:1.0em; font-size:1.1em; font-family: monospace; vertical-align:top; }
56    .entry_name_deprecated { text-decoration:line-through; }
57
58    /* Entry type flair */
59    .entry_type_name { font-size:1.1em; color: #669900; font-weight: bold;}
60    .entry_type_name_enum:after { color: #669900; font-weight: bold; content:" (enum)" }
61    .entry_type_visibility { font-weight: bolder; padding-left:1em}
62    .entry_type_synthetic { font-weight: bolder; color: #996600; }
63    .entry_type_hwlevel { font-weight: bolder; color: #000066; }
64    .entry_type_deprecated { font-weight: bolder; color: #4D4D4D; }
65    .entry_type_enum_name { font-family: monospace; font-weight: bolder; }
66    .entry_type_enum_notes:before { content:" - " }
67    .entry_type_enum_notes>p:first-child { display:inline; }
68    .entry_type_enum_value:before { content:" = " }
69    .entry_type_enum_value { font-family: monospace; }
70    .entry ul { margin: 0 0 0 0; list-style-position: inside; padding-left: 0.5em; }
71    .entry ul li { padding: 0 0 0 0; margin: 0 0 0 0;}
72    .entry_range_deprecated { font-weight: bolder; }
73
74    /* Entry tags flair */
75    .entry_tags ul { list-style-type: none; }
76
77    /* Entry details (full docs) flair */
78    .entry_details_header { font-weight: bold; background-color: #dddddd;
79      text-align: center; font-size: 1.1em; margin-left: 0em; margin-right: 0em; }
80
81    /* Entry spacer flair */
82    .entry_spacer { background-color: transparent; border-style: none; height: 0.5em; }
83
84    /* TODO: generate abbr element for each tag link? */
85    /* TODO for each x.y.z try to link it to the entry */
86
87  </style>
88
89  <style>
90
91    {
92      /* broken...
93         supposedly there is a bug in chrome that it lays out tables before
94         it knows its being printed, so the page-break-* styles are ignored
95         */
96        tr { page-break-after: always; page-break-inside: avoid; }
97    }
98
99  </style>
100</head>
101
102
103
104<body>
105  <h1>Android Camera HAL3.2 Properties</h1>
106
107
108  <h2>Table of Contents</h2>
109  <ul class="toc">
110    <li><a href="#tag_index" class="toc_section_header">Tags</a></li>
111    <li>
112      <span class="toc_section_header"><a href="#section_colorCorrection">colorCorrection</a></span>
113      <ul class="toc_section">
114        <li>
115          <span class="toc_kind_header">controls</span>
116          <ul class="toc_section">
117            <li
118            ><a href="#controls_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
119            <li
120            ><a href="#controls_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
121            <li
122            ><a href="#controls_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
123            <li
124            ><a href="#controls_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
125          </ul>
126        </li>
127        <li>
128          <span class="toc_kind_header">dynamic</span>
129          <ul class="toc_section">
130            <li
131            ><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
132            <li
133            ><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
134            <li
135            ><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
136            <li
137            ><a href="#dynamic_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
138          </ul>
139        </li>
140        <li>
141          <span class="toc_kind_header">static</span>
142          <ul class="toc_section">
143            <li
144            ><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a></li>
145          </ul>
146        </li>
147      </ul> <!-- toc_section -->
148    </li>
149    <li>
150      <span class="toc_section_header"><a href="#section_control">control</a></span>
151      <ul class="toc_section">
152        <li>
153          <span class="toc_kind_header">controls</span>
154          <ul class="toc_section">
155            <li
156            ><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
157            <li
158            ><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
159            <li
160            ><a href="#controls_android.control.aeLock">android.control.aeLock</a></li>
161            <li
162            ><a href="#controls_android.control.aeMode">android.control.aeMode</a></li>
163            <li
164            ><a href="#controls_android.control.aeRegions">android.control.aeRegions</a></li>
165            <li
166            ><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
167            <li
168            ><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
169            <li
170            ><a href="#controls_android.control.afMode">android.control.afMode</a></li>
171            <li
172            ><a href="#controls_android.control.afRegions">android.control.afRegions</a></li>
173            <li
174            ><a href="#controls_android.control.afTrigger">android.control.afTrigger</a></li>
175            <li
176            ><a href="#controls_android.control.awbLock">android.control.awbLock</a></li>
177            <li
178            ><a href="#controls_android.control.awbMode">android.control.awbMode</a></li>
179            <li
180            ><a href="#controls_android.control.awbRegions">android.control.awbRegions</a></li>
181            <li
182            ><a href="#controls_android.control.captureIntent">android.control.captureIntent</a></li>
183            <li
184            ><a href="#controls_android.control.effectMode">android.control.effectMode</a></li>
185            <li
186            ><a href="#controls_android.control.mode">android.control.mode</a></li>
187            <li
188            ><a href="#controls_android.control.sceneMode">android.control.sceneMode</a></li>
189            <li
190            ><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
191          </ul>
192        </li>
193        <li>
194          <span class="toc_kind_header">static</span>
195          <ul class="toc_section">
196            <li
197            ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li>
198            <li
199            ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li>
200            <li
201            ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li>
202            <li
203            ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li>
204            <li
205            ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li>
206            <li
207            ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li>
208            <li
209            ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li>
210            <li
211            ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li>
212            <li
213            ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li>
214            <li
215            ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li>
216            <li
217            ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li>
218            <li
219            ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li>
220            <li
221            ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li>
222            <li
223            ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li>
224            <li
225            ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li>
226            <li
227            ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li>
228            <li
229            ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li>
230            <li
231            ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li>
232            <li
233            ><a href="#static_android.control.availableModes">android.control.availableModes</a></li>
234          </ul>
235        </li>
236        <li>
237          <span class="toc_kind_header">dynamic</span>
238          <ul class="toc_section">
239            <li
240                class="toc_deprecated"
241            ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li>
242            <li
243            ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
244            <li
245            ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
246            <li
247            ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li>
248            <li
249            ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li>
250            <li
251            ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li>
252            <li
253            ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
254            <li
255            ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
256            <li
257            ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li>
258            <li
259            ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li>
260            <li
261            ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li>
262            <li
263            ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li>
264            <li
265            ><a href="#dynamic_android.control.afState">android.control.afState</a></li>
266            <li
267                class="toc_deprecated"
268            ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li>
269            <li
270            ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li>
271            <li
272            ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li>
273            <li
274            ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li>
275            <li
276            ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li>
277            <li
278            ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li>
279            <li
280            ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li>
281            <li
282            ><a href="#dynamic_android.control.mode">android.control.mode</a></li>
283            <li
284            ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li>
285            <li
286            ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
287          </ul>
288        </li>
289      </ul> <!-- toc_section -->
290    </li>
291    <li>
292      <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span>
293      <ul class="toc_section">
294        <li>
295          <span class="toc_kind_header">controls</span>
296          <ul class="toc_section">
297            <li
298            ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li>
299          </ul>
300        </li>
301      </ul> <!-- toc_section -->
302    </li>
303    <li>
304      <span class="toc_section_header"><a href="#section_edge">edge</a></span>
305      <ul class="toc_section">
306        <li>
307          <span class="toc_kind_header">controls</span>
308          <ul class="toc_section">
309            <li
310            ><a href="#controls_android.edge.mode">android.edge.mode</a></li>
311            <li
312            ><a href="#controls_android.edge.strength">android.edge.strength</a></li>
313          </ul>
314        </li>
315        <li>
316          <span class="toc_kind_header">static</span>
317          <ul class="toc_section">
318            <li
319            ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li>
320          </ul>
321        </li>
322        <li>
323          <span class="toc_kind_header">dynamic</span>
324          <ul class="toc_section">
325            <li
326            ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li>
327          </ul>
328        </li>
329      </ul> <!-- toc_section -->
330    </li>
331    <li>
332      <span class="toc_section_header"><a href="#section_flash">flash</a></span>
333      <ul class="toc_section">
334        <li>
335          <span class="toc_kind_header">controls</span>
336          <ul class="toc_section">
337            <li
338            ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li>
339            <li
340            ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li>
341            <li
342            ><a href="#controls_android.flash.mode">android.flash.mode</a></li>
343          </ul>
344        </li>
345        <li>
346          <span class="toc_kind_header">static</span>
347          <ul class="toc_section">
348
349            <li
350            ><a href="#static_android.flash.info.available">android.flash.info.available</a></li>
351            <li
352            ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li>
353
354            <li
355            ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li>
356            <li
357            ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li>
358          </ul>
359        </li>
360        <li>
361          <span class="toc_kind_header">dynamic</span>
362          <ul class="toc_section">
363            <li
364            ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li>
365            <li
366            ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li>
367            <li
368            ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li>
369            <li
370            ><a href="#dynamic_android.flash.state">android.flash.state</a></li>
371          </ul>
372        </li>
373      </ul> <!-- toc_section -->
374    </li>
375    <li>
376      <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span>
377      <ul class="toc_section">
378        <li>
379          <span class="toc_kind_header">controls</span>
380          <ul class="toc_section">
381            <li
382            ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li>
383          </ul>
384        </li>
385        <li>
386          <span class="toc_kind_header">static</span>
387          <ul class="toc_section">
388            <li
389            ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li>
390          </ul>
391        </li>
392        <li>
393          <span class="toc_kind_header">dynamic</span>
394          <ul class="toc_section">
395            <li
396            ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li>
397          </ul>
398        </li>
399      </ul> <!-- toc_section -->
400    </li>
401    <li>
402      <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span>
403      <ul class="toc_section">
404        <li>
405          <span class="toc_kind_header">controls</span>
406          <ul class="toc_section">
407            <li
408            ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
409            <li
410            ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
411            <li
412            ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
413            <li
414            ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
415            <li
416            ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li>
417            <li
418            ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li>
419            <li
420            ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
421            <li
422            ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
423          </ul>
424        </li>
425        <li>
426          <span class="toc_kind_header">static</span>
427          <ul class="toc_section">
428            <li
429            ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li>
430            <li
431            ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li>
432          </ul>
433        </li>
434        <li>
435          <span class="toc_kind_header">dynamic</span>
436          <ul class="toc_section">
437            <li
438            ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
439            <li
440            ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
441            <li
442            ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
443            <li
444            ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
445            <li
446            ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li>
447            <li
448            ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li>
449            <li
450            ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li>
451            <li
452            ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
453            <li
454            ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
455          </ul>
456        </li>
457      </ul> <!-- toc_section -->
458    </li>
459    <li>
460      <span class="toc_section_header"><a href="#section_lens">lens</a></span>
461      <ul class="toc_section">
462        <li>
463          <span class="toc_kind_header">controls</span>
464          <ul class="toc_section">
465            <li
466            ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li>
467            <li
468            ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li>
469            <li
470            ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li>
471            <li
472            ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li>
473            <li
474            ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
475          </ul>
476        </li>
477        <li>
478          <span class="toc_kind_header">static</span>
479          <ul class="toc_section">
480
481            <li
482            ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li>
483            <li
484            ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li>
485            <li
486            ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li>
487            <li
488            ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li>
489            <li
490            ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li>
491            <li
492            ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li>
493            <li
494            ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li>
495            <li
496            ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li>
497
498            <li
499            ><a href="#static_android.lens.facing">android.lens.facing</a></li>
500            <li
501            ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li>
502            <li
503            ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
504            <li
505            ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
506            <li
507            ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
508          </ul>
509        </li>
510        <li>
511          <span class="toc_kind_header">dynamic</span>
512          <ul class="toc_section">
513            <li
514            ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li>
515            <li
516            ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li>
517            <li
518            ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li>
519            <li
520            ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li>
521            <li
522            ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li>
523            <li
524            ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
525            <li
526            ><a href="#dynamic_android.lens.state">android.lens.state</a></li>
527            <li
528            ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li>
529            <li
530            ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
531            <li
532            ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
533            <li
534            ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
535          </ul>
536        </li>
537      </ul> <!-- toc_section -->
538    </li>
539    <li>
540      <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span>
541      <ul class="toc_section">
542        <li>
543          <span class="toc_kind_header">controls</span>
544          <ul class="toc_section">
545            <li
546            ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
547            <li
548            ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li>
549          </ul>
550        </li>
551        <li>
552          <span class="toc_kind_header">static</span>
553          <ul class="toc_section">
554            <li
555            ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li>
556          </ul>
557        </li>
558        <li>
559          <span class="toc_kind_header">dynamic</span>
560          <ul class="toc_section">
561            <li
562            ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
563          </ul>
564        </li>
565      </ul> <!-- toc_section -->
566    </li>
567    <li>
568      <span class="toc_section_header"><a href="#section_quirks">quirks</a></span>
569      <ul class="toc_section">
570        <li>
571          <span class="toc_kind_header">static</span>
572          <ul class="toc_section">
573            <li
574                class="toc_deprecated"
575            ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li>
576            <li
577                class="toc_deprecated"
578            ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li>
579            <li
580                class="toc_deprecated"
581            ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li>
582            <li
583                class="toc_deprecated"
584            ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li>
585          </ul>
586        </li>
587        <li>
588          <span class="toc_kind_header">dynamic</span>
589          <ul class="toc_section">
590            <li
591                class="toc_deprecated"
592            ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li>
593          </ul>
594        </li>
595      </ul> <!-- toc_section -->
596    </li>
597    <li>
598      <span class="toc_section_header"><a href="#section_request">request</a></span>
599      <ul class="toc_section">
600        <li>
601          <span class="toc_kind_header">controls</span>
602          <ul class="toc_section">
603            <li
604                class="toc_deprecated"
605            ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li>
606            <li
607            ><a href="#controls_android.request.id">android.request.id</a></li>
608            <li
609                class="toc_deprecated"
610            ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li>
611            <li
612            ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li>
613            <li
614                class="toc_deprecated"
615            ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li>
616            <li
617                class="toc_deprecated"
618            ><a href="#controls_android.request.type">android.request.type</a></li>
619          </ul>
620        </li>
621        <li>
622          <span class="toc_kind_header">static</span>
623          <ul class="toc_section">
624            <li
625            ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li>
626            <li
627            ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li>
628            <li
629            ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li>
630            <li
631            ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li>
632            <li
633                class="toc_deprecated"
634            ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li>
635            <li
636            ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li>
637            <li
638            ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li>
639            <li
640            ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li>
641            <li
642            ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li>
643            <li
644            ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li>
645            <li
646            ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
647            <li
648            ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
649          </ul>
650        </li>
651        <li>
652          <span class="toc_kind_header">dynamic</span>
653          <ul class="toc_section">
654            <li
655                class="toc_deprecated"
656            ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li>
657            <li
658            ><a href="#dynamic_android.request.id">android.request.id</a></li>
659            <li
660            ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li>
661            <li
662                class="toc_deprecated"
663            ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li>
664            <li
665            ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li>
666          </ul>
667        </li>
668      </ul> <!-- toc_section -->
669    </li>
670    <li>
671      <span class="toc_section_header"><a href="#section_scaler">scaler</a></span>
672      <ul class="toc_section">
673        <li>
674          <span class="toc_kind_header">controls</span>
675          <ul class="toc_section">
676            <li
677            ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
678          </ul>
679        </li>
680        <li>
681          <span class="toc_kind_header">static</span>
682          <ul class="toc_section">
683            <li
684                class="toc_deprecated"
685            ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li>
686            <li
687                class="toc_deprecated"
688            ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li>
689            <li
690                class="toc_deprecated"
691            ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li>
692            <li
693            ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li>
694            <li
695                class="toc_deprecated"
696            ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li>
697            <li
698                class="toc_deprecated"
699            ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li>
700            <li
701                class="toc_deprecated"
702            ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li>
703            <li
704                class="toc_deprecated"
705            ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li>
706            <li
707            ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li>
708            <li
709            ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li>
710            <li
711            ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li>
712            <li
713            ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li>
714            <li
715            ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li>
716            <li
717            ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li>
718          </ul>
719        </li>
720        <li>
721          <span class="toc_kind_header">dynamic</span>
722          <ul class="toc_section">
723            <li
724            ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
725          </ul>
726        </li>
727      </ul> <!-- toc_section -->
728    </li>
729    <li>
730      <span class="toc_section_header"><a href="#section_sensor">sensor</a></span>
731      <ul class="toc_section">
732        <li>
733          <span class="toc_kind_header">controls</span>
734          <ul class="toc_section">
735            <li
736            ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
737            <li
738            ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
739            <li
740            ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
741            <li
742            ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
743            <li
744            ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
745          </ul>
746        </li>
747        <li>
748          <span class="toc_kind_header">static</span>
749          <ul class="toc_section">
750
751            <li
752            ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
753            <li
754            ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
755            <li
756            ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
757            <li
758            ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
759            <li
760            ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
761            <li
762            ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li>
763            <li
764            ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li>
765            <li
766            ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li>
767            <li
768            ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li>
769            <li
770            ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li>
771            <li
772            ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li>
773
774            <li
775            ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
776            <li
777            ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
778            <li
779            ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
780            <li
781            ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
782            <li
783            ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
784            <li
785            ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
786            <li
787            ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
788            <li
789            ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
790            <li
791            ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
792            <li
793            ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
794            <li
795            ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
796            <li
797            ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
798            <li
799            ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
800            <li
801            ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
802            <li
803            ><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li>
804            <li
805            ><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li>
806          </ul>
807        </li>
808        <li>
809          <span class="toc_kind_header">dynamic</span>
810          <ul class="toc_section">
811            <li
812            ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
813            <li
814            ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
815            <li
816            ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
817            <li
818            ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
819            <li
820            ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
821            <li
822            ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
823            <li
824            ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
825            <li
826            ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
827            <li
828            ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
829            <li
830            ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
831            <li
832            ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
833            <li
834            ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
835            <li
836            ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
837            <li
838            ><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li>
839            <li
840            ><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li>
841          </ul>
842        </li>
843      </ul> <!-- toc_section -->
844    </li>
845    <li>
846      <span class="toc_section_header"><a href="#section_shading">shading</a></span>
847      <ul class="toc_section">
848        <li>
849          <span class="toc_kind_header">controls</span>
850          <ul class="toc_section">
851            <li
852            ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
853            <li
854            ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
855          </ul>
856        </li>
857        <li>
858          <span class="toc_kind_header">dynamic</span>
859          <ul class="toc_section">
860            <li
861            ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
862          </ul>
863        </li>
864        <li>
865          <span class="toc_kind_header">static</span>
866          <ul class="toc_section">
867            <li
868            ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li>
869          </ul>
870        </li>
871      </ul> <!-- toc_section -->
872    </li>
873    <li>
874      <span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
875      <ul class="toc_section">
876        <li>
877          <span class="toc_kind_header">controls</span>
878          <ul class="toc_section">
879            <li
880            ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
881            <li
882            ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
883            <li
884            ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
885            <li
886            ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
887            <li
888            ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
889          </ul>
890        </li>
891        <li>
892          <span class="toc_kind_header">static</span>
893          <ul class="toc_section">
894
895            <li
896            ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
897            <li
898            ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
899            <li
900            ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
901            <li
902            ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
903            <li
904            ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
905            <li
906            ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
907            <li
908            ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
909            <li
910            ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
911
912          </ul>
913        </li>
914        <li>
915          <span class="toc_kind_header">dynamic</span>
916          <ul class="toc_section">
917            <li
918            ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
919            <li
920            ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
921            <li
922            ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
923            <li
924            ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
925            <li
926            ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
927            <li
928            ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
929            <li
930            ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
931            <li
932            ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
933            <li
934            ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
935            <li
936            ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
937            <li
938            ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
939            <li
940            ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
941            <li
942                class="toc_deprecated"
943            ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
944            <li
945                class="toc_deprecated"
946            ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
947            <li
948            ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
949            <li
950            ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
951            <li
952            ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
953            <li
954            ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
955          </ul>
956        </li>
957      </ul> <!-- toc_section -->
958    </li>
959    <li>
960      <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
961      <ul class="toc_section">
962        <li>
963          <span class="toc_kind_header">controls</span>
964          <ul class="toc_section">
965            <li
966            ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
967            <li
968            ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
969            <li
970            ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
971            <li
972            ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
973            <li
974            ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
975            <li
976            ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li>
977            <li
978            ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
979          </ul>
980        </li>
981        <li>
982          <span class="toc_kind_header">static</span>
983          <ul class="toc_section">
984            <li
985            ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
986            <li
987            ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
988          </ul>
989        </li>
990        <li>
991          <span class="toc_kind_header">dynamic</span>
992          <ul class="toc_section">
993            <li
994            ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
995            <li
996            ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
997            <li
998            ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
999            <li
1000            ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
1001            <li
1002            ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
1003            <li
1004            ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li>
1005            <li
1006            ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1007          </ul>
1008        </li>
1009      </ul> <!-- toc_section -->
1010    </li>
1011    <li>
1012      <span class="toc_section_header"><a href="#section_led">led</a></span>
1013      <ul class="toc_section">
1014        <li>
1015          <span class="toc_kind_header">controls</span>
1016          <ul class="toc_section">
1017            <li
1018            ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
1019          </ul>
1020        </li>
1021        <li>
1022          <span class="toc_kind_header">dynamic</span>
1023          <ul class="toc_section">
1024            <li
1025            ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
1026          </ul>
1027        </li>
1028        <li>
1029          <span class="toc_kind_header">static</span>
1030          <ul class="toc_section">
1031            <li
1032            ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
1033          </ul>
1034        </li>
1035      </ul> <!-- toc_section -->
1036    </li>
1037    <li>
1038      <span class="toc_section_header"><a href="#section_info">info</a></span>
1039      <ul class="toc_section">
1040        <li>
1041          <span class="toc_kind_header">static</span>
1042          <ul class="toc_section">
1043            <li
1044            ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
1045          </ul>
1046        </li>
1047      </ul> <!-- toc_section -->
1048    </li>
1049    <li>
1050      <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
1051      <ul class="toc_section">
1052        <li>
1053          <span class="toc_kind_header">controls</span>
1054          <ul class="toc_section">
1055            <li
1056            ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
1057          </ul>
1058        </li>
1059        <li>
1060          <span class="toc_kind_header">dynamic</span>
1061          <ul class="toc_section">
1062            <li
1063            ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
1064          </ul>
1065        </li>
1066      </ul> <!-- toc_section -->
1067    </li>
1068    <li>
1069      <span class="toc_section_header"><a href="#section_sync">sync</a></span>
1070      <ul class="toc_section">
1071        <li>
1072          <span class="toc_kind_header">dynamic</span>
1073          <ul class="toc_section">
1074            <li
1075            ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
1076          </ul>
1077        </li>
1078        <li>
1079          <span class="toc_kind_header">static</span>
1080          <ul class="toc_section">
1081            <li
1082            ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
1083          </ul>
1084        </li>
1085      </ul> <!-- toc_section -->
1086    </li>
1087    <li>
1088      <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span>
1089      <ul class="toc_section">
1090        <li>
1091          <span class="toc_kind_header">controls</span>
1092          <ul class="toc_section">
1093            <li
1094            ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1095          </ul>
1096        </li>
1097        <li>
1098          <span class="toc_kind_header">dynamic</span>
1099          <ul class="toc_section">
1100            <li
1101            ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1102          </ul>
1103        </li>
1104        <li>
1105          <span class="toc_kind_header">static</span>
1106          <ul class="toc_section">
1107            <li
1108            ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li>
1109          </ul>
1110        </li>
1111      </ul> <!-- toc_section -->
1112    </li>
1113    <li>
1114      <span class="toc_section_header"><a href="#section_depth">depth</a></span>
1115      <ul class="toc_section">
1116        <li>
1117          <span class="toc_kind_header">static</span>
1118          <ul class="toc_section">
1119            <li
1120            ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li>
1121            <li
1122            ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li>
1123            <li
1124            ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li>
1125            <li
1126            ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li>
1127            <li
1128            ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li>
1129          </ul>
1130        </li>
1131      </ul> <!-- toc_section -->
1132    </li>
1133  </ul>
1134
1135
1136  <h1>Properties</h1>
1137  <table class="properties">
1138
1139    <thead class="thead_dummy">
1140      <tr>
1141        <th class="th_name">Property Name</th>
1142        <th class="th_type">Type</th>
1143        <th class="th_description">Description</th>
1144        <th class="th_units">Units</th>
1145        <th class="th_range">Range</th>
1146        <th class="th_tags">Tags</th>
1147      </tr>
1148    </thead> <!-- so that the first occurrence of thead is not
1149                         above the first occurrence of tr -->
1150<!-- <namespace name="android"> -->
1151  <tr><td colspan="6" id="section_colorCorrection" class="section">colorCorrection</td></tr>
1152
1153
1154      <tr><td colspan="6" class="kind">controls</td></tr>
1155
1156      <thead class="entries_header">
1157        <tr>
1158          <th class="th_name">Property Name</th>
1159          <th class="th_type">Type</th>
1160          <th class="th_description">Description</th>
1161          <th class="th_units">Units</th>
1162          <th class="th_range">Range</th>
1163          <th class="th_tags">Tags</th>
1164        </tr>
1165      </thead>
1166
1167      <tbody>
1168
1169        
1170
1171        
1172
1173        
1174
1175        
1176
1177                
1178          <tr class="entry" id="controls_android.colorCorrection.mode">
1179            <td class="entry_name
1180             " rowspan="5">
1181              android.<wbr/>color<wbr/>Correction.<wbr/>mode
1182            </td>
1183            <td class="entry_type">
1184                <span class="entry_type_name entry_type_name_enum">byte</span>
1185
1186              <span class="entry_type_visibility"> [public]</span>
1187
1188
1189              <span class="entry_type_hwlevel">[full] </span>
1190
1191
1192
1193                <ul class="entry_type_enum">
1194                  <li>
1195                    <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1196                    <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1197and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1198<p>All advanced white balance adjustments (not specified
1199by our white balance pipeline) must be disabled.<wbr/></p>
1200<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
1201TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1202this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1203                  </li>
1204                  <li>
1205                    <span class="entry_type_enum_name">FAST</span>
1206                    <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1207capture rate relative to sensor raw output.<wbr/></p>
1208<p>Advanced white balance adjustments above and beyond
1209the specified white balance pipeline may be applied.<wbr/></p>
1210<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
1211the camera device uses the last frame's AWB values
1212(or defaults if AWB has never been run).<wbr/></p></span>
1213                  </li>
1214                  <li>
1215                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1216                    <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1217quality but the capture rate might be reduced (relative to sensor
1218raw output rate)</p>
1219<p>Advanced white balance adjustments above and beyond
1220the specified white balance pipeline may be applied.<wbr/></p>
1221<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
1222the camera device uses the last frame's AWB values
1223(or defaults if AWB has never been run).<wbr/></p></span>
1224                  </li>
1225                </ul>
1226
1227            </td> <!-- entry_type -->
1228
1229            <td class="entry_description">
1230              <p>The mode control selects how the image data is converted from the
1231sensor's native color into linear sRGB color.<wbr/></p>
1232            </td>
1233
1234            <td class="entry_units">
1235            </td>
1236
1237            <td class="entry_range">
1238            </td>
1239
1240            <td class="entry_tags">
1241            </td>
1242
1243          </tr>
1244          <tr class="entries_header">
1245            <th class="th_details" colspan="5">Details</th>
1246          </tr>
1247          <tr class="entry_cont">
1248            <td class="entry_details" colspan="5">
1249              <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
1250control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1251application controls how the color mapping is performed.<wbr/></p>
1252<p>We define the expected processing pipeline below.<wbr/> For consistency
1253across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1254<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1255do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1256<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1257camera device (in the results) and be roughly correct.<wbr/></p>
1258<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1259FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1260as what was produced by the camera device in the earlier frame.<wbr/></p>
1261<p>The expected processing pipeline is as follows:</p>
1262<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1263<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1264gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1265matrix (applied after demosaic).<wbr/></p>
1266<p>The 4-channel white-balance gains are defined as:</p>
1267<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1268</code></pre>
1269<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1270output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1271These may be identical for a given camera device implementation; if
1272the camera device does not support a separate gain for even/<wbr/>odd green
1273channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1274<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1275<p>The matrices for color transforms are defined as a 9-entry vector:</p>
1276<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 ]
1277</code></pre>
1278<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1279to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1280<p>with colors as follows:</p>
1281<pre><code>r' = I0r + I1g + I2b
1282g' = I3r + I4g + I5b
1283b' = I6r + I7g + I8b
1284</code></pre>
1285<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1286values are clipped to fit within the range.<wbr/></p>
1287            </td>
1288          </tr>
1289
1290          <tr class="entries_header">
1291            <th class="th_details" colspan="5">HAL Implementation Details</th>
1292          </tr>
1293          <tr class="entry_cont">
1294            <td class="entry_details" colspan="5">
1295              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1296on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1297That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1298capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1299            </td>
1300          </tr>
1301
1302          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1303           <!-- end of entry -->
1304        
1305                
1306          <tr class="entry" id="controls_android.colorCorrection.transform">
1307            <td class="entry_name
1308             " rowspan="3">
1309              android.<wbr/>color<wbr/>Correction.<wbr/>transform
1310            </td>
1311            <td class="entry_type">
1312                <span class="entry_type_name">rational</span>
1313                <span class="entry_type_container">x</span>
1314
1315                <span class="entry_type_array">
1316                  3 x 3
1317                </span>
1318              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1319
1320
1321              <span class="entry_type_hwlevel">[full] </span>
1322
1323
1324                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1325
1326
1327            </td> <!-- entry_type -->
1328
1329            <td class="entry_description">
1330              <p>A color transform matrix to use to transform
1331from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1332            </td>
1333
1334            <td class="entry_units">
1335              Unitless scale factors
1336            </td>
1337
1338            <td class="entry_range">
1339            </td>
1340
1341            <td class="entry_tags">
1342            </td>
1343
1344          </tr>
1345          <tr class="entries_header">
1346            <th class="th_details" colspan="5">Details</th>
1347          </tr>
1348          <tr class="entry_cont">
1349            <td class="entry_details" colspan="5">
1350              <p>This matrix is either set by the camera device when the request
1351<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1352directly by the application in the request when the
1353<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1354<p>In the latter case,<wbr/> the camera device may round the matrix to account
1355for precision issues; the final rounded matrix should be reported back
1356in this matrix result metadata.<wbr/> The transform should keep the magnitude
1357of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1358values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1359<p>The valid range of each matrix element varies on different devices,<wbr/> but
1360values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1361            </td>
1362          </tr>
1363
1364
1365          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1366           <!-- end of entry -->
1367        
1368                
1369          <tr class="entry" id="controls_android.colorCorrection.gains">
1370            <td class="entry_name
1371             " rowspan="5">
1372              android.<wbr/>color<wbr/>Correction.<wbr/>gains
1373            </td>
1374            <td class="entry_type">
1375                <span class="entry_type_name">float</span>
1376                <span class="entry_type_container">x</span>
1377
1378                <span class="entry_type_array">
1379                  4
1380                </span>
1381              <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1382
1383
1384              <span class="entry_type_hwlevel">[full] </span>
1385
1386
1387                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1388
1389
1390            </td> <!-- entry_type -->
1391
1392            <td class="entry_description">
1393              <p>Gains applying to Bayer raw color channels for
1394white-balance.<wbr/></p>
1395            </td>
1396
1397            <td class="entry_units">
1398              Unitless gain factors
1399            </td>
1400
1401            <td class="entry_range">
1402            </td>
1403
1404            <td class="entry_tags">
1405            </td>
1406
1407          </tr>
1408          <tr class="entries_header">
1409            <th class="th_details" colspan="5">Details</th>
1410          </tr>
1411          <tr class="entry_cont">
1412            <td class="entry_details" colspan="5">
1413              <p>These per-channel gains are either set by the camera device
1414when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1415TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1416request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1417TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1418<p>The gains in the result metadata are the gains actually
1419applied by the camera device to the current frame.<wbr/></p>
1420<p>The valid range of gains varies on different devices,<wbr/> but gains
1421between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1422device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1423this can create color artifacts.<wbr/></p>
1424            </td>
1425          </tr>
1426
1427          <tr class="entries_header">
1428            <th class="th_details" colspan="5">HAL Implementation Details</th>
1429          </tr>
1430          <tr class="entry_cont">
1431            <td class="entry_details" colspan="5">
1432              <p>The 4-channel white-balance gains are defined in
1433the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1434for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1435is the gain for green pixels on the odd rows.<wbr/></p>
1436<p>If a HAL does not support a separate gain for even/<wbr/>odd green
1437channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1438<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1439            </td>
1440          </tr>
1441
1442          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1443           <!-- end of entry -->
1444        
1445                
1446          <tr class="entry" id="controls_android.colorCorrection.aberrationMode">
1447            <td class="entry_name
1448             " rowspan="3">
1449              android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1450            </td>
1451            <td class="entry_type">
1452                <span class="entry_type_name entry_type_name_enum">byte</span>
1453
1454              <span class="entry_type_visibility"> [public]</span>
1455
1456
1457              <span class="entry_type_hwlevel">[legacy] </span>
1458
1459
1460
1461                <ul class="entry_type_enum">
1462                  <li>
1463                    <span class="entry_type_enum_name">OFF</span>
1464                    <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1465                  </li>
1466                  <li>
1467                    <span class="entry_type_enum_name">FAST</span>
1468                    <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1469relative to sensor raw output.<wbr/></p></span>
1470                  </li>
1471                  <li>
1472                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1473                    <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1474reduced (relative to sensor raw output rate)</p></span>
1475                  </li>
1476                </ul>
1477
1478            </td> <!-- entry_type -->
1479
1480            <td class="entry_description">
1481              <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1482            </td>
1483
1484            <td class="entry_units">
1485            </td>
1486
1487            <td class="entry_range">
1488              <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1489            </td>
1490
1491            <td class="entry_tags">
1492            </td>
1493
1494          </tr>
1495          <tr class="entries_header">
1496            <th class="th_details" colspan="5">Details</th>
1497          </tr>
1498          <tr class="entry_cont">
1499            <td class="entry_details" colspan="5">
1500              <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1501can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1502the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1503minimize the chromatic artifacts that may occur along the object boundaries in an
1504image.<wbr/></p>
1505<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1506correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1507use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1508capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1509applying aberration correction.<wbr/></p>
1510<p>LEGACY devices will always be in FAST mode.<wbr/></p>
1511            </td>
1512          </tr>
1513
1514
1515          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1516           <!-- end of entry -->
1517        
1518        
1519
1520      <!-- end of kind -->
1521      </tbody>
1522      <tr><td colspan="6" class="kind">dynamic</td></tr>
1523
1524      <thead class="entries_header">
1525        <tr>
1526          <th class="th_name">Property Name</th>
1527          <th class="th_type">Type</th>
1528          <th class="th_description">Description</th>
1529          <th class="th_units">Units</th>
1530          <th class="th_range">Range</th>
1531          <th class="th_tags">Tags</th>
1532        </tr>
1533      </thead>
1534
1535      <tbody>
1536
1537        
1538
1539        
1540
1541        
1542
1543        
1544
1545                
1546          <tr class="entry" id="dynamic_android.colorCorrection.mode">
1547            <td class="entry_name
1548             " rowspan="5">
1549              android.<wbr/>color<wbr/>Correction.<wbr/>mode
1550            </td>
1551            <td class="entry_type">
1552                <span class="entry_type_name entry_type_name_enum">byte</span>
1553
1554              <span class="entry_type_visibility"> [public]</span>
1555
1556
1557              <span class="entry_type_hwlevel">[full] </span>
1558
1559
1560
1561                <ul class="entry_type_enum">
1562                  <li>
1563                    <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1564                    <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1565and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1566<p>All advanced white balance adjustments (not specified
1567by our white balance pipeline) must be disabled.<wbr/></p>
1568<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
1569TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1570this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1571                  </li>
1572                  <li>
1573                    <span class="entry_type_enum_name">FAST</span>
1574                    <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1575capture rate relative to sensor raw output.<wbr/></p>
1576<p>Advanced white balance adjustments above and beyond
1577the specified white balance pipeline may be applied.<wbr/></p>
1578<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
1579the camera device uses the last frame's AWB values
1580(or defaults if AWB has never been run).<wbr/></p></span>
1581                  </li>
1582                  <li>
1583                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1584                    <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1585quality but the capture rate might be reduced (relative to sensor
1586raw output rate)</p>
1587<p>Advanced white balance adjustments above and beyond
1588the specified white balance pipeline may be applied.<wbr/></p>
1589<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
1590the camera device uses the last frame's AWB values
1591(or defaults if AWB has never been run).<wbr/></p></span>
1592                  </li>
1593                </ul>
1594
1595            </td> <!-- entry_type -->
1596
1597            <td class="entry_description">
1598              <p>The mode control selects how the image data is converted from the
1599sensor's native color into linear sRGB color.<wbr/></p>
1600            </td>
1601
1602            <td class="entry_units">
1603            </td>
1604
1605            <td class="entry_range">
1606            </td>
1607
1608            <td class="entry_tags">
1609            </td>
1610
1611          </tr>
1612          <tr class="entries_header">
1613            <th class="th_details" colspan="5">Details</th>
1614          </tr>
1615          <tr class="entry_cont">
1616            <td class="entry_details" colspan="5">
1617              <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
1618control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1619application controls how the color mapping is performed.<wbr/></p>
1620<p>We define the expected processing pipeline below.<wbr/> For consistency
1621across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1622<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1623do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1624<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1625camera device (in the results) and be roughly correct.<wbr/></p>
1626<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1627FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1628as what was produced by the camera device in the earlier frame.<wbr/></p>
1629<p>The expected processing pipeline is as follows:</p>
1630<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1631<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1632gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1633matrix (applied after demosaic).<wbr/></p>
1634<p>The 4-channel white-balance gains are defined as:</p>
1635<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1636</code></pre>
1637<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1638output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1639These may be identical for a given camera device implementation; if
1640the camera device does not support a separate gain for even/<wbr/>odd green
1641channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1642<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1643<p>The matrices for color transforms are defined as a 9-entry vector:</p>
1644<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 ]
1645</code></pre>
1646<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1647to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1648<p>with colors as follows:</p>
1649<pre><code>r' = I0r + I1g + I2b
1650g' = I3r + I4g + I5b
1651b' = I6r + I7g + I8b
1652</code></pre>
1653<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1654values are clipped to fit within the range.<wbr/></p>
1655            </td>
1656          </tr>
1657
1658          <tr class="entries_header">
1659            <th class="th_details" colspan="5">HAL Implementation Details</th>
1660          </tr>
1661          <tr class="entry_cont">
1662            <td class="entry_details" colspan="5">
1663              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1664on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1665That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1666capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1667            </td>
1668          </tr>
1669
1670          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1671           <!-- end of entry -->
1672        
1673                
1674          <tr class="entry" id="dynamic_android.colorCorrection.transform">
1675            <td class="entry_name
1676             " rowspan="3">
1677              android.<wbr/>color<wbr/>Correction.<wbr/>transform
1678            </td>
1679            <td class="entry_type">
1680                <span class="entry_type_name">rational</span>
1681                <span class="entry_type_container">x</span>
1682
1683                <span class="entry_type_array">
1684                  3 x 3
1685                </span>
1686              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1687
1688
1689              <span class="entry_type_hwlevel">[full] </span>
1690
1691
1692                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1693
1694
1695            </td> <!-- entry_type -->
1696
1697            <td class="entry_description">
1698              <p>A color transform matrix to use to transform
1699from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1700            </td>
1701
1702            <td class="entry_units">
1703              Unitless scale factors
1704            </td>
1705
1706            <td class="entry_range">
1707            </td>
1708
1709            <td class="entry_tags">
1710            </td>
1711
1712          </tr>
1713          <tr class="entries_header">
1714            <th class="th_details" colspan="5">Details</th>
1715          </tr>
1716          <tr class="entry_cont">
1717            <td class="entry_details" colspan="5">
1718              <p>This matrix is either set by the camera device when the request
1719<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1720directly by the application in the request when the
1721<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1722<p>In the latter case,<wbr/> the camera device may round the matrix to account
1723for precision issues; the final rounded matrix should be reported back
1724in this matrix result metadata.<wbr/> The transform should keep the magnitude
1725of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1726values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1727<p>The valid range of each matrix element varies on different devices,<wbr/> but
1728values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1729            </td>
1730          </tr>
1731
1732
1733          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1734           <!-- end of entry -->
1735        
1736                
1737          <tr class="entry" id="dynamic_android.colorCorrection.gains">
1738            <td class="entry_name
1739             " rowspan="5">
1740              android.<wbr/>color<wbr/>Correction.<wbr/>gains
1741            </td>
1742            <td class="entry_type">
1743                <span class="entry_type_name">float</span>
1744                <span class="entry_type_container">x</span>
1745
1746                <span class="entry_type_array">
1747                  4
1748                </span>
1749              <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1750
1751
1752              <span class="entry_type_hwlevel">[full] </span>
1753
1754
1755                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1756
1757
1758            </td> <!-- entry_type -->
1759
1760            <td class="entry_description">
1761              <p>Gains applying to Bayer raw color channels for
1762white-balance.<wbr/></p>
1763            </td>
1764
1765            <td class="entry_units">
1766              Unitless gain factors
1767            </td>
1768
1769            <td class="entry_range">
1770            </td>
1771
1772            <td class="entry_tags">
1773            </td>
1774
1775          </tr>
1776          <tr class="entries_header">
1777            <th class="th_details" colspan="5">Details</th>
1778          </tr>
1779          <tr class="entry_cont">
1780            <td class="entry_details" colspan="5">
1781              <p>These per-channel gains are either set by the camera device
1782when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1783TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1784request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1785TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1786<p>The gains in the result metadata are the gains actually
1787applied by the camera device to the current frame.<wbr/></p>
1788<p>The valid range of gains varies on different devices,<wbr/> but gains
1789between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1790device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1791this can create color artifacts.<wbr/></p>
1792            </td>
1793          </tr>
1794
1795          <tr class="entries_header">
1796            <th class="th_details" colspan="5">HAL Implementation Details</th>
1797          </tr>
1798          <tr class="entry_cont">
1799            <td class="entry_details" colspan="5">
1800              <p>The 4-channel white-balance gains are defined in
1801the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1802for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1803is the gain for green pixels on the odd rows.<wbr/></p>
1804<p>If a HAL does not support a separate gain for even/<wbr/>odd green
1805channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1806<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1807            </td>
1808          </tr>
1809
1810          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1811           <!-- end of entry -->
1812        
1813                
1814          <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
1815            <td class="entry_name
1816             " rowspan="3">
1817              android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1818            </td>
1819            <td class="entry_type">
1820                <span class="entry_type_name entry_type_name_enum">byte</span>
1821
1822              <span class="entry_type_visibility"> [public]</span>
1823
1824
1825              <span class="entry_type_hwlevel">[legacy] </span>
1826
1827
1828
1829                <ul class="entry_type_enum">
1830                  <li>
1831                    <span class="entry_type_enum_name">OFF</span>
1832                    <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1833                  </li>
1834                  <li>
1835                    <span class="entry_type_enum_name">FAST</span>
1836                    <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1837relative to sensor raw output.<wbr/></p></span>
1838                  </li>
1839                  <li>
1840                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1841                    <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1842reduced (relative to sensor raw output rate)</p></span>
1843                  </li>
1844                </ul>
1845
1846            </td> <!-- entry_type -->
1847
1848            <td class="entry_description">
1849              <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1850            </td>
1851
1852            <td class="entry_units">
1853            </td>
1854
1855            <td class="entry_range">
1856              <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1857            </td>
1858
1859            <td class="entry_tags">
1860            </td>
1861
1862          </tr>
1863          <tr class="entries_header">
1864            <th class="th_details" colspan="5">Details</th>
1865          </tr>
1866          <tr class="entry_cont">
1867            <td class="entry_details" colspan="5">
1868              <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1869can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1870the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1871minimize the chromatic artifacts that may occur along the object boundaries in an
1872image.<wbr/></p>
1873<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1874correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1875use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1876capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1877applying aberration correction.<wbr/></p>
1878<p>LEGACY devices will always be in FAST mode.<wbr/></p>
1879            </td>
1880          </tr>
1881
1882
1883          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1884           <!-- end of entry -->
1885        
1886        
1887
1888      <!-- end of kind -->
1889      </tbody>
1890      <tr><td colspan="6" class="kind">static</td></tr>
1891
1892      <thead class="entries_header">
1893        <tr>
1894          <th class="th_name">Property Name</th>
1895          <th class="th_type">Type</th>
1896          <th class="th_description">Description</th>
1897          <th class="th_units">Units</th>
1898          <th class="th_range">Range</th>
1899          <th class="th_tags">Tags</th>
1900        </tr>
1901      </thead>
1902
1903      <tbody>
1904
1905        
1906
1907        
1908
1909        
1910
1911        
1912
1913                
1914          <tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
1915            <td class="entry_name
1916             " rowspan="5">
1917              android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes
1918            </td>
1919            <td class="entry_type">
1920                <span class="entry_type_name">byte</span>
1921                <span class="entry_type_container">x</span>
1922
1923                <span class="entry_type_array">
1924                  n
1925                </span>
1926              <span class="entry_type_visibility"> [public as enumList]</span>
1927
1928
1929              <span class="entry_type_hwlevel">[legacy] </span>
1930
1931
1932                <div class="entry_type_notes">list of enums</div>
1933
1934
1935            </td> <!-- entry_type -->
1936
1937            <td class="entry_description">
1938              <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
1939supported by this camera device.<wbr/></p>
1940            </td>
1941
1942            <td class="entry_units">
1943            </td>
1944
1945            <td class="entry_range">
1946              <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
1947            </td>
1948
1949            <td class="entry_tags">
1950              <ul class="entry_tags">
1951                  <li><a href="#tag_V1">V1</a></li>
1952              </ul>
1953            </td>
1954
1955          </tr>
1956          <tr class="entries_header">
1957            <th class="th_details" colspan="5">Details</th>
1958          </tr>
1959          <tr class="entry_cont">
1960            <td class="entry_details" colspan="5">
1961              <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
1962aberration correction modes are available for a device,<wbr/> this list will solely include
1963OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
1964<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
1965OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
1966<p>LEGACY devices will always only support FAST mode.<wbr/></p>
1967            </td>
1968          </tr>
1969
1970          <tr class="entries_header">
1971            <th class="th_details" colspan="5">HAL Implementation Details</th>
1972          </tr>
1973          <tr class="entry_cont">
1974            <td class="entry_details" colspan="5">
1975              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
1976on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1977That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1978capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
1979            </td>
1980          </tr>
1981
1982          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1983           <!-- end of entry -->
1984        
1985        
1986
1987      <!-- end of kind -->
1988      </tbody>
1989
1990  <!-- end of section -->
1991  <tr><td colspan="6" id="section_control" class="section">control</td></tr>
1992
1993
1994      <tr><td colspan="6" class="kind">controls</td></tr>
1995
1996      <thead class="entries_header">
1997        <tr>
1998          <th class="th_name">Property Name</th>
1999          <th class="th_type">Type</th>
2000          <th class="th_description">Description</th>
2001          <th class="th_units">Units</th>
2002          <th class="th_range">Range</th>
2003          <th class="th_tags">Tags</th>
2004        </tr>
2005      </thead>
2006
2007      <tbody>
2008
2009        
2010
2011        
2012
2013        
2014
2015        
2016
2017                
2018          <tr class="entry" id="controls_android.control.aeAntibandingMode">
2019            <td class="entry_name
2020             " rowspan="5">
2021              android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
2022            </td>
2023            <td class="entry_type">
2024                <span class="entry_type_name entry_type_name_enum">byte</span>
2025
2026              <span class="entry_type_visibility"> [public]</span>
2027
2028
2029              <span class="entry_type_hwlevel">[legacy] </span>
2030
2031
2032
2033                <ul class="entry_type_enum">
2034                  <li>
2035                    <span class="entry_type_enum_name">OFF</span>
2036                    <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
2037avoid banding problems.<wbr/></p></span>
2038                  </li>
2039                  <li>
2040                    <span class="entry_type_enum_name">50HZ</span>
2041                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2042avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
2043                  </li>
2044                  <li>
2045                    <span class="entry_type_enum_name">60HZ</span>
2046                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2047avoid banding problems with 60Hz illumination
2048sources.<wbr/></p></span>
2049                  </li>
2050                  <li>
2051                    <span class="entry_type_enum_name">AUTO</span>
2052                    <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
2053antibanding routine to the current illumination
2054condition.<wbr/> This is the default mode if AUTO is
2055available on given camera device.<wbr/></p></span>
2056                  </li>
2057                </ul>
2058
2059            </td> <!-- entry_type -->
2060
2061            <td class="entry_description">
2062              <p>The desired setting for the camera device's auto-exposure
2063algorithm's antibanding compensation.<wbr/></p>
2064            </td>
2065
2066            <td class="entry_units">
2067            </td>
2068
2069            <td class="entry_range">
2070              <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
2071            </td>
2072
2073            <td class="entry_tags">
2074              <ul class="entry_tags">
2075                  <li><a href="#tag_BC">BC</a></li>
2076              </ul>
2077            </td>
2078
2079          </tr>
2080          <tr class="entries_header">
2081            <th class="th_details" colspan="5">Details</th>
2082          </tr>
2083          <tr class="entry_cont">
2084            <td class="entry_details" colspan="5">
2085              <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
2086lights,<wbr/> flicker at the rate of the power supply frequency
2087(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
2088typically not noticeable to a person,<wbr/> it can be visible to
2089a camera device.<wbr/> If a camera sets its exposure time to the
2090wrong value,<wbr/> the flicker may become visible in the
2091viewfinder as flicker or in a final captured image,<wbr/> as a
2092set of variable-brightness bands across the image.<wbr/></p>
2093<p>Therefore,<wbr/> the auto-exposure routines of camera devices
2094include antibanding routines that ensure that the chosen
2095exposure value will not cause such banding.<wbr/> The choice of
2096exposure time depends on the rate of flicker,<wbr/> which the
2097camera device can detect automatically,<wbr/> or the expected
2098rate can be selected by the application using this
2099control.<wbr/></p>
2100<p>A given camera device may not support all of the possible
2101options for the antibanding mode.<wbr/> The
2102<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
2103the available modes for a given camera device.<wbr/></p>
2104<p>AUTO mode is the default if it is available on given
2105camera device.<wbr/> When AUTO mode is not available,<wbr/> the
2106default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
2107and 60HZ will be available.<wbr/></p>
2108<p>If manual exposure control is enabled (by setting
2109<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/>
2110then this setting has no effect,<wbr/> and the application must
2111ensure it selects exposure times that do not cause banding
2112issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
2113the application in this.<wbr/></p>
2114            </td>
2115          </tr>
2116
2117          <tr class="entries_header">
2118            <th class="th_details" colspan="5">HAL Implementation Details</th>
2119          </tr>
2120          <tr class="entry_cont">
2121            <td class="entry_details" colspan="5">
2122              <p>For all capture request templates,<wbr/> this field must be set
2123to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
2124the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
212560HZ must be available.<wbr/></p>
2126<p>If manual exposure control is enabled (by setting
2127<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/>
2128then the exposure values provided by the application must not be
2129adjusted for antibanding.<wbr/></p>
2130            </td>
2131          </tr>
2132
2133          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2134           <!-- end of entry -->
2135        
2136                
2137          <tr class="entry" id="controls_android.control.aeExposureCompensation">
2138            <td class="entry_name
2139             " rowspan="3">
2140              android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
2141            </td>
2142            <td class="entry_type">
2143                <span class="entry_type_name">int32</span>
2144
2145              <span class="entry_type_visibility"> [public]</span>
2146
2147
2148              <span class="entry_type_hwlevel">[legacy] </span>
2149
2150
2151
2152
2153            </td> <!-- entry_type -->
2154
2155            <td class="entry_description">
2156              <p>Adjustment to auto-exposure (AE) target image
2157brightness.<wbr/></p>
2158            </td>
2159
2160            <td class="entry_units">
2161              Compensation steps
2162            </td>
2163
2164            <td class="entry_range">
2165              <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
2166            </td>
2167
2168            <td class="entry_tags">
2169              <ul class="entry_tags">
2170                  <li><a href="#tag_BC">BC</a></li>
2171              </ul>
2172            </td>
2173
2174          </tr>
2175          <tr class="entries_header">
2176            <th class="th_details" colspan="5">Details</th>
2177          </tr>
2178          <tr class="entry_cont">
2179            <td class="entry_details" colspan="5">
2180              <p>The adjustment is measured as a count of steps,<wbr/> with the
2181step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
2182allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
2183<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
2184will mean an exposure compensation of +2 EV; -3 will mean an
2185exposure compensation of -1 EV.<wbr/> One EV represents a doubling
2186of image brightness.<wbr/> Note that this control will only be
2187effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
2188will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
2189<p>In the event of exposure compensation value being changed,<wbr/> camera device
2190may take several frames to reach the newly requested exposure target.<wbr/>
2191During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
2192state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
2193change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
2194FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
2195            </td>
2196          </tr>
2197
2198
2199          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2200           <!-- end of entry -->
2201        
2202                
2203          <tr class="entry" id="controls_android.control.aeLock">
2204            <td class="entry_name
2205             " rowspan="3">
2206              android.<wbr/>control.<wbr/>ae<wbr/>Lock
2207            </td>
2208            <td class="entry_type">
2209                <span class="entry_type_name entry_type_name_enum">byte</span>
2210
2211              <span class="entry_type_visibility"> [public as boolean]</span>
2212
2213
2214              <span class="entry_type_hwlevel">[legacy] </span>
2215
2216
2217
2218                <ul class="entry_type_enum">
2219                  <li>
2220                    <span class="entry_type_enum_name">OFF</span>
2221                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
2222is free to update its parameters.<wbr/></p></span>
2223                  </li>
2224                  <li>
2225                    <span class="entry_type_enum_name">ON</span>
2226                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
2227must not update the exposure and sensitivity parameters
2228while the lock is active.<wbr/></p>
2229<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
2230will still take effect while auto-exposure is locked.<wbr/></p>
2231<p>Some rare LEGACY devices may not support
2232this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
2233                  </li>
2234                </ul>
2235
2236            </td> <!-- entry_type -->
2237
2238            <td class="entry_description">
2239              <p>Whether auto-exposure (AE) is currently locked to its latest
2240calculated values.<wbr/></p>
2241            </td>
2242
2243            <td class="entry_units">
2244            </td>
2245
2246            <td class="entry_range">
2247            </td>
2248
2249            <td class="entry_tags">
2250              <ul class="entry_tags">
2251                  <li><a href="#tag_BC">BC</a></li>
2252              </ul>
2253            </td>
2254
2255          </tr>
2256          <tr class="entries_header">
2257            <th class="th_details" colspan="5">Details</th>
2258          </tr>
2259          <tr class="entry_cont">
2260            <td class="entry_details" colspan="5">
2261              <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
2262and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
2263<p>Note that even when AE is locked,<wbr/> the flash may be fired if
2264the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
2265ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
2266<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
2267is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
2268<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
2269when AE is already locked,<wbr/> the camera device will not change the exposure time
2270(<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>)
2271parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
2272is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
2273<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/>
2274Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
2275<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
2276the AE if AE is locked by the camera device internally during precapture metering
2277sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
2278ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
2279will never succeed in a sequence of preview requests where AE lock is always set
2280to <code>false</code>.<wbr/></p>
2281<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
2282get locked do not necessarily correspond to the settings that were present in the
2283latest capture result received from the camera device,<wbr/> since additional captures
2284and AE updates may have occurred even before the result was sent out.<wbr/> If an
2285application is switching between automatic and manual control and wishes to eliminate
2286any flicker during the switch,<wbr/> the following procedure is recommended:</p>
2287<ol>
2288<li>Starting in auto-AE mode:</li>
2289<li>Lock AE</li>
2290<li>Wait for the first result to be output that has the AE locked</li>
2291<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
2292<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
2293</ol>
2294<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>
2295            </td>
2296          </tr>
2297
2298
2299          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2300           <!-- end of entry -->
2301        
2302                
2303          <tr class="entry" id="controls_android.control.aeMode">
2304            <td class="entry_name
2305             " rowspan="3">
2306              android.<wbr/>control.<wbr/>ae<wbr/>Mode
2307            </td>
2308            <td class="entry_type">
2309                <span class="entry_type_name entry_type_name_enum">byte</span>
2310
2311              <span class="entry_type_visibility"> [public]</span>
2312
2313
2314              <span class="entry_type_hwlevel">[legacy] </span>
2315
2316
2317
2318                <ul class="entry_type_enum">
2319                  <li>
2320                    <span class="entry_type_enum_name">OFF</span>
2321                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
2322<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2323<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
2324<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
2325device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
2326a flash unit for this camera device.<wbr/></p>
2327<p>Note that auto-white balance (AWB) and auto-focus (AF)
2328behavior is device dependent when AE is in OFF mode.<wbr/>
2329To have consistent behavior across different devices,<wbr/>
2330it is recommended to either set AWB and AF to OFF mode
2331or lock AWB and AF before setting AE to OFF.<wbr/>
2332See <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/>
2333<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>
2334for more details.<wbr/></p>
2335<p>LEGACY devices do not support the OFF mode and will
2336override attempts to use this value to ON.<wbr/></p></span>
2337                  </li>
2338                  <li>
2339                    <span class="entry_type_enum_name">ON</span>
2340                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
2341with no flash control.<wbr/></p>
2342<p>The application's values for
2343<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2344<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2345<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
2346application has control over the various
2347android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
2348                  </li>
2349                  <li>
2350                    <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
2351                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2352the camera's flash unit,<wbr/> firing it in low-light
2353conditions.<wbr/></p>
2354<p>The flash may be fired during a precapture sequence
2355(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2356may be fired for captures for which the
2357<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2358STILL_<wbr/>CAPTURE</p></span>
2359                  </li>
2360                  <li>
2361                    <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
2362                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2363the camera's flash unit,<wbr/> always firing it for still
2364captures.<wbr/></p>
2365<p>The flash may be fired during a precapture sequence
2366(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2367will always be fired for captures for which the
2368<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2369STILL_<wbr/>CAPTURE</p></span>
2370                  </li>
2371                  <li>
2372                    <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
2373                    <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
2374reduction.<wbr/></p>
2375<p>If deemed necessary by the camera device,<wbr/> a red eye
2376reduction flash will fire during the precapture
2377sequence.<wbr/></p></span>
2378                  </li>
2379                </ul>
2380
2381            </td> <!-- entry_type -->
2382
2383            <td class="entry_description">
2384              <p>The desired mode for the camera device's
2385auto-exposure routine.<wbr/></p>
2386            </td>
2387
2388            <td class="entry_units">
2389            </td>
2390
2391            <td class="entry_range">
2392              <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
2393            </td>
2394
2395            <td class="entry_tags">
2396              <ul class="entry_tags">
2397                  <li><a href="#tag_BC">BC</a></li>
2398              </ul>
2399            </td>
2400
2401          </tr>
2402          <tr class="entries_header">
2403            <th class="th_details" colspan="5">Details</th>
2404          </tr>
2405          <tr class="entry_cont">
2406            <td class="entry_details" colspan="5">
2407              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
2408AUTO.<wbr/></p>
2409<p>When set to any of the ON modes,<wbr/> the camera device's
2410auto-exposure routine is enabled,<wbr/> overriding the
2411application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
2412and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2413<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2414<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
2415is selected,<wbr/> the camera device's flash unit controls are
2416also overridden.<wbr/></p>
2417<p>The FLASH modes are only available if the camera device
2418has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
2419<p>If flash TORCH mode is desired,<wbr/> this field must be set to
2420ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
2421<p>When set to any of the ON modes,<wbr/> the values chosen by the
2422camera device auto-exposure routine for the overridden
2423fields for a given capture will be available in its
2424CaptureResult.<wbr/></p>
2425            </td>
2426          </tr>
2427
2428
2429          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2430           <!-- end of entry -->
2431        
2432                
2433          <tr class="entry" id="controls_android.control.aeRegions">
2434            <td class="entry_name
2435             " rowspan="5">
2436              android.<wbr/>control.<wbr/>ae<wbr/>Regions
2437            </td>
2438            <td class="entry_type">
2439                <span class="entry_type_name">int32</span>
2440                <span class="entry_type_container">x</span>
2441
2442                <span class="entry_type_array">
2443                  5 x area_count
2444                </span>
2445              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2446
2447
2448
2449
2450
2451
2452            </td> <!-- entry_type -->
2453
2454            <td class="entry_description">
2455              <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
2456            </td>
2457
2458            <td class="entry_units">
2459              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2460            </td>
2461
2462            <td class="entry_range">
2463              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2464<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2465            </td>
2466
2467            <td class="entry_tags">
2468              <ul class="entry_tags">
2469                  <li><a href="#tag_BC">BC</a></li>
2470              </ul>
2471            </td>
2472
2473          </tr>
2474          <tr class="entries_header">
2475            <th class="th_details" colspan="5">Details</th>
2476          </tr>
2477          <tr class="entry_cont">
2478            <td class="entry_details" colspan="5">
2479              <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
2480Otherwise will always be present.<wbr/></p>
2481<p>The maximum number of regions supported by the device is determined by the value
2482of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
2483<p>The coordinate system is based on the active pixel array,<wbr/>
2484with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2485(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2486<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2487bottom-right pixel in the active pixel array.<wbr/></p>
2488<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2489for every pixel in the area.<wbr/> This means that a large metering area
2490with the same weight as a smaller area will have more effect in
2491the metering result.<wbr/> Metering areas can partially overlap and the
2492camera device will add the weights in the overlap region.<wbr/></p>
2493<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
2494region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
2495weight is ignored.<wbr/></p>
2496<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2497camera device.<wbr/></p>
2498<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
2499capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2500region and output only the intersection rectangle as the metering region in the result
2501metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
2502not reported in the result metadata.<wbr/></p>
2503            </td>
2504          </tr>
2505
2506          <tr class="entries_header">
2507            <th class="th_details" colspan="5">HAL Implementation Details</th>
2508          </tr>
2509          <tr class="entry_cont">
2510            <td class="entry_details" colspan="5">
2511              <p>The HAL level representation of MeteringRectangle[] is a
2512int[5 * area_<wbr/>count].<wbr/>
2513Every five elements represent a metering region of
2514(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2515The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2516exclusive on xmax and ymax.<wbr/></p>
2517            </td>
2518          </tr>
2519
2520          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2521           <!-- end of entry -->
2522        
2523                
2524          <tr class="entry" id="controls_android.control.aeTargetFpsRange">
2525            <td class="entry_name
2526             " rowspan="3">
2527              android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
2528            </td>
2529            <td class="entry_type">
2530                <span class="entry_type_name">int32</span>
2531                <span class="entry_type_container">x</span>
2532
2533                <span class="entry_type_array">
2534                  2
2535                </span>
2536              <span class="entry_type_visibility"> [public as rangeInt]</span>
2537
2538
2539              <span class="entry_type_hwlevel">[legacy] </span>
2540
2541
2542
2543
2544            </td> <!-- entry_type -->
2545
2546            <td class="entry_description">
2547              <p>Range over which the auto-exposure routine can
2548adjust the capture frame rate to maintain good
2549exposure.<wbr/></p>
2550            </td>
2551
2552            <td class="entry_units">
2553              Frames per second (FPS)
2554            </td>
2555
2556            <td class="entry_range">
2557              <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>
2558            </td>
2559
2560            <td class="entry_tags">
2561              <ul class="entry_tags">
2562                  <li><a href="#tag_BC">BC</a></li>
2563              </ul>
2564            </td>
2565
2566          </tr>
2567          <tr class="entries_header">
2568            <th class="th_details" colspan="5">Details</th>
2569          </tr>
2570          <tr class="entry_cont">
2571            <td class="entry_details" colspan="5">
2572              <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
2573manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
2574<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
2575            </td>
2576          </tr>
2577
2578
2579          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2580           <!-- end of entry -->
2581        
2582                
2583          <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
2584            <td class="entry_name
2585             " rowspan="5">
2586              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
2587            </td>
2588            <td class="entry_type">
2589                <span class="entry_type_name entry_type_name_enum">byte</span>
2590
2591              <span class="entry_type_visibility"> [public]</span>
2592
2593
2594              <span class="entry_type_hwlevel">[limited] </span>
2595
2596
2597
2598                <ul class="entry_type_enum">
2599                  <li>
2600                    <span class="entry_type_enum_name">IDLE</span>
2601                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2602                  </li>
2603                  <li>
2604                    <span class="entry_type_enum_name">START</span>
2605                    <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
2606by the camera device.<wbr/></p>
2607<p>The exact effect of the precapture trigger depends on
2608the current AE mode and state.<wbr/></p></span>
2609                  </li>
2610                  <li>
2611                    <span class="entry_type_enum_name">CANCEL</span>
2612                    <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
2613precapture metering sequence,<wbr/> the auto-exposure routine will return to its
2614initial state.<wbr/></p></span>
2615                  </li>
2616                </ul>
2617
2618            </td> <!-- entry_type -->
2619
2620            <td class="entry_description">
2621              <p>Whether the camera device will trigger a precapture
2622metering sequence when it processes this request.<wbr/></p>
2623            </td>
2624
2625            <td class="entry_units">
2626            </td>
2627
2628            <td class="entry_range">
2629            </td>
2630
2631            <td class="entry_tags">
2632              <ul class="entry_tags">
2633                  <li><a href="#tag_BC">BC</a></li>
2634              </ul>
2635            </td>
2636
2637          </tr>
2638          <tr class="entries_header">
2639            <th class="th_details" colspan="5">Details</th>
2640          </tr>
2641          <tr class="entry_cont">
2642            <td class="entry_details" colspan="5">
2643              <p>This entry is normally set to IDLE,<wbr/> or is not
2644included at all in the request settings.<wbr/> When included and
2645set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
2646precapture metering sequence.<wbr/></p>
2647<p>When set to CANCEL,<wbr/> the camera device will cancel any active
2648precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
2649If a precapture metering sequence is already completed,<wbr/> and the camera
2650device has implicitly locked the AE for subsequent still capture,<wbr/> the
2651CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
2652<p>The precapture sequence should be triggered before starting a
2653high-quality still capture for final metering decisions to
2654be made,<wbr/> and for firing pre-capture flash pulses to estimate
2655scene brightness and required final capture flash power,<wbr/> when
2656the flash is enabled.<wbr/></p>
2657<p>Normally,<wbr/> this entry should be set to START for only a
2658single request,<wbr/> and the application should wait until the
2659sequence completes before starting a new one.<wbr/></p>
2660<p>When a precapture metering sequence is finished,<wbr/> the camera device
2661may lock the auto-exposure routine internally to be able to accurately expose the
2662subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
2663For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
2664submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
2665submit 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
2666with <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
2667still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
2668API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
2669internally locked AE if the application doesn't submit a still capture request after
2670the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
2671be used in devices that have earlier API levels.<wbr/></p>
2672<p>The exact effect of auto-exposure (AE) precapture trigger
2673depends on the current AE mode and state; see
2674<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
2675details.<wbr/></p>
2676<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
2677capturing a high-resolution JPEG image will automatically trigger a
2678precapture sequence before the high-resolution capture,<wbr/> including
2679potentially firing a pre-capture flash.<wbr/></p>
2680<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
2681simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
2682the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
2683focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
2684trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
2685changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
2686example.<wbr/></p>
2687<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
2688the camera device will complete them in the optimal order for that device.<wbr/></p>
2689            </td>
2690          </tr>
2691
2692          <tr class="entries_header">
2693            <th class="th_details" colspan="5">HAL Implementation Details</th>
2694          </tr>
2695          <tr class="entry_cont">
2696            <td class="entry_details" colspan="5">
2697              <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
2698(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
2699treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
2700AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
2701to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
2702            </td>
2703          </tr>
2704
2705          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2706           <!-- end of entry -->
2707        
2708                
2709          <tr class="entry" id="controls_android.control.afMode">
2710            <td class="entry_name
2711             " rowspan="5">
2712              android.<wbr/>control.<wbr/>af<wbr/>Mode
2713            </td>
2714            <td class="entry_type">
2715                <span class="entry_type_name entry_type_name_enum">byte</span>
2716
2717              <span class="entry_type_visibility"> [public]</span>
2718
2719
2720              <span class="entry_type_hwlevel">[legacy] </span>
2721
2722
2723
2724                <ul class="entry_type_enum">
2725                  <li>
2726                    <span class="entry_type_enum_name">OFF</span>
2727                    <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
2728<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
2729application.<wbr/></p></span>
2730                  </li>
2731                  <li>
2732                    <span class="entry_type_enum_name">AUTO</span>
2733                    <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
2734<p>In this mode,<wbr/> the lens does not move unless
2735the autofocus trigger action is called.<wbr/> When that trigger
2736is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2737the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
2738<p>Always supported if lens is not fixed focus.<wbr/></p>
2739<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
2740is fixed-focus.<wbr/></p>
2741<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
2742and sets the AF state to INACTIVE.<wbr/></p></span>
2743                  </li>
2744                  <li>
2745                    <span class="entry_type_enum_name">MACRO</span>
2746                    <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
2747<p>In this mode,<wbr/> the lens does not move unless the
2748autofocus trigger action is called.<wbr/> When that trigger is
2749activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2750the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
2751mode is optimized for focusing on objects very close to
2752the camera.<wbr/></p>
2753<p>When that trigger is activated,<wbr/> AF will transition to
2754ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
2755NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
2756position to default,<wbr/> and sets the AF state to
2757INACTIVE.<wbr/></p></span>
2758                  </li>
2759                  <li>
2760                    <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
2761                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2762position continually to attempt to provide a
2763constantly-in-focus image stream.<wbr/></p>
2764<p>The focusing behavior should be suitable for good quality
2765video recording; typically this means slower focus
2766movement and no overshoots.<wbr/> When the AF trigger is not
2767involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
2768and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
2769states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
2770the algorithm should immediately transition into
2771AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2772lens position until a cancel AF trigger is received.<wbr/></p>
2773<p>Once cancel is received,<wbr/> the algorithm should transition
2774back to INACTIVE and resume passive scan.<wbr/> Note that this
2775behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
2776ongoing PASSIVE_<wbr/>SCAN must immediately be
2777canceled.<wbr/></p></span>
2778                  </li>
2779                  <li>
2780                    <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
2781                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2782position continually to attempt to provide a
2783constantly-in-focus image stream.<wbr/></p>
2784<p>The focusing behavior should be suitable for still image
2785capture; typically this means focusing as fast as
2786possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
2787algorithm should start in INACTIVE state,<wbr/> and then
2788transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
2789appropriate as it attempts to maintain focus.<wbr/> When the AF
2790trigger is activated,<wbr/> the algorithm should finish its
2791PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
2792AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2793lens position until a cancel AF trigger is received.<wbr/></p>
2794<p>When the AF cancel trigger is activated,<wbr/> the algorithm
2795should transition back to INACTIVE and then act as if it
2796has just been started.<wbr/></p></span>
2797                  </li>
2798                  <li>
2799                    <span class="entry_type_enum_name">EDOF</span>
2800                    <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
2801<p>The camera device will produce images with an extended
2802depth of field automatically; no special focusing
2803operations need to be done before taking a picture.<wbr/></p>
2804<p>AF triggers are ignored,<wbr/> and the AF state will always be
2805INACTIVE.<wbr/></p></span>
2806                  </li>
2807                </ul>
2808
2809            </td> <!-- entry_type -->
2810
2811            <td class="entry_description">
2812              <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
2813mode it is set to.<wbr/></p>
2814            </td>
2815
2816            <td class="entry_units">
2817            </td>
2818
2819            <td class="entry_range">
2820              <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
2821            </td>
2822
2823            <td class="entry_tags">
2824              <ul class="entry_tags">
2825                  <li><a href="#tag_BC">BC</a></li>
2826              </ul>
2827            </td>
2828
2829          </tr>
2830          <tr class="entries_header">
2831            <th class="th_details" colspan="5">Details</th>
2832          </tr>
2833          <tr class="entry_cont">
2834            <td class="entry_details" colspan="5">
2835              <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
2836(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
2837when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
2838dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
2839setting <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>
2840<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
2841the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
2842in result metadata.<wbr/></p>
2843            </td>
2844          </tr>
2845
2846          <tr class="entries_header">
2847            <th class="th_details" colspan="5">HAL Implementation Details</th>
2848          </tr>
2849          <tr class="entry_cont">
2850            <td class="entry_details" colspan="5">
2851              <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
2852request (<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
2853up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
2854<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
2855locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
2856after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
2857the same focal plane remains in focus.<wbr/></p>
2858<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
2859scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
2860(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
2861same lock behavior as above.<wbr/></p>
2862<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
2863focus 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/>
2864However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
2865manual control.<wbr/></p>
2866<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
2867camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
2868remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
2869by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
2870that will arise on camera modules with open-loop VCMs.<wbr/></p>
2871            </td>
2872          </tr>
2873
2874          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2875           <!-- end of entry -->
2876        
2877                
2878          <tr class="entry" id="controls_android.control.afRegions">
2879            <td class="entry_name
2880             " rowspan="5">
2881              android.<wbr/>control.<wbr/>af<wbr/>Regions
2882            </td>
2883            <td class="entry_type">
2884                <span class="entry_type_name">int32</span>
2885                <span class="entry_type_container">x</span>
2886
2887                <span class="entry_type_array">
2888                  5 x area_count
2889                </span>
2890              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2891
2892
2893
2894
2895
2896
2897            </td> <!-- entry_type -->
2898
2899            <td class="entry_description">
2900              <p>List of metering areas to use for auto-focus.<wbr/></p>
2901            </td>
2902
2903            <td class="entry_units">
2904              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2905            </td>
2906
2907            <td class="entry_range">
2908              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2909<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2910            </td>
2911
2912            <td class="entry_tags">
2913              <ul class="entry_tags">
2914                  <li><a href="#tag_BC">BC</a></li>
2915              </ul>
2916            </td>
2917
2918          </tr>
2919          <tr class="entries_header">
2920            <th class="th_details" colspan="5">Details</th>
2921          </tr>
2922          <tr class="entry_cont">
2923            <td class="entry_details" colspan="5">
2924              <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
2925Otherwise will always be present.<wbr/></p>
2926<p>The maximum number of focus areas supported by the device is determined by the value
2927of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
2928<p>The coordinate system is based on the active pixel array,<wbr/>
2929with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2930(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2931<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2932bottom-right pixel in the active pixel array.<wbr/></p>
2933<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2934for every pixel in the area.<wbr/> This means that a large metering area
2935with the same weight as a smaller area will have more effect in
2936the metering result.<wbr/> Metering areas can partially overlap and the
2937camera device will add the weights in the overlap region.<wbr/></p>
2938<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
2939is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
2940ignored.<wbr/></p>
2941<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2942camera device.<wbr/></p>
2943<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
2944capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2945region and output only the intersection rectangle as the metering region in the result
2946metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
2947not reported in the result metadata.<wbr/></p>
2948            </td>
2949          </tr>
2950
2951          <tr class="entries_header">
2952            <th class="th_details" colspan="5">HAL Implementation Details</th>
2953          </tr>
2954          <tr class="entry_cont">
2955            <td class="entry_details" colspan="5">
2956              <p>The HAL level representation of MeteringRectangle[] is a
2957int[5 * area_<wbr/>count].<wbr/>
2958Every five elements represent a metering region of
2959(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2960The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2961exclusive on xmax and ymax.<wbr/></p>
2962            </td>
2963          </tr>
2964
2965          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2966           <!-- end of entry -->
2967        
2968                
2969          <tr class="entry" id="controls_android.control.afTrigger">
2970            <td class="entry_name
2971             " rowspan="5">
2972              android.<wbr/>control.<wbr/>af<wbr/>Trigger
2973            </td>
2974            <td class="entry_type">
2975                <span class="entry_type_name entry_type_name_enum">byte</span>
2976
2977              <span class="entry_type_visibility"> [public]</span>
2978
2979
2980              <span class="entry_type_hwlevel">[legacy] </span>
2981
2982
2983
2984                <ul class="entry_type_enum">
2985                  <li>
2986                    <span class="entry_type_enum_name">IDLE</span>
2987                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2988                  </li>
2989                  <li>
2990                    <span class="entry_type_enum_name">START</span>
2991                    <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
2992                  </li>
2993                  <li>
2994                    <span class="entry_type_enum_name">CANCEL</span>
2995                    <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
2996state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
2997                  </li>
2998                </ul>
2999
3000            </td> <!-- entry_type -->
3001
3002            <td class="entry_description">
3003              <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
3004            </td>
3005
3006            <td class="entry_units">
3007            </td>
3008
3009            <td class="entry_range">
3010            </td>
3011
3012            <td class="entry_tags">
3013              <ul class="entry_tags">
3014                  <li><a href="#tag_BC">BC</a></li>
3015              </ul>
3016            </td>
3017
3018          </tr>
3019          <tr class="entries_header">
3020            <th class="th_details" colspan="5">Details</th>
3021          </tr>
3022          <tr class="entry_cont">
3023            <td class="entry_details" colspan="5">
3024              <p>This entry is normally set to IDLE,<wbr/> or is not
3025included at all in the request settings.<wbr/></p>
3026<p>When included and set to START,<wbr/> the camera device will trigger the
3027autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
3028<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
3029and return to its initial AF state.<wbr/></p>
3030<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
3031single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
3032START for multiple captures in a row means restarting the AF operation over
3033and over again.<wbr/></p>
3034<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>
3035<p>Using the autofocus trigger and the precapture trigger <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>
3036simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
3037the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
3038focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
3039trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
3040changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
3041            </td>
3042          </tr>
3043
3044          <tr class="entries_header">
3045            <th class="th_details" colspan="5">HAL Implementation Details</th>
3046          </tr>
3047          <tr class="entry_cont">
3048            <td class="entry_details" colspan="5">
3049              <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
3050(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
3051treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
3052AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
3053to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
3054            </td>
3055          </tr>
3056
3057          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3058           <!-- end of entry -->
3059        
3060                
3061          <tr class="entry" id="controls_android.control.awbLock">
3062            <td class="entry_name
3063             " rowspan="3">
3064              android.<wbr/>control.<wbr/>awb<wbr/>Lock
3065            </td>
3066            <td class="entry_type">
3067                <span class="entry_type_name entry_type_name_enum">byte</span>
3068
3069              <span class="entry_type_visibility"> [public as boolean]</span>
3070
3071
3072              <span class="entry_type_hwlevel">[legacy] </span>
3073
3074
3075
3076                <ul class="entry_type_enum">
3077                  <li>
3078                    <span class="entry_type_enum_name">OFF</span>
3079                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
3080algorithm is free to update its parameters if in AUTO
3081mode.<wbr/></p></span>
3082                  </li>
3083                  <li>
3084                    <span class="entry_type_enum_name">ON</span>
3085                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
3086algorithm will not update its parameters while the lock
3087is active.<wbr/></p></span>
3088                  </li>
3089                </ul>
3090
3091            </td> <!-- entry_type -->
3092
3093            <td class="entry_description">
3094              <p>Whether auto-white balance (AWB) is currently locked to its
3095latest calculated values.<wbr/></p>
3096            </td>
3097
3098            <td class="entry_units">
3099            </td>
3100
3101            <td class="entry_range">
3102            </td>
3103
3104            <td class="entry_tags">
3105              <ul class="entry_tags">
3106                  <li><a href="#tag_BC">BC</a></li>
3107              </ul>
3108            </td>
3109
3110          </tr>
3111          <tr class="entries_header">
3112            <th class="th_details" colspan="5">Details</th>
3113          </tr>
3114          <tr class="entry_cont">
3115            <td class="entry_details" colspan="5">
3116              <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
3117and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
3118<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
3119get locked do not necessarily correspond to the settings that were present in the
3120latest capture result received from the camera device,<wbr/> since additional captures
3121and AWB updates may have occurred even before the result was sent out.<wbr/> If an
3122application is switching between automatic and manual control and wishes to eliminate
3123any flicker during the switch,<wbr/> the following procedure is recommended:</p>
3124<ol>
3125<li>Starting in auto-AWB mode:</li>
3126<li>Lock AWB</li>
3127<li>Wait for the first result to be output that has the AWB locked</li>
3128<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
3129<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
3130</ol>
3131<p>Note that AWB lock is only meaningful when
3132<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
3133AWB is already fixed to a specific setting.<wbr/></p>
3134<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
3135            </td>
3136          </tr>
3137
3138
3139          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3140           <!-- end of entry -->
3141        
3142                
3143          <tr class="entry" id="controls_android.control.awbMode">
3144            <td class="entry_name
3145             " rowspan="3">
3146              android.<wbr/>control.<wbr/>awb<wbr/>Mode
3147            </td>
3148            <td class="entry_type">
3149                <span class="entry_type_name entry_type_name_enum">byte</span>
3150
3151              <span class="entry_type_visibility"> [public]</span>
3152
3153
3154              <span class="entry_type_hwlevel">[legacy] </span>
3155
3156
3157
3158                <ul class="entry_type_enum">
3159                  <li>
3160                    <span class="entry_type_enum_name">OFF</span>
3161                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
3162<p>The application-selected color transform matrix
3163(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
3164(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
3165device for manual white balance control.<wbr/></p></span>
3166                  </li>
3167                  <li>
3168                    <span class="entry_type_enum_name">AUTO</span>
3169                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
3170<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3171and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3172For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3173values used by the camera device for the transform and gains
3174will be available in the capture result for this request.<wbr/></p></span>
3175                  </li>
3176                  <li>
3177                    <span class="entry_type_enum_name">INCANDESCENT</span>
3178                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3179the camera device uses incandescent light as the assumed scene
3180illumination for white balance.<wbr/></p>
3181<p>While the exact white balance transforms are up to the
3182camera device,<wbr/> they will approximately match the CIE
3183standard illuminant A.<wbr/></p>
3184<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3185and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3186For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3187values used by the camera device for the transform and gains
3188will be available in the capture result for this request.<wbr/></p></span>
3189                  </li>
3190                  <li>
3191                    <span class="entry_type_enum_name">FLUORESCENT</span>
3192                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3193the camera device uses fluorescent light as the assumed scene
3194illumination for white balance.<wbr/></p>
3195<p>While the exact white balance transforms are up to the
3196camera device,<wbr/> they will approximately match the CIE
3197standard illuminant F2.<wbr/></p>
3198<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3199and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3200For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3201values used by the camera device for the transform and gains
3202will be available in the capture result for this request.<wbr/></p></span>
3203                  </li>
3204                  <li>
3205                    <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
3206                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3207the camera device uses warm fluorescent light as the assumed scene
3208illumination for white balance.<wbr/></p>
3209<p>While the exact white balance transforms are up to the
3210camera device,<wbr/> they will approximately match the CIE
3211standard illuminant F4.<wbr/></p>
3212<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3213and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3214For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3215values used by the camera device for the transform and gains
3216will be available in the capture result for this request.<wbr/></p></span>
3217                  </li>
3218                  <li>
3219                    <span class="entry_type_enum_name">DAYLIGHT</span>
3220                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3221the camera device uses daylight light as the assumed scene
3222illumination for white balance.<wbr/></p>
3223<p>While the exact white balance transforms are up to the
3224camera device,<wbr/> they will approximately match the CIE
3225standard illuminant D65.<wbr/></p>
3226<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3227and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3228For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3229values used by the camera device for the transform and gains
3230will be available in the capture result for this request.<wbr/></p></span>
3231                  </li>
3232                  <li>
3233                    <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
3234                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3235the camera device uses cloudy daylight light as the assumed scene
3236illumination for white balance.<wbr/></p>
3237<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3238and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3239For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3240values used by the camera device for the transform and gains
3241will be available in the capture result for this request.<wbr/></p></span>
3242                  </li>
3243                  <li>
3244                    <span class="entry_type_enum_name">TWILIGHT</span>
3245                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3246the camera device uses twilight light as the assumed scene
3247illumination for white balance.<wbr/></p>
3248<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3249and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3250For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3251values used by the camera device for the transform and gains
3252will be available in the capture result for this request.<wbr/></p></span>
3253                  </li>
3254                  <li>
3255                    <span class="entry_type_enum_name">SHADE</span>
3256                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3257the camera device uses shade light as the assumed scene
3258illumination for white balance.<wbr/></p>
3259<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3260and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3261For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3262values used by the camera device for the transform and gains
3263will be available in the capture result for this request.<wbr/></p></span>
3264                  </li>
3265                </ul>
3266
3267            </td> <!-- entry_type -->
3268
3269            <td class="entry_description">
3270              <p>Whether auto-white balance (AWB) is currently setting the color
3271transform fields,<wbr/> and what its illumination target
3272is.<wbr/></p>
3273            </td>
3274
3275            <td class="entry_units">
3276            </td>
3277
3278            <td class="entry_range">
3279              <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
3280            </td>
3281
3282            <td class="entry_tags">
3283              <ul class="entry_tags">
3284                  <li><a href="#tag_BC">BC</a></li>
3285              </ul>
3286            </td>
3287
3288          </tr>
3289          <tr class="entries_header">
3290            <th class="th_details" colspan="5">Details</th>
3291          </tr>
3292          <tr class="entry_cont">
3293            <td class="entry_details" colspan="5">
3294              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
3295<p>When set to the ON mode,<wbr/> the camera device's auto-white balance
3296routine is enabled,<wbr/> overriding the application's selected
3297<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
3298<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>
3299is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
3300also 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
3301setting AE mode to OFF.<wbr/></p>
3302<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
3303routine is disabled.<wbr/> The application manually controls the white
3304balance 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>
3305and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
3306<p>When set to any other modes,<wbr/> the camera device's auto-white
3307balance routine is disabled.<wbr/> The camera device uses each
3308particular illumination target for white balance
3309adjustment.<wbr/> The application's values for
3310<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
3311<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3312<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
3313            </td>
3314          </tr>
3315
3316
3317          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3318           <!-- end of entry -->
3319        
3320                
3321          <tr class="entry" id="controls_android.control.awbRegions">
3322            <td class="entry_name
3323             " rowspan="5">
3324              android.<wbr/>control.<wbr/>awb<wbr/>Regions
3325            </td>
3326            <td class="entry_type">
3327                <span class="entry_type_name">int32</span>
3328                <span class="entry_type_container">x</span>
3329
3330                <span class="entry_type_array">
3331                  5 x area_count
3332                </span>
3333              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3334
3335
3336
3337
3338
3339
3340            </td> <!-- entry_type -->
3341
3342            <td class="entry_description">
3343              <p>List of metering areas to use for auto-white-balance illuminant
3344estimation.<wbr/></p>
3345            </td>
3346
3347            <td class="entry_units">
3348              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3349            </td>
3350
3351            <td class="entry_range">
3352              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3353<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3354            </td>
3355
3356            <td class="entry_tags">
3357              <ul class="entry_tags">
3358                  <li><a href="#tag_BC">BC</a></li>
3359              </ul>
3360            </td>
3361
3362          </tr>
3363          <tr class="entries_header">
3364            <th class="th_details" colspan="5">Details</th>
3365          </tr>
3366          <tr class="entry_cont">
3367            <td class="entry_details" colspan="5">
3368              <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
3369Otherwise will always be present.<wbr/></p>
3370<p>The maximum number of regions supported by the device is determined by the value
3371of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
3372<p>The coordinate system is based on the active pixel array,<wbr/>
3373with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3374(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3375<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3376bottom-right pixel in the active pixel array.<wbr/></p>
3377<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
3378for every pixel in the area.<wbr/> This means that a large metering area
3379with the same weight as a smaller area will have more effect in
3380the metering result.<wbr/> Metering areas can partially overlap and the
3381camera device will add the weights in the overlap region.<wbr/></p>
3382<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
3383only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
33840 weight is ignored.<wbr/></p>
3385<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3386camera device.<wbr/></p>
3387<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
3388capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3389region and output only the intersection rectangle as the metering region in the result
3390metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
3391not reported in the result metadata.<wbr/></p>
3392            </td>
3393          </tr>
3394
3395          <tr class="entries_header">
3396            <th class="th_details" colspan="5">HAL Implementation Details</th>
3397          </tr>
3398          <tr class="entry_cont">
3399            <td class="entry_details" colspan="5">
3400              <p>The HAL level representation of MeteringRectangle[] is a
3401int[5 * area_<wbr/>count].<wbr/>
3402Every five elements represent a metering region of
3403(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3404The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3405exclusive on xmax and ymax.<wbr/></p>
3406            </td>
3407          </tr>
3408
3409          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3410           <!-- end of entry -->
3411        
3412                
3413          <tr class="entry" id="controls_android.control.captureIntent">
3414            <td class="entry_name
3415             " rowspan="3">
3416              android.<wbr/>control.<wbr/>capture<wbr/>Intent
3417            </td>
3418            <td class="entry_type">
3419                <span class="entry_type_name entry_type_name_enum">byte</span>
3420
3421              <span class="entry_type_visibility"> [public]</span>
3422
3423
3424              <span class="entry_type_hwlevel">[legacy] </span>
3425
3426
3427
3428                <ul class="entry_type_enum">
3429                  <li>
3430                    <span class="entry_type_enum_name">CUSTOM</span>
3431                    <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
3432categories.<wbr/> The camera device will default to preview-like
3433behavior.<wbr/></p></span>
3434                  </li>
3435                  <li>
3436                    <span class="entry_type_enum_name">PREVIEW</span>
3437                    <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
3438<p>The precapture trigger may be used to start off a metering
3439w/<wbr/>flash sequence.<wbr/></p></span>
3440                  </li>
3441                  <li>
3442                    <span class="entry_type_enum_name">STILL_CAPTURE</span>
3443                    <span class="entry_type_enum_notes"><p>This request is for a still capture-type
3444use case.<wbr/></p>
3445<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
3446                  </li>
3447                  <li>
3448                    <span class="entry_type_enum_name">VIDEO_RECORD</span>
3449                    <span class="entry_type_enum_notes"><p>This request is for a video recording
3450use case.<wbr/></p></span>
3451                  </li>
3452                  <li>
3453                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
3454                    <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
3455image while recording video) use case.<wbr/></p>
3456<p>The camera device should take the highest-quality image
3457possible (given the other settings) without disrupting the
3458frame rate of video recording.<wbr/>  </p></span>
3459                  </li>
3460                  <li>
3461                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
3462                    <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
3463application will stream full-resolution images and
3464reprocess one or several later for a final
3465capture.<wbr/></p></span>
3466                  </li>
3467                  <li>
3468                    <span class="entry_type_enum_name">MANUAL</span>
3469                    <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
3470the applications want to directly control the capture parameters.<wbr/></p>
3471<p>For example,<wbr/> the application may wish to manually control
3472<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>
3473                  </li>
3474                </ul>
3475
3476            </td> <!-- entry_type -->
3477
3478            <td class="entry_description">
3479              <p>Information to the camera device 3A (auto-exposure,<wbr/>
3480auto-focus,<wbr/> auto-white balance) routines about the purpose
3481of this capture,<wbr/> to help the camera device to decide optimal 3A
3482strategy.<wbr/></p>
3483            </td>
3484
3485            <td class="entry_units">
3486            </td>
3487
3488            <td class="entry_range">
3489            </td>
3490
3491            <td class="entry_tags">
3492              <ul class="entry_tags">
3493                  <li><a href="#tag_BC">BC</a></li>
3494              </ul>
3495            </td>
3496
3497          </tr>
3498          <tr class="entries_header">
3499            <th class="th_details" colspan="5">Details</th>
3500          </tr>
3501          <tr class="entry_cont">
3502            <td class="entry_details" colspan="5">
3503              <p>This control (except for MANUAL) is only effective if
3504<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
3505<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
3506contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
3507<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
3508always supported.<wbr/></p>
3509            </td>
3510          </tr>
3511
3512
3513          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3514           <!-- end of entry -->
3515        
3516                
3517          <tr class="entry" id="controls_android.control.effectMode">
3518            <td class="entry_name
3519             " rowspan="3">
3520              android.<wbr/>control.<wbr/>effect<wbr/>Mode
3521            </td>
3522            <td class="entry_type">
3523                <span class="entry_type_name entry_type_name_enum">byte</span>
3524
3525              <span class="entry_type_visibility"> [public]</span>
3526
3527
3528              <span class="entry_type_hwlevel">[legacy] </span>
3529
3530
3531
3532                <ul class="entry_type_enum">
3533                  <li>
3534                    <span class="entry_type_enum_name">OFF</span>
3535                    <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
3536                  </li>
3537                  <li>
3538                    <span class="entry_type_enum_name">MONO</span>
3539                    <span class="entry_type_enum_optional">[optional]</span>
3540                    <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
3541a single color.<wbr/></p>
3542<p>This will typically be grayscale.<wbr/></p></span>
3543                  </li>
3544                  <li>
3545                    <span class="entry_type_enum_name">NEGATIVE</span>
3546                    <span class="entry_type_enum_optional">[optional]</span>
3547                    <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
3548are inverted.<wbr/></p></span>
3549                  </li>
3550                  <li>
3551                    <span class="entry_type_enum_name">SOLARIZE</span>
3552                    <span class="entry_type_enum_optional">[optional]</span>
3553                    <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
3554image is wholly or partially reversed in
3555tone.<wbr/></p></span>
3556                  </li>
3557                  <li>
3558                    <span class="entry_type_enum_name">SEPIA</span>
3559                    <span class="entry_type_enum_optional">[optional]</span>
3560                    <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
3561gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
3562                  </li>
3563                  <li>
3564                    <span class="entry_type_enum_name">POSTERIZE</span>
3565                    <span class="entry_type_enum_optional">[optional]</span>
3566                    <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
3567discrete regions of tone rather than a continuous
3568gradient of tones.<wbr/></p></span>
3569                  </li>
3570                  <li>
3571                    <span class="entry_type_enum_name">WHITEBOARD</span>
3572                    <span class="entry_type_enum_optional">[optional]</span>
3573                    <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
3574as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
3575                  </li>
3576                  <li>
3577                    <span class="entry_type_enum_name">BLACKBOARD</span>
3578                    <span class="entry_type_enum_optional">[optional]</span>
3579                    <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
3580as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
3581                  </li>
3582                  <li>
3583                    <span class="entry_type_enum_name">AQUA</span>
3584                    <span class="entry_type_enum_optional">[optional]</span>
3585                    <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
3586                  </li>
3587                </ul>
3588
3589            </td> <!-- entry_type -->
3590
3591            <td class="entry_description">
3592              <p>A special color effect to apply.<wbr/></p>
3593            </td>
3594
3595            <td class="entry_units">
3596            </td>
3597
3598            <td class="entry_range">
3599              <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
3600            </td>
3601
3602            <td class="entry_tags">
3603              <ul class="entry_tags">
3604                  <li><a href="#tag_BC">BC</a></li>
3605              </ul>
3606            </td>
3607
3608          </tr>
3609          <tr class="entries_header">
3610            <th class="th_details" colspan="5">Details</th>
3611          </tr>
3612          <tr class="entry_cont">
3613            <td class="entry_details" colspan="5">
3614              <p>When this mode is set,<wbr/> a color effect will be applied
3615to images produced by the camera device.<wbr/> The interpretation
3616and implementation of these color effects is left to the
3617implementor of the camera device,<wbr/> and should not be
3618depended on to be consistent (or present) across all
3619devices.<wbr/></p>
3620            </td>
3621          </tr>
3622
3623
3624          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3625           <!-- end of entry -->
3626        
3627                
3628          <tr class="entry" id="controls_android.control.mode">
3629            <td class="entry_name
3630             " rowspan="3">
3631              android.<wbr/>control.<wbr/>mode
3632            </td>
3633            <td class="entry_type">
3634                <span class="entry_type_name entry_type_name_enum">byte</span>
3635
3636              <span class="entry_type_visibility"> [public]</span>
3637
3638
3639              <span class="entry_type_hwlevel">[legacy] </span>
3640
3641
3642
3643                <ul class="entry_type_enum">
3644                  <li>
3645                    <span class="entry_type_enum_name">OFF</span>
3646                    <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
3647<p>All control by the device's metering and focusing (3A)
3648routines is disabled,<wbr/> and no other settings in
3649android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
3650<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
3651device to select post-processing values for processing
3652blocks that do not allow for manual control,<wbr/> or are not
3653exposed by the camera API.<wbr/></p>
3654<p>However,<wbr/> the camera device's 3A routines may continue to
3655collect statistics and update their internal state so that
3656when control is switched to AUTO mode,<wbr/> good control values
3657can be immediately applied.<wbr/></p></span>
3658                  </li>
3659                  <li>
3660                    <span class="entry_type_enum_name">AUTO</span>
3661                    <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
3662<p>Manual control of capture parameters is disabled.<wbr/> All
3663controls in android.<wbr/>control.<wbr/>* besides sceneMode take
3664effect.<wbr/></p></span>
3665                  </li>
3666                  <li>
3667                    <span class="entry_type_enum_name">USE_SCENE_MODE</span>
3668                    <span class="entry_type_enum_optional">[optional]</span>
3669                    <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
3670<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
3671control.<wbr/>afMode controls; the camera device will ignore
3672those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
3673FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
3674This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
3675<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
3676contain some modes other than DISABLED).<wbr/></p></span>
3677                  </li>
3678                  <li>
3679                    <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
3680                    <span class="entry_type_enum_optional">[optional]</span>
3681                    <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
3682used by camera device background auto-exposure,<wbr/> auto-white balance and
3683auto-focus algorithms (3A) to update their statistics.<wbr/></p>
3684<p>Specifically,<wbr/> the 3A routines are locked to the last
3685values set from a request with AUTO,<wbr/> OFF,<wbr/> or
3686USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
3687collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
3688discarded by the camera device.<wbr/></p></span>
3689                  </li>
3690                </ul>
3691
3692            </td> <!-- entry_type -->
3693
3694            <td class="entry_description">
3695              <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
3696routines.<wbr/></p>
3697            </td>
3698
3699            <td class="entry_units">
3700            </td>
3701
3702            <td class="entry_range">
3703              <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
3704            </td>
3705
3706            <td class="entry_tags">
3707              <ul class="entry_tags">
3708                  <li><a href="#tag_BC">BC</a></li>
3709              </ul>
3710            </td>
3711
3712          </tr>
3713          <tr class="entries_header">
3714            <th class="th_details" colspan="5">Details</th>
3715          </tr>
3716          <tr class="entry_cont">
3717            <td class="entry_details" colspan="5">
3718              <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
3719by the camera device is disabled.<wbr/> The application must set the fields for
3720capture parameters itself.<wbr/></p>
3721<p>When set to AUTO,<wbr/> the individual algorithm controls in
3722android.<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>
3723<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
3724android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
3725one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
3726as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
3727<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
3728<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
3729is that this frame will not be used by camera device background 3A statistics
3730update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
3731where the application doesn't want a 3A manual control capture to affect
3732the subsequent auto 3A capture results.<wbr/></p>
3733            </td>
3734          </tr>
3735
3736
3737          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3738           <!-- end of entry -->
3739        
3740                
3741          <tr class="entry" id="controls_android.control.sceneMode">
3742            <td class="entry_name
3743             " rowspan="5">
3744              android.<wbr/>control.<wbr/>scene<wbr/>Mode
3745            </td>
3746            <td class="entry_type">
3747                <span class="entry_type_name entry_type_name_enum">byte</span>
3748
3749              <span class="entry_type_visibility"> [public]</span>
3750
3751
3752              <span class="entry_type_hwlevel">[legacy] </span>
3753
3754
3755
3756                <ul class="entry_type_enum">
3757                  <li>
3758                    <span class="entry_type_enum_name">DISABLED</span>
3759                    <span class="entry_type_enum_value">0</span>
3760                    <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
3761                  </li>
3762                  <li>
3763                    <span class="entry_type_enum_name">FACE_PRIORITY</span>
3764                    <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
3765detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
3766auto-exposure routines.<wbr/></p>
3767<p>If face detection statistics are disabled
3768(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/>
3769this should still operate correctly (but will not return
3770face detection statistics to the framework).<wbr/></p>
3771<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3772<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>
3773remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
3774                  </li>
3775                  <li>
3776                    <span class="entry_type_enum_name">ACTION</span>
3777                    <span class="entry_type_enum_optional">[optional]</span>
3778                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
3779<p>Similar to SPORTS.<wbr/></p></span>
3780                  </li>
3781                  <li>
3782                    <span class="entry_type_enum_name">PORTRAIT</span>
3783                    <span class="entry_type_enum_optional">[optional]</span>
3784                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
3785                  </li>
3786                  <li>
3787                    <span class="entry_type_enum_name">LANDSCAPE</span>
3788                    <span class="entry_type_enum_optional">[optional]</span>
3789                    <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
3790                  </li>
3791                  <li>
3792                    <span class="entry_type_enum_name">NIGHT</span>
3793                    <span class="entry_type_enum_optional">[optional]</span>
3794                    <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
3795                  </li>
3796                  <li>
3797                    <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
3798                    <span class="entry_type_enum_optional">[optional]</span>
3799                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
3800settings.<wbr/></p></span>
3801                  </li>
3802                  <li>
3803                    <span class="entry_type_enum_name">THEATRE</span>
3804                    <span class="entry_type_enum_optional">[optional]</span>
3805                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
3806remain off.<wbr/></p></span>
3807                  </li>
3808                  <li>
3809                    <span class="entry_type_enum_name">BEACH</span>
3810                    <span class="entry_type_enum_optional">[optional]</span>
3811                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
3812                  </li>
3813                  <li>
3814                    <span class="entry_type_enum_name">SNOW</span>
3815                    <span class="entry_type_enum_optional">[optional]</span>
3816                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
3817                  </li>
3818                  <li>
3819                    <span class="entry_type_enum_name">SUNSET</span>
3820                    <span class="entry_type_enum_optional">[optional]</span>
3821                    <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
3822                  </li>
3823                  <li>
3824                    <span class="entry_type_enum_name">STEADYPHOTO</span>
3825                    <span class="entry_type_enum_optional">[optional]</span>
3826                    <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
3827device motion (for example: due to hand shake).<wbr/></p></span>
3828                  </li>
3829                  <li>
3830                    <span class="entry_type_enum_name">FIREWORKS</span>
3831                    <span class="entry_type_enum_optional">[optional]</span>
3832                    <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
3833                  </li>
3834                  <li>
3835                    <span class="entry_type_enum_name">SPORTS</span>
3836                    <span class="entry_type_enum_optional">[optional]</span>
3837                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
3838<p>Similar to ACTION.<wbr/></p></span>
3839                  </li>
3840                  <li>
3841                    <span class="entry_type_enum_name">PARTY</span>
3842                    <span class="entry_type_enum_optional">[optional]</span>
3843                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
3844people.<wbr/></p></span>
3845                  </li>
3846                  <li>
3847                    <span class="entry_type_enum_name">CANDLELIGHT</span>
3848                    <span class="entry_type_enum_optional">[optional]</span>
3849                    <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
3850is a flame.<wbr/></p></span>
3851                  </li>
3852                  <li>
3853                    <span class="entry_type_enum_name">BARCODE</span>
3854                    <span class="entry_type_enum_optional">[optional]</span>
3855                    <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
3856for use by camera applications that wish to read the
3857barcode value.<wbr/></p></span>
3858                  </li>
3859                  <li>
3860                    <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
3861                    <span class="entry_type_enum_deprecated">[deprecated]</span>
3862                    <span class="entry_type_enum_optional">[optional]</span>
3863                    <span class="entry_type_enum_notes"><p>This is deprecated,<wbr/> please use <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
3864and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
3865for high speed video recording.<wbr/></p>
3866<p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
3867<p>The supported high speed video sizes and fps ranges are specified in
3868<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
3869output frame rates,<wbr/> the application is only allowed to select video size
3870and fps range combinations listed in this static metadata.<wbr/> The fps range
3871can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
3872<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
3873ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
3874controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
3875and post-processing parameters is possible.<wbr/> All other controls operate the
3876same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
3877android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
3878<ul>
3879<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
3880<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
3881<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
3882<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
3883<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
3884<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
3885<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
3886<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
3887<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
3888<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
3889</ul>
3890<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
3891<ul>
3892<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>
3893<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
3894<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
3895<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
3896</ul>
3897<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
3898be lower than what camera can output,<wbr/> depending on the destination Surfaces for
3899the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
3900the application need check if the video encoder is capable of supporting the
3901high frame rate for a given video size,<wbr/> or it will end up with lower recording
3902frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
3903rate will be bounded by the screen refresh rate.<wbr/></p>
3904<p>The camera device will only support up to 2 output high speed streams
3905(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
3906in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
3907<ul>
3908<li>The application created no more than maxNumHighSpeedStreams processed non-stalling
3909format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
3910min(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>
3911<li>The stream sizes are selected from the sizes reported by
3912<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
3913<li>No processed non-stalling or raw streams are configured.<wbr/></li>
3914</ul>
3915<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
3916<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/>
3917the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
3918and the returned capture result metadata will give the fps range choosen
3919by the camera device.<wbr/></p>
3920<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
3921reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
3922the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
3923                  </li>
3924                  <li>
3925                    <span class="entry_type_enum_name">HDR</span>
3926                    <span class="entry_type_enum_optional">[optional]</span>
3927                    <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
3928<p>In this scene mode,<wbr/> the camera device captures images
3929that keep a larger range of scene illumination levels
3930visible in the final image.<wbr/> For example,<wbr/> when taking a
3931picture of a object in front of a bright window,<wbr/> both
3932the object and the scene through the window may be
3933visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
3934one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
3935HDR mode generally takes much longer to capture a single
3936image,<wbr/> has no user control,<wbr/> and may have other artifacts
3937depending on the HDR method used.<wbr/></p>
3938<p>Therefore,<wbr/> HDR captures operate at a much slower rate
3939than regular captures.<wbr/></p>
3940<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
3941is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
3942STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
3943using a high dynamic range capture technique.<wbr/>  On LEGACY
3944devices,<wbr/> captures that target a JPEG-format output will
3945be captured with HDR,<wbr/> and the capture intent is not
3946relevant.<wbr/></p>
3947<p>The HDR capture may involve the device capturing a burst
3948of images internally and combining them into one,<wbr/> or it
3949may involve the device using specialized high dynamic
3950range capture hardware.<wbr/> In all cases,<wbr/> a single image is
3951produced in response to a capture request submitted
3952while in HDR mode.<wbr/></p>
3953<p>Since substantial post-processing is generally needed to
3954produce an HDR image,<wbr/> only YUV and JPEG outputs are
3955supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only
3956JPEG outputs are supported for LEGACY HDR
3957captures.<wbr/> Using a RAW output for HDR capture is not
3958supported.<wbr/></p></span>
3959                  </li>
3960                  <li>
3961                    <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span>
3962                    <span class="entry_type_enum_optional">[optional]</span>
3963                    <span class="entry_type_enum_hidden">[hidden]</span>
3964                    <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
3965device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
3966under low light conditions.<wbr/></p>
3967<p>The camera device may be tuned to expose the images in a reduced
3968sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
3969if the <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> gives range of [100,<wbr/> 1600],<wbr/>
3970the camera device auto-exposure routine tuning process may limit the actual
3971exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
3972exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
3973low light may be under-exposed when the sensor max exposure time (bounded by the
3974<a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of the
3975ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
3976camera device auto-exposure routine to increase the sensitivity up to the max
3977sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
3978dark and the max exposure time is reached.<wbr/> The captured images may be noisier
3979compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
3980recommended that the application only use this scene mode when it is capable of
3981reducing the noise level of the captured images.<wbr/></p>
3982<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3983<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>
3984remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
3985                  </li>
3986                </ul>
3987
3988            </td> <!-- entry_type -->
3989
3990            <td class="entry_description">
3991              <p>Control for which scene mode is currently active.<wbr/></p>
3992            </td>
3993
3994            <td class="entry_units">
3995            </td>
3996
3997            <td class="entry_range">
3998              <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
3999            </td>
4000
4001            <td class="entry_tags">
4002              <ul class="entry_tags">
4003                  <li><a href="#tag_BC">BC</a></li>
4004              </ul>
4005            </td>
4006
4007          </tr>
4008          <tr class="entries_header">
4009            <th class="th_details" colspan="5">Details</th>
4010          </tr>
4011          <tr class="entry_cont">
4012            <td class="entry_details" colspan="5">
4013              <p>Scene modes are custom camera modes optimized for a certain set of conditions and
4014capture settings.<wbr/></p>
4015<p>This is the mode that that is active when
4016<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code>.<wbr/> Aside from FACE_<wbr/>PRIORITY,<wbr/> these modes will
4017disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>
4018while in use.<wbr/></p>
4019<p>The interpretation and implementation of these scene modes is left
4020to the implementor of the camera device.<wbr/> Their behavior will not be
4021consistent across all devices,<wbr/> and any given device may only implement
4022a subset of these modes.<wbr/></p>
4023            </td>
4024          </tr>
4025
4026          <tr class="entries_header">
4027            <th class="th_details" colspan="5">HAL Implementation Details</th>
4028          </tr>
4029          <tr class="entry_cont">
4030            <td class="entry_details" colspan="5">
4031              <p>HAL implementations that include scene modes are expected to provide
4032the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4033<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
4034<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
4035<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/>
4036the HAL must list supported video size and fps range in
4037<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/>
40381280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming
4039mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture
4040requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/>
4041This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
4042<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a> and CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO
4043capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
4044            </td>
4045          </tr>
4046
4047          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4048           <!-- end of entry -->
4049        
4050                
4051          <tr class="entry" id="controls_android.control.videoStabilizationMode">
4052            <td class="entry_name
4053             " rowspan="3">
4054              android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
4055            </td>
4056            <td class="entry_type">
4057                <span class="entry_type_name entry_type_name_enum">byte</span>
4058
4059              <span class="entry_type_visibility"> [public]</span>
4060
4061
4062              <span class="entry_type_hwlevel">[legacy] </span>
4063
4064
4065
4066                <ul class="entry_type_enum">
4067                  <li>
4068                    <span class="entry_type_enum_name">OFF</span>
4069                    <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
4070                  </li>
4071                  <li>
4072                    <span class="entry_type_enum_name">ON</span>
4073                    <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
4074                  </li>
4075                </ul>
4076
4077            </td> <!-- entry_type -->
4078
4079            <td class="entry_description">
4080              <p>Whether video stabilization is
4081active.<wbr/></p>
4082            </td>
4083
4084            <td class="entry_units">
4085            </td>
4086
4087            <td class="entry_range">
4088            </td>
4089
4090            <td class="entry_tags">
4091              <ul class="entry_tags">
4092                  <li><a href="#tag_BC">BC</a></li>
4093              </ul>
4094            </td>
4095
4096          </tr>
4097          <tr class="entries_header">
4098            <th class="th_details" colspan="5">Details</th>
4099          </tr>
4100          <tr class="entry_cont">
4101            <td class="entry_details" colspan="5">
4102              <p>Video stabilization automatically warps images from
4103the camera in order to stabilize motion between consecutive frames.<wbr/></p>
4104<p>If enabled,<wbr/> video stabilization can modify the
4105<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
4106<p>Switching between different video stabilization modes may take several
4107frames to initialize,<wbr/> the camera device will report the current mode
4108in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
4109the video stabilization modes in the first several capture results may
4110still be "OFF",<wbr/> and it will become "ON" when the initialization is
4111done.<wbr/></p>
4112<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
4113stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
4114that an output targeting a MediaRecorder or MediaCodec will be stabilized if
4115the recording resolution is less than or equal to 1920 x 1080 (width less than
4116or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
4117frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
4118<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
4119OFF if the recording output is not stabilized,<wbr/> or if there are no output
4120Surface types that can be stabilized.<wbr/></p>
4121<p>If a camera device supports both this mode and OIS
4122(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
4123produce undesirable interaction,<wbr/> so it is recommended not to enable
4124both at the same time.<wbr/></p>
4125            </td>
4126          </tr>
4127
4128
4129          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4130           <!-- end of entry -->
4131        
4132        
4133
4134      <!-- end of kind -->
4135      </tbody>
4136      <tr><td colspan="6" class="kind">static</td></tr>
4137
4138      <thead class="entries_header">
4139        <tr>
4140          <th class="th_name">Property Name</th>
4141          <th class="th_type">Type</th>
4142          <th class="th_description">Description</th>
4143          <th class="th_units">Units</th>
4144          <th class="th_range">Range</th>
4145          <th class="th_tags">Tags</th>
4146        </tr>
4147      </thead>
4148
4149      <tbody>
4150
4151        
4152
4153        
4154
4155        
4156
4157        
4158
4159                
4160          <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
4161            <td class="entry_name
4162             " rowspan="3">
4163              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
4164            </td>
4165            <td class="entry_type">
4166                <span class="entry_type_name">byte</span>
4167                <span class="entry_type_container">x</span>
4168
4169                <span class="entry_type_array">
4170                  n
4171                </span>
4172              <span class="entry_type_visibility"> [public as enumList]</span>
4173
4174
4175              <span class="entry_type_hwlevel">[legacy] </span>
4176
4177
4178                <div class="entry_type_notes">list of enums</div>
4179
4180
4181            </td> <!-- entry_type -->
4182
4183            <td class="entry_description">
4184              <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
4185supported by this camera device.<wbr/></p>
4186            </td>
4187
4188            <td class="entry_units">
4189            </td>
4190
4191            <td class="entry_range">
4192              <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
4193            </td>
4194
4195            <td class="entry_tags">
4196              <ul class="entry_tags">
4197                  <li><a href="#tag_BC">BC</a></li>
4198              </ul>
4199            </td>
4200
4201          </tr>
4202          <tr class="entries_header">
4203            <th class="th_details" colspan="5">Details</th>
4204          </tr>
4205          <tr class="entry_cont">
4206            <td class="entry_details" colspan="5">
4207              <p>Not all of the auto-exposure anti-banding modes may be
4208supported by a given camera device.<wbr/> This field lists the
4209valid anti-banding modes that the application may request
4210for this camera device with the
4211<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
4212            </td>
4213          </tr>
4214
4215
4216          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4217           <!-- end of entry -->
4218        
4219                
4220          <tr class="entry" id="static_android.control.aeAvailableModes">
4221            <td class="entry_name
4222             " rowspan="3">
4223              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
4224            </td>
4225            <td class="entry_type">
4226                <span class="entry_type_name">byte</span>
4227                <span class="entry_type_container">x</span>
4228
4229                <span class="entry_type_array">
4230                  n
4231                </span>
4232              <span class="entry_type_visibility"> [public as enumList]</span>
4233
4234
4235              <span class="entry_type_hwlevel">[legacy] </span>
4236
4237
4238                <div class="entry_type_notes">list of enums</div>
4239
4240
4241            </td> <!-- entry_type -->
4242
4243            <td class="entry_description">
4244              <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
4245device.<wbr/></p>
4246            </td>
4247
4248            <td class="entry_units">
4249            </td>
4250
4251            <td class="entry_range">
4252              <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
4253            </td>
4254
4255            <td class="entry_tags">
4256              <ul class="entry_tags">
4257                  <li><a href="#tag_BC">BC</a></li>
4258              </ul>
4259            </td>
4260
4261          </tr>
4262          <tr class="entries_header">
4263            <th class="th_details" colspan="5">Details</th>
4264          </tr>
4265          <tr class="entry_cont">
4266            <td class="entry_details" colspan="5">
4267              <p>Not all the auto-exposure modes may be supported by a
4268given camera device,<wbr/> especially if no flash unit is
4269available.<wbr/> This entry lists the valid modes for
4270<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
4271<p>All camera devices support ON,<wbr/> and all camera devices with flash
4272units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
4273<p>FULL mode camera devices always support OFF mode,<wbr/>
4274which enables application control of camera exposure time,<wbr/>
4275sensitivity,<wbr/> and frame duration.<wbr/></p>
4276<p>LEGACY mode camera devices never support OFF mode.<wbr/>
4277LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR
4278capability.<wbr/></p>
4279            </td>
4280          </tr>
4281
4282
4283          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4284           <!-- end of entry -->
4285        
4286                
4287          <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
4288            <td class="entry_name
4289             " rowspan="3">
4290              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
4291            </td>
4292            <td class="entry_type">
4293                <span class="entry_type_name">int32</span>
4294                <span class="entry_type_container">x</span>
4295
4296                <span class="entry_type_array">
4297                  2 x n
4298                </span>
4299              <span class="entry_type_visibility"> [public as rangeInt]</span>
4300
4301
4302              <span class="entry_type_hwlevel">[legacy] </span>
4303
4304
4305                <div class="entry_type_notes">list of pairs of frame rates</div>
4306
4307
4308            </td> <!-- entry_type -->
4309
4310            <td class="entry_description">
4311              <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
4312this camera device.<wbr/></p>
4313            </td>
4314
4315            <td class="entry_units">
4316              Frames per second (FPS)
4317            </td>
4318
4319            <td class="entry_range">
4320            </td>
4321
4322            <td class="entry_tags">
4323              <ul class="entry_tags">
4324                  <li><a href="#tag_BC">BC</a></li>
4325              </ul>
4326            </td>
4327
4328          </tr>
4329          <tr class="entries_header">
4330            <th class="th_details" colspan="5">Details</th>
4331          </tr>
4332          <tr class="entry_cont">
4333            <td class="entry_details" colspan="5">
4334              <p>For devices at the LEGACY level or above:</p>
4335<ul>
4336<li>
4337<p>For constant-framerate recording,<wbr/> for each normal
4338<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a
4339<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4340<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in
4341the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/>
4342<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is
4343supported by the device and has
4344<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will
4345always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p>
4346</li>
4347<li>
4348<p>Also,<wbr/> a camera device must either not support any
4349<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/>
4350or support at least one
4351normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4352<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> &gt;= 24.<wbr/></p>
4353</li>
4354</ul>
4355<p>For devices at the LIMITED level or above:</p>
4356<ul>
4357<li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>)
4358and (<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> &lt;= 15 and <code>max</code> = the maximum output frame rate of the
4359maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li>
4360</ul>
4361            </td>
4362          </tr>
4363
4364
4365          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4366           <!-- end of entry -->
4367        
4368                
4369          <tr class="entry" id="static_android.control.aeCompensationRange">
4370            <td class="entry_name
4371             " rowspan="1">
4372              android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
4373            </td>
4374            <td class="entry_type">
4375                <span class="entry_type_name">int32</span>
4376                <span class="entry_type_container">x</span>
4377
4378                <span class="entry_type_array">
4379                  2
4380                </span>
4381              <span class="entry_type_visibility"> [public as rangeInt]</span>
4382
4383
4384              <span class="entry_type_hwlevel">[legacy] </span>
4385
4386
4387
4388
4389            </td> <!-- entry_type -->
4390
4391            <td class="entry_description">
4392              <p>Maximum and minimum exposure compensation values for
4393<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/>
4394that are supported by this camera device.<wbr/></p>
4395            </td>
4396
4397            <td class="entry_units">
4398            </td>
4399
4400            <td class="entry_range">
4401              <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
4402<p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
4403compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
4404<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>
4405<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>
4406<p>LEGACY devices may support a smaller range than this.<wbr/></p>
4407            </td>
4408
4409            <td class="entry_tags">
4410              <ul class="entry_tags">
4411                  <li><a href="#tag_BC">BC</a></li>
4412              </ul>
4413            </td>
4414
4415          </tr>
4416
4417
4418          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4419           <!-- end of entry -->
4420        
4421                
4422          <tr class="entry" id="static_android.control.aeCompensationStep">
4423            <td class="entry_name
4424             " rowspan="5">
4425              android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
4426            </td>
4427            <td class="entry_type">
4428                <span class="entry_type_name">rational</span>
4429
4430              <span class="entry_type_visibility"> [public]</span>
4431
4432
4433              <span class="entry_type_hwlevel">[legacy] </span>
4434
4435
4436
4437
4438            </td> <!-- entry_type -->
4439
4440            <td class="entry_description">
4441              <p>Smallest step by which the exposure compensation
4442can be changed.<wbr/></p>
4443            </td>
4444
4445            <td class="entry_units">
4446              Exposure Value (EV)
4447            </td>
4448
4449            <td class="entry_range">
4450            </td>
4451
4452            <td class="entry_tags">
4453              <ul class="entry_tags">
4454                  <li><a href="#tag_BC">BC</a></li>
4455              </ul>
4456            </td>
4457
4458          </tr>
4459          <tr class="entries_header">
4460            <th class="th_details" colspan="5">Details</th>
4461          </tr>
4462          <tr class="entry_cont">
4463            <td class="entry_details" colspan="5">
4464              <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
4465a 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
4466that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
4467<p>One unit of EV compensation changes the brightness of the captured image by a factor
4468of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p>
4469            </td>
4470          </tr>
4471
4472          <tr class="entries_header">
4473            <th class="th_details" colspan="5">HAL Implementation Details</th>
4474          </tr>
4475          <tr class="entry_cont">
4476            <td class="entry_details" colspan="5">
4477              <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
4478            </td>
4479          </tr>
4480
4481          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4482           <!-- end of entry -->
4483        
4484                
4485          <tr class="entry" id="static_android.control.afAvailableModes">
4486            <td class="entry_name
4487             " rowspan="3">
4488              android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
4489            </td>
4490            <td class="entry_type">
4491                <span class="entry_type_name">byte</span>
4492                <span class="entry_type_container">x</span>
4493
4494                <span class="entry_type_array">
4495                  n
4496                </span>
4497              <span class="entry_type_visibility"> [public as enumList]</span>
4498
4499
4500              <span class="entry_type_hwlevel">[legacy] </span>
4501
4502
4503                <div class="entry_type_notes">List of enums</div>
4504
4505
4506            </td> <!-- entry_type -->
4507
4508            <td class="entry_description">
4509              <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are
4510supported by this camera device.<wbr/></p>
4511            </td>
4512
4513            <td class="entry_units">
4514            </td>
4515
4516            <td class="entry_range">
4517              <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
4518            </td>
4519
4520            <td class="entry_tags">
4521              <ul class="entry_tags">
4522                  <li><a href="#tag_BC">BC</a></li>
4523              </ul>
4524            </td>
4525
4526          </tr>
4527          <tr class="entries_header">
4528            <th class="th_details" colspan="5">Details</th>
4529          </tr>
4530          <tr class="entry_cont">
4531            <td class="entry_details" colspan="5">
4532              <p>Not all the auto-focus modes may be supported by a
4533given camera device.<wbr/> This entry lists the valid modes for
4534<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
4535<p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all
4536camera devices with adjustable focuser units
4537(<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>
4538<p>LEGACY devices will support OFF mode only if they support
4539focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to
4540<code>0.<wbr/>0f</code>).<wbr/></p>
4541            </td>
4542          </tr>
4543
4544
4545          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4546           <!-- end of entry -->
4547        
4548                
4549          <tr class="entry" id="static_android.control.availableEffects">
4550            <td class="entry_name
4551             " rowspan="3">
4552              android.<wbr/>control.<wbr/>available<wbr/>Effects
4553            </td>
4554            <td class="entry_type">
4555                <span class="entry_type_name">byte</span>
4556                <span class="entry_type_container">x</span>
4557
4558                <span class="entry_type_array">
4559                  n
4560                </span>
4561              <span class="entry_type_visibility"> [public as enumList]</span>
4562
4563
4564              <span class="entry_type_hwlevel">[legacy] </span>
4565
4566
4567                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
4568
4569
4570            </td> <!-- entry_type -->
4571
4572            <td class="entry_description">
4573              <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
4574device.<wbr/></p>
4575            </td>
4576
4577            <td class="entry_units">
4578            </td>
4579
4580            <td class="entry_range">
4581              <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
4582            </td>
4583
4584            <td class="entry_tags">
4585              <ul class="entry_tags">
4586                  <li><a href="#tag_BC">BC</a></li>
4587              </ul>
4588            </td>
4589
4590          </tr>
4591          <tr class="entries_header">
4592            <th class="th_details" colspan="5">Details</th>
4593          </tr>
4594          <tr class="entry_cont">
4595            <td class="entry_details" colspan="5">
4596              <p>This list contains the color effect modes that can be applied to
4597images produced by the camera device.<wbr/>
4598Implementations are not expected to be consistent across all devices.<wbr/>
4599If no color effect modes are available for a device,<wbr/> this will only list
4600OFF.<wbr/></p>
4601<p>A color effect will only be applied if
4602<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/>  OFF is always included in this list.<wbr/></p>
4603<p>This control has no effect on the operation of other control routines such
4604as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p>
4605            </td>
4606          </tr>
4607
4608
4609          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4610           <!-- end of entry -->
4611        
4612                
4613          <tr class="entry" id="static_android.control.availableSceneModes">
4614            <td class="entry_name
4615             " rowspan="3">
4616              android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
4617            </td>
4618            <td class="entry_type">
4619                <span class="entry_type_name">byte</span>
4620                <span class="entry_type_container">x</span>
4621
4622                <span class="entry_type_array">
4623                  n
4624                </span>
4625              <span class="entry_type_visibility"> [public as enumList]</span>
4626
4627
4628              <span class="entry_type_hwlevel">[legacy] </span>
4629
4630
4631                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
4632
4633
4634            </td> <!-- entry_type -->
4635
4636            <td class="entry_description">
4637              <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
4638device.<wbr/></p>
4639            </td>
4640
4641            <td class="entry_units">
4642            </td>
4643
4644            <td class="entry_range">
4645              <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
4646            </td>
4647
4648            <td class="entry_tags">
4649              <ul class="entry_tags">
4650                  <li><a href="#tag_BC">BC</a></li>
4651              </ul>
4652            </td>
4653
4654          </tr>
4655          <tr class="entries_header">
4656            <th class="th_details" colspan="5">Details</th>
4657          </tr>
4658          <tr class="entry_cont">
4659            <td class="entry_details" colspan="5">
4660              <p>This list contains scene modes that can be set for the camera device.<wbr/>
4661Only scene modes that have been fully implemented for the
4662camera device may be included here.<wbr/> Implementations are not expected
4663to be consistent across all devices.<wbr/></p>
4664<p>If no scene modes are supported by the camera device,<wbr/> this
4665will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p>
4666<p>FACE_<wbr/>PRIORITY is always listed if face detection is
4667supported (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;
46680</code>).<wbr/></p>
4669            </td>
4670          </tr>
4671
4672
4673          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4674           <!-- end of entry -->
4675        
4676                
4677          <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
4678            <td class="entry_name
4679             " rowspan="3">
4680              android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
4681            </td>
4682            <td class="entry_type">
4683                <span class="entry_type_name">byte</span>
4684                <span class="entry_type_container">x</span>
4685
4686                <span class="entry_type_array">
4687                  n
4688                </span>
4689              <span class="entry_type_visibility"> [public as enumList]</span>
4690
4691
4692              <span class="entry_type_hwlevel">[legacy] </span>
4693
4694
4695                <div class="entry_type_notes">List of enums.<wbr/></div>
4696
4697
4698            </td> <!-- entry_type -->
4699
4700            <td class="entry_description">
4701              <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>
4702that are supported by this camera device.<wbr/></p>
4703            </td>
4704
4705            <td class="entry_units">
4706            </td>
4707
4708            <td class="entry_range">
4709              <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
4710            </td>
4711
4712            <td class="entry_tags">
4713              <ul class="entry_tags">
4714                  <li><a href="#tag_BC">BC</a></li>
4715              </ul>
4716            </td>
4717
4718          </tr>
4719          <tr class="entries_header">
4720            <th class="th_details" colspan="5">Details</th>
4721          </tr>
4722          <tr class="entry_cont">
4723            <td class="entry_details" colspan="5">
4724              <p>OFF will always be listed.<wbr/></p>
4725            </td>
4726          </tr>
4727
4728
4729          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4730           <!-- end of entry -->
4731        
4732                
4733          <tr class="entry" id="static_android.control.awbAvailableModes">
4734            <td class="entry_name
4735             " rowspan="3">
4736              android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
4737            </td>
4738            <td class="entry_type">
4739                <span class="entry_type_name">byte</span>
4740                <span class="entry_type_container">x</span>
4741
4742                <span class="entry_type_array">
4743                  n
4744                </span>
4745              <span class="entry_type_visibility"> [public as enumList]</span>
4746
4747
4748              <span class="entry_type_hwlevel">[legacy] </span>
4749
4750
4751                <div class="entry_type_notes">List of enums</div>
4752
4753
4754            </td> <!-- entry_type -->
4755
4756            <td class="entry_description">
4757              <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
4758camera device.<wbr/></p>
4759            </td>
4760
4761            <td class="entry_units">
4762            </td>
4763
4764            <td class="entry_range">
4765              <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
4766            </td>
4767
4768            <td class="entry_tags">
4769              <ul class="entry_tags">
4770                  <li><a href="#tag_BC">BC</a></li>
4771              </ul>
4772            </td>
4773
4774          </tr>
4775          <tr class="entries_header">
4776            <th class="th_details" colspan="5">Details</th>
4777          </tr>
4778          <tr class="entry_cont">
4779            <td class="entry_details" colspan="5">
4780              <p>Not all the auto-white-balance modes may be supported by a
4781given camera device.<wbr/> This entry lists the valid modes for
4782<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
4783<p>All camera devices will support ON mode.<wbr/></p>
4784<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF
4785mode,<wbr/> which enables application control of white balance,<wbr/> by using
4786<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
4787mode camera devices.<wbr/></p>
4788            </td>
4789          </tr>
4790
4791
4792          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4793           <!-- end of entry -->
4794        
4795                
4796          <tr class="entry" id="static_android.control.maxRegions">
4797            <td class="entry_name
4798             " rowspan="1">
4799              android.<wbr/>control.<wbr/>max<wbr/>Regions
4800            </td>
4801            <td class="entry_type">
4802                <span class="entry_type_name">int32</span>
4803                <span class="entry_type_container">x</span>
4804
4805                <span class="entry_type_array">
4806                  3
4807                </span>
4808              <span class="entry_type_visibility"> [hidden]</span>
4809
4810
4811              <span class="entry_type_hwlevel">[legacy] </span>
4812
4813
4814
4815
4816            </td> <!-- entry_type -->
4817
4818            <td class="entry_description">
4819              <p>List of the maximum number of regions that can be used for metering in
4820auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
4821this corresponds to the the maximum number of elements in
4822<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/>
4823and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
4824            </td>
4825
4826            <td class="entry_units">
4827            </td>
4828
4829            <td class="entry_range">
4830              <p>Value must be &gt;= 0 for each element.<wbr/> For full-capability devices
4831this value must be &gt;= 1 for AE and AF.<wbr/> The order of the elements is:
4832<code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
4833            </td>
4834
4835            <td class="entry_tags">
4836              <ul class="entry_tags">
4837                  <li><a href="#tag_BC">BC</a></li>
4838              </ul>
4839            </td>
4840
4841          </tr>
4842
4843
4844          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4845           <!-- end of entry -->
4846        
4847                
4848          <tr class="entry" id="static_android.control.maxRegionsAe">
4849            <td class="entry_name
4850             " rowspan="5">
4851              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
4852            </td>
4853            <td class="entry_type">
4854                <span class="entry_type_name">int32</span>
4855
4856              <span class="entry_type_visibility"> [public]</span>
4857
4858              <span class="entry_type_synthetic">[synthetic] </span>
4859
4860              <span class="entry_type_hwlevel">[legacy] </span>
4861
4862
4863
4864
4865            </td> <!-- entry_type -->
4866
4867            <td class="entry_description">
4868              <p>The maximum number of metering regions that can be used by the auto-exposure (AE)
4869routine.<wbr/></p>
4870            </td>
4871
4872            <td class="entry_units">
4873            </td>
4874
4875            <td class="entry_range">
4876              <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
4877value will be &gt;= 1.<wbr/></p>
4878            </td>
4879
4880            <td class="entry_tags">
4881            </td>
4882
4883          </tr>
4884          <tr class="entries_header">
4885            <th class="th_details" colspan="5">Details</th>
4886          </tr>
4887          <tr class="entry_cont">
4888            <td class="entry_details" colspan="5">
4889              <p>This corresponds to the the maximum allowed number of elements in
4890<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
4891            </td>
4892          </tr>
4893
4894          <tr class="entries_header">
4895            <th class="th_details" colspan="5">HAL Implementation Details</th>
4896          </tr>
4897          <tr class="entry_cont">
4898            <td class="entry_details" colspan="5">
4899              <p>This entry is private to the framework.<wbr/> Fill in
4900maxRegions to have this entry be automatically populated.<wbr/></p>
4901            </td>
4902          </tr>
4903
4904          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4905           <!-- end of entry -->
4906        
4907                
4908          <tr class="entry" id="static_android.control.maxRegionsAwb">
4909            <td class="entry_name
4910             " rowspan="5">
4911              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
4912            </td>
4913            <td class="entry_type">
4914                <span class="entry_type_name">int32</span>
4915
4916              <span class="entry_type_visibility"> [public]</span>
4917
4918              <span class="entry_type_synthetic">[synthetic] </span>
4919
4920              <span class="entry_type_hwlevel">[legacy] </span>
4921
4922
4923
4924
4925            </td> <!-- entry_type -->
4926
4927            <td class="entry_description">
4928              <p>The maximum number of metering regions that can be used by the auto-white balance (AWB)
4929routine.<wbr/></p>
4930            </td>
4931
4932            <td class="entry_units">
4933            </td>
4934
4935            <td class="entry_range">
4936              <p>Value will be &gt;= 0.<wbr/></p>
4937            </td>
4938
4939            <td class="entry_tags">
4940            </td>
4941
4942          </tr>
4943          <tr class="entries_header">
4944            <th class="th_details" colspan="5">Details</th>
4945          </tr>
4946          <tr class="entry_cont">
4947            <td class="entry_details" colspan="5">
4948              <p>This corresponds to the the maximum allowed number of elements in
4949<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
4950            </td>
4951          </tr>
4952
4953          <tr class="entries_header">
4954            <th class="th_details" colspan="5">HAL Implementation Details</th>
4955          </tr>
4956          <tr class="entry_cont">
4957            <td class="entry_details" colspan="5">
4958              <p>This entry is private to the framework.<wbr/> Fill in
4959maxRegions to have this entry be automatically populated.<wbr/></p>
4960            </td>
4961          </tr>
4962
4963          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4964           <!-- end of entry -->
4965        
4966                
4967          <tr class="entry" id="static_android.control.maxRegionsAf">
4968            <td class="entry_name
4969             " rowspan="5">
4970              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
4971            </td>
4972            <td class="entry_type">
4973                <span class="entry_type_name">int32</span>
4974
4975              <span class="entry_type_visibility"> [public]</span>
4976
4977              <span class="entry_type_synthetic">[synthetic] </span>
4978
4979              <span class="entry_type_hwlevel">[legacy] </span>
4980
4981
4982
4983
4984            </td> <!-- entry_type -->
4985
4986            <td class="entry_description">
4987              <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p>
4988            </td>
4989
4990            <td class="entry_units">
4991            </td>
4992
4993            <td class="entry_range">
4994              <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
4995value will be &gt;= 1.<wbr/></p>
4996            </td>
4997
4998            <td class="entry_tags">
4999            </td>
5000
5001          </tr>
5002          <tr class="entries_header">
5003            <th class="th_details" colspan="5">Details</th>
5004          </tr>
5005          <tr class="entry_cont">
5006            <td class="entry_details" colspan="5">
5007              <p>This corresponds to the the maximum allowed number of elements in
5008<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5009            </td>
5010          </tr>
5011
5012          <tr class="entries_header">
5013            <th class="th_details" colspan="5">HAL Implementation Details</th>
5014          </tr>
5015          <tr class="entry_cont">
5016            <td class="entry_details" colspan="5">
5017              <p>This entry is private to the framework.<wbr/> Fill in
5018maxRegions to have this entry be automatically populated.<wbr/></p>
5019            </td>
5020          </tr>
5021
5022          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5023           <!-- end of entry -->
5024        
5025                
5026          <tr class="entry" id="static_android.control.sceneModeOverrides">
5027            <td class="entry_name
5028             " rowspan="5">
5029              android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
5030            </td>
5031            <td class="entry_type">
5032                <span class="entry_type_name">byte</span>
5033                <span class="entry_type_container">x</span>
5034
5035                <span class="entry_type_array">
5036                  3 x length(availableSceneModes)
5037                </span>
5038              <span class="entry_type_visibility"> [system]</span>
5039
5040
5041              <span class="entry_type_hwlevel">[limited] </span>
5042
5043
5044
5045
5046            </td> <!-- entry_type -->
5047
5048            <td class="entry_description">
5049              <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
5050settings to use with each available scene mode.<wbr/></p>
5051            </td>
5052
5053            <td class="entry_units">
5054            </td>
5055
5056            <td class="entry_range">
5057              <p>For each available scene mode,<wbr/> the list must contain three
5058entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5059<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
5060by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
5061where aeMode has the lowest index position.<wbr/></p>
5062            </td>
5063
5064            <td class="entry_tags">
5065              <ul class="entry_tags">
5066                  <li><a href="#tag_BC">BC</a></li>
5067              </ul>
5068            </td>
5069
5070          </tr>
5071          <tr class="entries_header">
5072            <th class="th_details" colspan="5">Details</th>
5073          </tr>
5074          <tr class="entry_cont">
5075            <td class="entry_details" colspan="5">
5076              <p>When a scene mode is enabled,<wbr/> the camera device is expected
5077to 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/>
5078and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
5079that scene mode.<wbr/></p>
5080<p>The order of this list matches that of availableSceneModes,<wbr/>
5081with 3 entries for each mode.<wbr/>  The overrides listed
5082for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/>
5083since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5084<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
5085used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
5086is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and
5087FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p>
5088<p>For example,<wbr/> if availableSceneModes contains
5089<code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/>  then the camera framework
5090expects sceneModeOverrides to have 9 entries formatted like:
5091<code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
5092ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
5093            </td>
5094          </tr>
5095
5096          <tr class="entries_header">
5097            <th class="th_details" colspan="5">HAL Implementation Details</th>
5098          </tr>
5099          <tr class="entry_cont">
5100            <td class="entry_details" colspan="5">
5101              <p>To maintain backward compatibility,<wbr/> this list will be made available
5102in the static metadata of the camera service.<wbr/>  The camera service will
5103use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5104<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
5105mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p>
5106            </td>
5107          </tr>
5108
5109          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5110           <!-- end of entry -->
5111        
5112                
5113          <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations">
5114            <td class="entry_name
5115             " rowspan="5">
5116              android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations
5117            </td>
5118            <td class="entry_type">
5119                <span class="entry_type_name">int32</span>
5120                <span class="entry_type_container">x</span>
5121
5122                <span class="entry_type_array">
5123                  5 x n
5124                </span>
5125              <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
5126
5127
5128              <span class="entry_type_hwlevel">[limited] </span>
5129
5130
5131
5132
5133            </td> <!-- entry_type -->
5134
5135            <td class="entry_description">
5136              <p>List of available high speed video size,<wbr/> fps range and max batch size configurations
5137supported by the camera device,<wbr/> in the format of (width,<wbr/> height,<wbr/> fps_<wbr/>min,<wbr/> fps_<wbr/>max,<wbr/> batch_<wbr/>size_<wbr/>max).<wbr/></p>
5138            </td>
5139
5140            <td class="entry_units">
5141            </td>
5142
5143            <td class="entry_range">
5144              <p>For each configuration,<wbr/> the fps_<wbr/>max &gt;= 120fps.<wbr/></p>
5145            </td>
5146
5147            <td class="entry_tags">
5148              <ul class="entry_tags">
5149                  <li><a href="#tag_V1">V1</a></li>
5150              </ul>
5151            </td>
5152
5153          </tr>
5154          <tr class="entries_header">
5155            <th class="th_details" colspan="5">Details</th>
5156          </tr>
5157          <tr class="entry_cont">
5158            <td class="entry_details" colspan="5">
5159              <p>When CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO is supported in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>,<wbr/>
5160this metadata will list the supported high speed video size,<wbr/> fps range and max batch size
5161configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes
5162reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a>
5163for processed non-stalling formats.<wbr/></p>
5164<p>For the high speed video use case,<wbr/> the application must
5165select the video size and fps range from this metadata to configure the recording and
5166preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends
5167to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to
5168configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata
5169by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the
5170recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application
5171must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams
5172must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p>
5173<p>The min and max fps will be multiple times of 30fps.<wbr/></p>
5174<p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/>
5175to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate
5176multiple frames together and send to camera device for processing where the request
5177controls are same for all the frames in this batch.<wbr/> Max batch size indicates
5178the max possible number of frames the camera device will group together for this high
5179speed stream configuration.<wbr/> This max batch size will be used to generate a high speed
5180recording request list by
5181<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/>
5182The max batch size for each configuration will satisfy below conditions:</p>
5183<ul>
5184<li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/>
5185if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li>
5186<li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but
5187the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch
5188size is 8,<wbr/> the actual batch size used by camera device will only be 1,<wbr/> 2,<wbr/> 4,<wbr/> or 8.<wbr/></li>
5189<li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li>
5190</ul>
5191<p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/>
5192in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p>
5193<p>This fps ranges in this configuration list can only be used to create requests
5194that are submitted to a high speed camera capture session created by
5195<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
5196The fps ranges reported in this metadata must not be used to setup capture requests for
5197normal capture session,<wbr/> or it will cause request error.<wbr/></p>
5198            </td>
5199          </tr>
5200
5201          <tr class="entries_header">
5202            <th class="th_details" colspan="5">HAL Implementation Details</th>
5203          </tr>
5204          <tr class="entry_cont">
5205            <td class="entry_details" colspan="5">
5206              <p>All the sizes listed in this configuration will be a subset of the sizes reported by
5207<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
5208Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
5209of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p>
5210<p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps
5211sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application
5212usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused
5213stutter when starting recording as much as possible,<wbr/> the application may want to ensure
5214the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise
5215the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/>
5216For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise
5217[30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to
5218do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start
5219recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps
5220values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps
5221values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must
5222switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p>
5223            </td>
5224          </tr>
5225
5226          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5227           <!-- end of entry -->
5228        
5229                
5230          <tr class="entry" id="static_android.control.aeLockAvailable">
5231            <td class="entry_name
5232             " rowspan="3">
5233              android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available
5234            </td>
5235            <td class="entry_type">
5236                <span class="entry_type_name entry_type_name_enum">byte</span>
5237
5238              <span class="entry_type_visibility"> [public as boolean]</span>
5239
5240
5241              <span class="entry_type_hwlevel">[legacy] </span>
5242
5243
5244
5245                <ul class="entry_type_enum">
5246                  <li>
5247                    <span class="entry_type_enum_name">FALSE</span>
5248                  </li>
5249                  <li>
5250                    <span class="entry_type_enum_name">TRUE</span>
5251                  </li>
5252                </ul>
5253
5254            </td> <!-- entry_type -->
5255
5256            <td class="entry_description">
5257              <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p>
5258            </td>
5259
5260            <td class="entry_units">
5261            </td>
5262
5263            <td class="entry_range">
5264            </td>
5265
5266            <td class="entry_tags">
5267              <ul class="entry_tags">
5268                  <li><a href="#tag_BC">BC</a></li>
5269              </ul>
5270            </td>
5271
5272          </tr>
5273          <tr class="entries_header">
5274            <th class="th_details" colspan="5">Details</th>
5275          </tr>
5276          <tr class="entry_cont">
5277            <td class="entry_details" colspan="5">
5278              <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always
5279list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5280            </td>
5281          </tr>
5282
5283
5284          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5285           <!-- end of entry -->
5286        
5287                
5288          <tr class="entry" id="static_android.control.awbLockAvailable">
5289            <td class="entry_name
5290             " rowspan="3">
5291              android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available
5292            </td>
5293            <td class="entry_type">
5294                <span class="entry_type_name entry_type_name_enum">byte</span>
5295
5296              <span class="entry_type_visibility"> [public as boolean]</span>
5297
5298
5299              <span class="entry_type_hwlevel">[legacy] </span>
5300
5301
5302
5303                <ul class="entry_type_enum">
5304                  <li>
5305                    <span class="entry_type_enum_name">FALSE</span>
5306                  </li>
5307                  <li>
5308                    <span class="entry_type_enum_name">TRUE</span>
5309                  </li>
5310                </ul>
5311
5312            </td> <!-- entry_type -->
5313
5314            <td class="entry_description">
5315              <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p>
5316            </td>
5317
5318            <td class="entry_units">
5319            </td>
5320
5321            <td class="entry_range">
5322            </td>
5323
5324            <td class="entry_tags">
5325              <ul class="entry_tags">
5326                  <li><a href="#tag_BC">BC</a></li>
5327              </ul>
5328            </td>
5329
5330          </tr>
5331          <tr class="entries_header">
5332            <th class="th_details" colspan="5">Details</th>
5333          </tr>
5334          <tr class="entry_cont">
5335            <td class="entry_details" colspan="5">
5336              <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will
5337always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5338            </td>
5339          </tr>
5340
5341
5342          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5343           <!-- end of entry -->
5344        
5345                
5346          <tr class="entry" id="static_android.control.availableModes">
5347            <td class="entry_name
5348             " rowspan="3">
5349              android.<wbr/>control.<wbr/>available<wbr/>Modes
5350            </td>
5351            <td class="entry_type">
5352                <span class="entry_type_name">byte</span>
5353                <span class="entry_type_container">x</span>
5354
5355                <span class="entry_type_array">
5356                  n
5357                </span>
5358              <span class="entry_type_visibility"> [public as enumList]</span>
5359
5360
5361              <span class="entry_type_hwlevel">[legacy] </span>
5362
5363
5364                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div>
5365
5366
5367            </td> <!-- entry_type -->
5368
5369            <td class="entry_description">
5370              <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera
5371device.<wbr/></p>
5372            </td>
5373
5374            <td class="entry_units">
5375            </td>
5376
5377            <td class="entry_range">
5378              <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p>
5379            </td>
5380
5381            <td class="entry_tags">
5382            </td>
5383
5384          </tr>
5385          <tr class="entries_header">
5386            <th class="th_details" colspan="5">Details</th>
5387          </tr>
5388          <tr class="entry_cont">
5389            <td class="entry_details" colspan="5">
5390              <p>This list contains control modes that can be set for the camera device.<wbr/>
5391LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL
5392devices will always support OFF,<wbr/> AUTO modes.<wbr/></p>
5393            </td>
5394          </tr>
5395
5396
5397          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5398           <!-- end of entry -->
5399        
5400        
5401
5402      <!-- end of kind -->
5403      </tbody>
5404      <tr><td colspan="6" class="kind">dynamic</td></tr>
5405
5406      <thead class="entries_header">
5407        <tr>
5408          <th class="th_name">Property Name</th>
5409          <th class="th_type">Type</th>
5410          <th class="th_description">Description</th>
5411          <th class="th_units">Units</th>
5412          <th class="th_range">Range</th>
5413          <th class="th_tags">Tags</th>
5414        </tr>
5415      </thead>
5416
5417      <tbody>
5418
5419        
5420
5421        
5422
5423        
5424
5425        
5426
5427                
5428          <tr class="entry" id="dynamic_android.control.aePrecaptureId">
5429            <td class="entry_name
5430                entry_name_deprecated
5431             " rowspan="3">
5432              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
5433            </td>
5434            <td class="entry_type">
5435                <span class="entry_type_name">int32</span>
5436
5437              <span class="entry_type_visibility"> [system]</span>
5438
5439
5440
5441              <span class="entry_type_deprecated">[deprecated] </span>
5442
5443
5444
5445            </td> <!-- entry_type -->
5446
5447            <td class="entry_description">
5448              <p>The ID sent with the latest
5449CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
5450            </td>
5451
5452            <td class="entry_units">
5453            </td>
5454
5455            <td class="entry_range">
5456              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
5457            </td>
5458
5459            <td class="entry_tags">
5460            </td>
5461
5462          </tr>
5463          <tr class="entries_header">
5464            <th class="th_details" colspan="5">Details</th>
5465          </tr>
5466          <tr class="entry_cont">
5467            <td class="entry_details" colspan="5">
5468              <p>Must be 0 if no
5469CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
5470by HAL.<wbr/> Always updated even if AE algorithm ignores the
5471trigger</p>
5472            </td>
5473          </tr>
5474
5475
5476          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5477           <!-- end of entry -->
5478        
5479                
5480          <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
5481            <td class="entry_name
5482             " rowspan="5">
5483              android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
5484            </td>
5485            <td class="entry_type">
5486                <span class="entry_type_name entry_type_name_enum">byte</span>
5487
5488              <span class="entry_type_visibility"> [public]</span>
5489
5490
5491              <span class="entry_type_hwlevel">[legacy] </span>
5492
5493
5494
5495                <ul class="entry_type_enum">
5496                  <li>
5497                    <span class="entry_type_enum_name">OFF</span>
5498                    <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
5499avoid banding problems.<wbr/></p></span>
5500                  </li>
5501                  <li>
5502                    <span class="entry_type_enum_name">50HZ</span>
5503                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5504avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
5505                  </li>
5506                  <li>
5507                    <span class="entry_type_enum_name">60HZ</span>
5508                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5509avoid banding problems with 60Hz illumination
5510sources.<wbr/></p></span>
5511                  </li>
5512                  <li>
5513                    <span class="entry_type_enum_name">AUTO</span>
5514                    <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
5515antibanding routine to the current illumination
5516condition.<wbr/> This is the default mode if AUTO is
5517available on given camera device.<wbr/></p></span>
5518                  </li>
5519                </ul>
5520
5521            </td> <!-- entry_type -->
5522
5523            <td class="entry_description">
5524              <p>The desired setting for the camera device's auto-exposure
5525algorithm's antibanding compensation.<wbr/></p>
5526            </td>
5527
5528            <td class="entry_units">
5529            </td>
5530
5531            <td class="entry_range">
5532              <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
5533            </td>
5534
5535            <td class="entry_tags">
5536              <ul class="entry_tags">
5537                  <li><a href="#tag_BC">BC</a></li>
5538              </ul>
5539            </td>
5540
5541          </tr>
5542          <tr class="entries_header">
5543            <th class="th_details" colspan="5">Details</th>
5544          </tr>
5545          <tr class="entry_cont">
5546            <td class="entry_details" colspan="5">
5547              <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
5548lights,<wbr/> flicker at the rate of the power supply frequency
5549(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
5550typically not noticeable to a person,<wbr/> it can be visible to
5551a camera device.<wbr/> If a camera sets its exposure time to the
5552wrong value,<wbr/> the flicker may become visible in the
5553viewfinder as flicker or in a final captured image,<wbr/> as a
5554set of variable-brightness bands across the image.<wbr/></p>
5555<p>Therefore,<wbr/> the auto-exposure routines of camera devices
5556include antibanding routines that ensure that the chosen
5557exposure value will not cause such banding.<wbr/> The choice of
5558exposure time depends on the rate of flicker,<wbr/> which the
5559camera device can detect automatically,<wbr/> or the expected
5560rate can be selected by the application using this
5561control.<wbr/></p>
5562<p>A given camera device may not support all of the possible
5563options for the antibanding mode.<wbr/> The
5564<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
5565the available modes for a given camera device.<wbr/></p>
5566<p>AUTO mode is the default if it is available on given
5567camera device.<wbr/> When AUTO mode is not available,<wbr/> the
5568default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
5569and 60HZ will be available.<wbr/></p>
5570<p>If manual exposure control is enabled (by setting
5571<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/>
5572then this setting has no effect,<wbr/> and the application must
5573ensure it selects exposure times that do not cause banding
5574issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
5575the application in this.<wbr/></p>
5576            </td>
5577          </tr>
5578
5579          <tr class="entries_header">
5580            <th class="th_details" colspan="5">HAL Implementation Details</th>
5581          </tr>
5582          <tr class="entry_cont">
5583            <td class="entry_details" colspan="5">
5584              <p>For all capture request templates,<wbr/> this field must be set
5585to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
5586the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
558760HZ must be available.<wbr/></p>
5588<p>If manual exposure control is enabled (by setting
5589<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/>
5590then the exposure values provided by the application must not be
5591adjusted for antibanding.<wbr/></p>
5592            </td>
5593          </tr>
5594
5595          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5596           <!-- end of entry -->
5597        
5598                
5599          <tr class="entry" id="dynamic_android.control.aeExposureCompensation">
5600            <td class="entry_name
5601             " rowspan="3">
5602              android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
5603            </td>
5604            <td class="entry_type">
5605                <span class="entry_type_name">int32</span>
5606
5607              <span class="entry_type_visibility"> [public]</span>
5608
5609
5610              <span class="entry_type_hwlevel">[legacy] </span>
5611
5612
5613
5614
5615            </td> <!-- entry_type -->
5616
5617            <td class="entry_description">
5618              <p>Adjustment to auto-exposure (AE) target image
5619brightness.<wbr/></p>
5620            </td>
5621
5622            <td class="entry_units">
5623              Compensation steps
5624            </td>
5625
5626            <td class="entry_range">
5627              <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
5628            </td>
5629
5630            <td class="entry_tags">
5631              <ul class="entry_tags">
5632                  <li><a href="#tag_BC">BC</a></li>
5633              </ul>
5634            </td>
5635
5636          </tr>
5637          <tr class="entries_header">
5638            <th class="th_details" colspan="5">Details</th>
5639          </tr>
5640          <tr class="entry_cont">
5641            <td class="entry_details" colspan="5">
5642              <p>The adjustment is measured as a count of steps,<wbr/> with the
5643step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
5644allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
5645<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
5646will mean an exposure compensation of +2 EV; -3 will mean an
5647exposure compensation of -1 EV.<wbr/> One EV represents a doubling
5648of image brightness.<wbr/> Note that this control will only be
5649effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
5650will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
5651<p>In the event of exposure compensation value being changed,<wbr/> camera device
5652may take several frames to reach the newly requested exposure target.<wbr/>
5653During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
5654state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
5655change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
5656FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
5657            </td>
5658          </tr>
5659
5660
5661          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5662           <!-- end of entry -->
5663        
5664                
5665          <tr class="entry" id="dynamic_android.control.aeLock">
5666            <td class="entry_name
5667             " rowspan="3">
5668              android.<wbr/>control.<wbr/>ae<wbr/>Lock
5669            </td>
5670            <td class="entry_type">
5671                <span class="entry_type_name entry_type_name_enum">byte</span>
5672
5673              <span class="entry_type_visibility"> [public as boolean]</span>
5674
5675
5676              <span class="entry_type_hwlevel">[legacy] </span>
5677
5678
5679
5680                <ul class="entry_type_enum">
5681                  <li>
5682                    <span class="entry_type_enum_name">OFF</span>
5683                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
5684is free to update its parameters.<wbr/></p></span>
5685                  </li>
5686                  <li>
5687                    <span class="entry_type_enum_name">ON</span>
5688                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
5689must not update the exposure and sensitivity parameters
5690while the lock is active.<wbr/></p>
5691<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
5692will still take effect while auto-exposure is locked.<wbr/></p>
5693<p>Some rare LEGACY devices may not support
5694this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
5695                  </li>
5696                </ul>
5697
5698            </td> <!-- entry_type -->
5699
5700            <td class="entry_description">
5701              <p>Whether auto-exposure (AE) is currently locked to its latest
5702calculated values.<wbr/></p>
5703            </td>
5704
5705            <td class="entry_units">
5706            </td>
5707
5708            <td class="entry_range">
5709            </td>
5710
5711            <td class="entry_tags">
5712              <ul class="entry_tags">
5713                  <li><a href="#tag_BC">BC</a></li>
5714              </ul>
5715            </td>
5716
5717          </tr>
5718          <tr class="entries_header">
5719            <th class="th_details" colspan="5">Details</th>
5720          </tr>
5721          <tr class="entry_cont">
5722            <td class="entry_details" colspan="5">
5723              <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
5724and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
5725<p>Note that even when AE is locked,<wbr/> the flash may be fired if
5726the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
5727ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
5728<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
5729is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
5730<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
5731when AE is already locked,<wbr/> the camera device will not change the exposure time
5732(<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>)
5733parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
5734is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
5735<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/>
5736Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
5737<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
5738the AE if AE is locked by the camera device internally during precapture metering
5739sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
5740ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
5741will never succeed in a sequence of preview requests where AE lock is always set
5742to <code>false</code>.<wbr/></p>
5743<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
5744get locked do not necessarily correspond to the settings that were present in the
5745latest capture result received from the camera device,<wbr/> since additional captures
5746and AE updates may have occurred even before the result was sent out.<wbr/> If an
5747application is switching between automatic and manual control and wishes to eliminate
5748any flicker during the switch,<wbr/> the following procedure is recommended:</p>
5749<ol>
5750<li>Starting in auto-AE mode:</li>
5751<li>Lock AE</li>
5752<li>Wait for the first result to be output that has the AE locked</li>
5753<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
5754<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
5755</ol>
5756<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>
5757            </td>
5758          </tr>
5759
5760
5761          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5762           <!-- end of entry -->
5763        
5764                
5765          <tr class="entry" id="dynamic_android.control.aeMode">
5766            <td class="entry_name
5767             " rowspan="3">
5768              android.<wbr/>control.<wbr/>ae<wbr/>Mode
5769            </td>
5770            <td class="entry_type">
5771                <span class="entry_type_name entry_type_name_enum">byte</span>
5772
5773              <span class="entry_type_visibility"> [public]</span>
5774
5775
5776              <span class="entry_type_hwlevel">[legacy] </span>
5777
5778
5779
5780                <ul class="entry_type_enum">
5781                  <li>
5782                    <span class="entry_type_enum_name">OFF</span>
5783                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
5784<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
5785<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
5786<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
5787device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
5788a flash unit for this camera device.<wbr/></p>
5789<p>Note that auto-white balance (AWB) and auto-focus (AF)
5790behavior is device dependent when AE is in OFF mode.<wbr/>
5791To have consistent behavior across different devices,<wbr/>
5792it is recommended to either set AWB and AF to OFF mode
5793or lock AWB and AF before setting AE to OFF.<wbr/>
5794See <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/>
5795<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>
5796for more details.<wbr/></p>
5797<p>LEGACY devices do not support the OFF mode and will
5798override attempts to use this value to ON.<wbr/></p></span>
5799                  </li>
5800                  <li>
5801                    <span class="entry_type_enum_name">ON</span>
5802                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
5803with no flash control.<wbr/></p>
5804<p>The application's values for
5805<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
5806<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
5807<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
5808application has control over the various
5809android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
5810                  </li>
5811                  <li>
5812                    <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
5813                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
5814the camera's flash unit,<wbr/> firing it in low-light
5815conditions.<wbr/></p>
5816<p>The flash may be fired during a precapture sequence
5817(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
5818may be fired for captures for which the
5819<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
5820STILL_<wbr/>CAPTURE</p></span>
5821                  </li>
5822                  <li>
5823                    <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
5824                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
5825the camera's flash unit,<wbr/> always firing it for still
5826captures.<wbr/></p>
5827<p>The flash may be fired during a precapture sequence
5828(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
5829will always be fired for captures for which the
5830<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
5831STILL_<wbr/>CAPTURE</p></span>
5832                  </li>
5833                  <li>
5834                    <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
5835                    <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
5836reduction.<wbr/></p>
5837<p>If deemed necessary by the camera device,<wbr/> a red eye
5838reduction flash will fire during the precapture
5839sequence.<wbr/></p></span>
5840                  </li>
5841                </ul>
5842
5843            </td> <!-- entry_type -->
5844
5845            <td class="entry_description">
5846              <p>The desired mode for the camera device's
5847auto-exposure routine.<wbr/></p>
5848            </td>
5849
5850            <td class="entry_units">
5851            </td>
5852
5853            <td class="entry_range">
5854              <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
5855            </td>
5856
5857            <td class="entry_tags">
5858              <ul class="entry_tags">
5859                  <li><a href="#tag_BC">BC</a></li>
5860              </ul>
5861            </td>
5862
5863          </tr>
5864          <tr class="entries_header">
5865            <th class="th_details" colspan="5">Details</th>
5866          </tr>
5867          <tr class="entry_cont">
5868            <td class="entry_details" colspan="5">
5869              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
5870AUTO.<wbr/></p>
5871<p>When set to any of the ON modes,<wbr/> the camera device's
5872auto-exposure routine is enabled,<wbr/> overriding the
5873application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
5874and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
5875<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
5876<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
5877is selected,<wbr/> the camera device's flash unit controls are
5878also overridden.<wbr/></p>
5879<p>The FLASH modes are only available if the camera device
5880has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
5881<p>If flash TORCH mode is desired,<wbr/> this field must be set to
5882ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
5883<p>When set to any of the ON modes,<wbr/> the values chosen by the
5884camera device auto-exposure routine for the overridden
5885fields for a given capture will be available in its
5886CaptureResult.<wbr/></p>
5887            </td>
5888          </tr>
5889
5890
5891          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5892           <!-- end of entry -->
5893        
5894                
5895          <tr class="entry" id="dynamic_android.control.aeRegions">
5896            <td class="entry_name
5897             " rowspan="5">
5898              android.<wbr/>control.<wbr/>ae<wbr/>Regions
5899            </td>
5900            <td class="entry_type">
5901                <span class="entry_type_name">int32</span>
5902                <span class="entry_type_container">x</span>
5903
5904                <span class="entry_type_array">
5905                  5 x area_count
5906                </span>
5907              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
5908
5909
5910
5911
5912
5913
5914            </td> <!-- entry_type -->
5915
5916            <td class="entry_description">
5917              <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
5918            </td>
5919
5920            <td class="entry_units">
5921              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
5922            </td>
5923
5924            <td class="entry_range">
5925              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
5926<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
5927            </td>
5928
5929            <td class="entry_tags">
5930              <ul class="entry_tags">
5931                  <li><a href="#tag_BC">BC</a></li>
5932              </ul>
5933            </td>
5934
5935          </tr>
5936          <tr class="entries_header">
5937            <th class="th_details" colspan="5">Details</th>
5938          </tr>
5939          <tr class="entry_cont">
5940            <td class="entry_details" colspan="5">
5941              <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
5942Otherwise will always be present.<wbr/></p>
5943<p>The maximum number of regions supported by the device is determined by the value
5944of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
5945<p>The coordinate system is based on the active pixel array,<wbr/>
5946with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
5947(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
5948<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
5949bottom-right pixel in the active pixel array.<wbr/></p>
5950<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
5951for every pixel in the area.<wbr/> This means that a large metering area
5952with the same weight as a smaller area will have more effect in
5953the metering result.<wbr/> Metering areas can partially overlap and the
5954camera device will add the weights in the overlap region.<wbr/></p>
5955<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
5956region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
5957weight is ignored.<wbr/></p>
5958<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
5959camera device.<wbr/></p>
5960<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
5961capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
5962region and output only the intersection rectangle as the metering region in the result
5963metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
5964not reported in the result metadata.<wbr/></p>
5965            </td>
5966          </tr>
5967
5968          <tr class="entries_header">
5969            <th class="th_details" colspan="5">HAL Implementation Details</th>
5970          </tr>
5971          <tr class="entry_cont">
5972            <td class="entry_details" colspan="5">
5973              <p>The HAL level representation of MeteringRectangle[] is a
5974int[5 * area_<wbr/>count].<wbr/>
5975Every five elements represent a metering region of
5976(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
5977The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
5978exclusive on xmax and ymax.<wbr/></p>
5979            </td>
5980          </tr>
5981
5982          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5983           <!-- end of entry -->
5984        
5985                
5986          <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
5987            <td class="entry_name
5988             " rowspan="3">
5989              android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
5990            </td>
5991            <td class="entry_type">
5992                <span class="entry_type_name">int32</span>
5993                <span class="entry_type_container">x</span>
5994
5995                <span class="entry_type_array">
5996                  2
5997                </span>
5998              <span class="entry_type_visibility"> [public as rangeInt]</span>
5999
6000
6001              <span class="entry_type_hwlevel">[legacy] </span>
6002
6003
6004
6005
6006            </td> <!-- entry_type -->
6007
6008            <td class="entry_description">
6009              <p>Range over which the auto-exposure routine can
6010adjust the capture frame rate to maintain good
6011exposure.<wbr/></p>
6012            </td>
6013
6014            <td class="entry_units">
6015              Frames per second (FPS)
6016            </td>
6017
6018            <td class="entry_range">
6019              <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>
6020            </td>
6021
6022            <td class="entry_tags">
6023              <ul class="entry_tags">
6024                  <li><a href="#tag_BC">BC</a></li>
6025              </ul>
6026            </td>
6027
6028          </tr>
6029          <tr class="entries_header">
6030            <th class="th_details" colspan="5">Details</th>
6031          </tr>
6032          <tr class="entry_cont">
6033            <td class="entry_details" colspan="5">
6034              <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
6035manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
6036<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
6037            </td>
6038          </tr>
6039
6040
6041          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6042           <!-- end of entry -->
6043        
6044                
6045          <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
6046            <td class="entry_name
6047             " rowspan="5">
6048              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
6049            </td>
6050            <td class="entry_type">
6051                <span class="entry_type_name entry_type_name_enum">byte</span>
6052
6053              <span class="entry_type_visibility"> [public]</span>
6054
6055
6056              <span class="entry_type_hwlevel">[limited] </span>
6057
6058
6059
6060                <ul class="entry_type_enum">
6061                  <li>
6062                    <span class="entry_type_enum_name">IDLE</span>
6063                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6064                  </li>
6065                  <li>
6066                    <span class="entry_type_enum_name">START</span>
6067                    <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
6068by the camera device.<wbr/></p>
6069<p>The exact effect of the precapture trigger depends on
6070the current AE mode and state.<wbr/></p></span>
6071                  </li>
6072                  <li>
6073                    <span class="entry_type_enum_name">CANCEL</span>
6074                    <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
6075precapture metering sequence,<wbr/> the auto-exposure routine will return to its
6076initial state.<wbr/></p></span>
6077                  </li>
6078                </ul>
6079
6080            </td> <!-- entry_type -->
6081
6082            <td class="entry_description">
6083              <p>Whether the camera device will trigger a precapture
6084metering sequence when it processes this request.<wbr/></p>
6085            </td>
6086
6087            <td class="entry_units">
6088            </td>
6089
6090            <td class="entry_range">
6091            </td>
6092
6093            <td class="entry_tags">
6094              <ul class="entry_tags">
6095                  <li><a href="#tag_BC">BC</a></li>
6096              </ul>
6097            </td>
6098
6099          </tr>
6100          <tr class="entries_header">
6101            <th class="th_details" colspan="5">Details</th>
6102          </tr>
6103          <tr class="entry_cont">
6104            <td class="entry_details" colspan="5">
6105              <p>This entry is normally set to IDLE,<wbr/> or is not
6106included at all in the request settings.<wbr/> When included and
6107set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
6108precapture metering sequence.<wbr/></p>
6109<p>When set to CANCEL,<wbr/> the camera device will cancel any active
6110precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
6111If a precapture metering sequence is already completed,<wbr/> and the camera
6112device has implicitly locked the AE for subsequent still capture,<wbr/> the
6113CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
6114<p>The precapture sequence should be triggered before starting a
6115high-quality still capture for final metering decisions to
6116be made,<wbr/> and for firing pre-capture flash pulses to estimate
6117scene brightness and required final capture flash power,<wbr/> when
6118the flash is enabled.<wbr/></p>
6119<p>Normally,<wbr/> this entry should be set to START for only a
6120single request,<wbr/> and the application should wait until the
6121sequence completes before starting a new one.<wbr/></p>
6122<p>When a precapture metering sequence is finished,<wbr/> the camera device
6123may lock the auto-exposure routine internally to be able to accurately expose the
6124subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
6125For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
6126submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
6127submit 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
6128with <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
6129still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
6130API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
6131internally locked AE if the application doesn't submit a still capture request after
6132the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
6133be used in devices that have earlier API levels.<wbr/></p>
6134<p>The exact effect of auto-exposure (AE) precapture trigger
6135depends on the current AE mode and state; see
6136<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
6137details.<wbr/></p>
6138<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
6139capturing a high-resolution JPEG image will automatically trigger a
6140precapture sequence before the high-resolution capture,<wbr/> including
6141potentially firing a pre-capture flash.<wbr/></p>
6142<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
6143simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
6144the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
6145focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
6146trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
6147changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
6148example.<wbr/></p>
6149<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
6150the camera device will complete them in the optimal order for that device.<wbr/></p>
6151            </td>
6152          </tr>
6153
6154          <tr class="entries_header">
6155            <th class="th_details" colspan="5">HAL Implementation Details</th>
6156          </tr>
6157          <tr class="entry_cont">
6158            <td class="entry_details" colspan="5">
6159              <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
6160(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
6161treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
6162AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
6163to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
6164            </td>
6165          </tr>
6166
6167          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6168           <!-- end of entry -->
6169        
6170                
6171          <tr class="entry" id="dynamic_android.control.aeState">
6172            <td class="entry_name
6173             " rowspan="3">
6174              android.<wbr/>control.<wbr/>ae<wbr/>State
6175            </td>
6176            <td class="entry_type">
6177                <span class="entry_type_name entry_type_name_enum">byte</span>
6178
6179              <span class="entry_type_visibility"> [public]</span>
6180
6181
6182              <span class="entry_type_hwlevel">[limited] </span>
6183
6184
6185
6186                <ul class="entry_type_enum">
6187                  <li>
6188                    <span class="entry_type_enum_name">INACTIVE</span>
6189                    <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
6190<p>When a camera device is opened,<wbr/> it starts in
6191this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
6192this state in capture result.<wbr/></p></span>
6193                  </li>
6194                  <li>
6195                    <span class="entry_type_enum_name">SEARCHING</span>
6196                    <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
6197for the current scene.<wbr/></p>
6198<p>This is a transient state,<wbr/> the camera device may skip
6199reporting this state in capture result.<wbr/></p></span>
6200                  </li>
6201                  <li>
6202                    <span class="entry_type_enum_name">CONVERGED</span>
6203                    <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
6204current scene.<wbr/></p></span>
6205                  </li>
6206                  <li>
6207                    <span class="entry_type_enum_name">LOCKED</span>
6208                    <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
6209                  </li>
6210                  <li>
6211                    <span class="entry_type_enum_name">FLASH_REQUIRED</span>
6212                    <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
6213needs to be fired for good quality still
6214capture.<wbr/></p></span>
6215                  </li>
6216                  <li>
6217                    <span class="entry_type_enum_name">PRECAPTURE</span>
6218                    <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
6219and is currently executing it.<wbr/></p>
6220<p>Precapture can be triggered through setting
6221<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently
6222active and completed (if it causes camera device internal AE lock) precapture
6223metering sequence can be canceled through setting
6224<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p>
6225<p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED
6226or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient
6227state,<wbr/> the camera device may skip reporting this state in
6228capture result.<wbr/></p></span>
6229                  </li>
6230                </ul>
6231
6232            </td> <!-- entry_type -->
6233
6234            <td class="entry_description">
6235              <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p>
6236            </td>
6237
6238            <td class="entry_units">
6239            </td>
6240
6241            <td class="entry_range">
6242            </td>
6243
6244            <td class="entry_tags">
6245            </td>
6246
6247          </tr>
6248          <tr class="entries_header">
6249            <th class="th_details" colspan="5">Details</th>
6250          </tr>
6251          <tr class="entry_cont">
6252            <td class="entry_details" colspan="5">
6253              <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
6254resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6255or <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
6256the algorithm states to INACTIVE.<wbr/></p>
6257<p>The camera device can do several state transitions between two results,<wbr/> if it is
6258allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6259seen in a result.<wbr/></p>
6260<p>The state in the result is the state for this image (in sync with this image): if
6261AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
6262be good to use.<wbr/></p>
6263<p>Below are state transition tables for different AE modes.<wbr/></p>
6264<table>
6265<thead>
6266<tr>
6267<th align="center">State</th>
6268<th align="center">Transition Cause</th>
6269<th align="center">New State</th>
6270<th align="center">Notes</th>
6271</tr>
6272</thead>
6273<tbody>
6274<tr>
6275<td align="center">INACTIVE</td>
6276<td align="center"></td>
6277<td align="center">INACTIVE</td>
6278<td align="center">Camera device auto exposure algorithm is disabled</td>
6279</tr>
6280</tbody>
6281</table>
6282<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p>
6283<table>
6284<thead>
6285<tr>
6286<th align="center">State</th>
6287<th align="center">Transition Cause</th>
6288<th align="center">New State</th>
6289<th align="center">Notes</th>
6290</tr>
6291</thead>
6292<tbody>
6293<tr>
6294<td align="center">INACTIVE</td>
6295<td align="center">Camera device initiates AE scan</td>
6296<td align="center">SEARCHING</td>
6297<td align="center">Values changing</td>
6298</tr>
6299<tr>
6300<td align="center">INACTIVE</td>
6301<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6302<td align="center">LOCKED</td>
6303<td align="center">Values locked</td>
6304</tr>
6305<tr>
6306<td align="center">SEARCHING</td>
6307<td align="center">Camera device finishes AE scan</td>
6308<td align="center">CONVERGED</td>
6309<td align="center">Good values,<wbr/> not changing</td>
6310</tr>
6311<tr>
6312<td align="center">SEARCHING</td>
6313<td align="center">Camera device finishes AE scan</td>
6314<td align="center">FLASH_<wbr/>REQUIRED</td>
6315<td align="center">Converged but too dark w/<wbr/>o flash</td>
6316</tr>
6317<tr>
6318<td align="center">SEARCHING</td>
6319<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6320<td align="center">LOCKED</td>
6321<td align="center">Values locked</td>
6322</tr>
6323<tr>
6324<td align="center">CONVERGED</td>
6325<td align="center">Camera device initiates AE scan</td>
6326<td align="center">SEARCHING</td>
6327<td align="center">Values changing</td>
6328</tr>
6329<tr>
6330<td align="center">CONVERGED</td>
6331<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6332<td align="center">LOCKED</td>
6333<td align="center">Values locked</td>
6334</tr>
6335<tr>
6336<td align="center">FLASH_<wbr/>REQUIRED</td>
6337<td align="center">Camera device initiates AE scan</td>
6338<td align="center">SEARCHING</td>
6339<td align="center">Values changing</td>
6340</tr>
6341<tr>
6342<td align="center">FLASH_<wbr/>REQUIRED</td>
6343<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6344<td align="center">LOCKED</td>
6345<td align="center">Values locked</td>
6346</tr>
6347<tr>
6348<td align="center">LOCKED</td>
6349<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6350<td align="center">SEARCHING</td>
6351<td align="center">Values not good after unlock</td>
6352</tr>
6353<tr>
6354<td align="center">LOCKED</td>
6355<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6356<td align="center">CONVERGED</td>
6357<td align="center">Values good after unlock</td>
6358</tr>
6359<tr>
6360<td align="center">LOCKED</td>
6361<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6362<td align="center">FLASH_<wbr/>REQUIRED</td>
6363<td align="center">Exposure good,<wbr/> but too dark</td>
6364</tr>
6365<tr>
6366<td align="center">PRECAPTURE</td>
6367<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6368<td align="center">CONVERGED</td>
6369<td align="center">Ready for high-quality capture</td>
6370</tr>
6371<tr>
6372<td align="center">PRECAPTURE</td>
6373<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6374<td align="center">LOCKED</td>
6375<td align="center">Ready for high-quality capture</td>
6376</tr>
6377<tr>
6378<td align="center">LOCKED</td>
6379<td align="center">aeLock is ON and aePrecaptureTrigger is START</td>
6380<td align="center">LOCKED</td>
6381<td align="center">Precapture trigger is ignored when AE is already locked</td>
6382</tr>
6383<tr>
6384<td align="center">LOCKED</td>
6385<td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td>
6386<td align="center">LOCKED</td>
6387<td align="center">Precapture trigger is ignored when AE is already locked</td>
6388</tr>
6389<tr>
6390<td align="center">Any state (excluding LOCKED)</td>
6391<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
6392<td align="center">PRECAPTURE</td>
6393<td align="center">Start AE precapture metering sequence</td>
6394</tr>
6395<tr>
6396<td align="center">Any state (excluding LOCKED)</td>
6397<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td>
6398<td align="center">INACTIVE</td>
6399<td align="center">Currently active precapture metering sequence is canceled</td>
6400</tr>
6401</tbody>
6402</table>
6403<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
6404without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
6405can be skipped in that manner is called a transient state.<wbr/></p>
6406<p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions
6407listed in above table,<wbr/> it is also legal for the camera device to skip one or more
6408transient states between two results.<wbr/> See below table for examples:</p>
6409<table>
6410<thead>
6411<tr>
6412<th align="center">State</th>
6413<th align="center">Transition Cause</th>
6414<th align="center">New State</th>
6415<th align="center">Notes</th>
6416</tr>
6417</thead>
6418<tbody>
6419<tr>
6420<td align="center">INACTIVE</td>
6421<td align="center">Camera device finished AE scan</td>
6422<td align="center">CONVERGED</td>
6423<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
6424</tr>
6425<tr>
6426<td align="center">Any state (excluding LOCKED)</td>
6427<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>
6428<td align="center">FLASH_<wbr/>REQUIRED</td>
6429<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>
6430</tr>
6431<tr>
6432<td align="center">Any state (excluding LOCKED)</td>
6433<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>
6434<td align="center">CONVERGED</td>
6435<td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
6436</tr>
6437<tr>
6438<td align="center">Any state (excluding LOCKED)</td>
6439<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6440<td align="center">FLASH_<wbr/>REQUIRED</td>
6441<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>
6442</tr>
6443<tr>
6444<td align="center">Any state (excluding LOCKED)</td>
6445<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6446<td align="center">CONVERGED</td>
6447<td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
6448</tr>
6449<tr>
6450<td align="center">CONVERGED</td>
6451<td align="center">Camera device finished AE scan</td>
6452<td align="center">FLASH_<wbr/>REQUIRED</td>
6453<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>
6454</tr>
6455<tr>
6456<td align="center">FLASH_<wbr/>REQUIRED</td>
6457<td align="center">Camera device finished AE scan</td>
6458<td align="center">CONVERGED</td>
6459<td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
6460</tr>
6461</tbody>
6462</table>
6463            </td>
6464          </tr>
6465
6466
6467          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6468           <!-- end of entry -->
6469        
6470                
6471          <tr class="entry" id="dynamic_android.control.afMode">
6472            <td class="entry_name
6473             " rowspan="5">
6474              android.<wbr/>control.<wbr/>af<wbr/>Mode
6475            </td>
6476            <td class="entry_type">
6477                <span class="entry_type_name entry_type_name_enum">byte</span>
6478
6479              <span class="entry_type_visibility"> [public]</span>
6480
6481
6482              <span class="entry_type_hwlevel">[legacy] </span>
6483
6484
6485
6486                <ul class="entry_type_enum">
6487                  <li>
6488                    <span class="entry_type_enum_name">OFF</span>
6489                    <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
6490<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
6491application.<wbr/></p></span>
6492                  </li>
6493                  <li>
6494                    <span class="entry_type_enum_name">AUTO</span>
6495                    <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
6496<p>In this mode,<wbr/> the lens does not move unless
6497the autofocus trigger action is called.<wbr/> When that trigger
6498is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
6499the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
6500<p>Always supported if lens is not fixed focus.<wbr/></p>
6501<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
6502is fixed-focus.<wbr/></p>
6503<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
6504and sets the AF state to INACTIVE.<wbr/></p></span>
6505                  </li>
6506                  <li>
6507                    <span class="entry_type_enum_name">MACRO</span>
6508                    <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
6509<p>In this mode,<wbr/> the lens does not move unless the
6510autofocus trigger action is called.<wbr/> When that trigger is
6511activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
6512the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
6513mode is optimized for focusing on objects very close to
6514the camera.<wbr/></p>
6515<p>When that trigger is activated,<wbr/> AF will transition to
6516ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
6517NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
6518position to default,<wbr/> and sets the AF state to
6519INACTIVE.<wbr/></p></span>
6520                  </li>
6521                  <li>
6522                    <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
6523                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
6524position continually to attempt to provide a
6525constantly-in-focus image stream.<wbr/></p>
6526<p>The focusing behavior should be suitable for good quality
6527video recording; typically this means slower focus
6528movement and no overshoots.<wbr/> When the AF trigger is not
6529involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
6530and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
6531states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
6532the algorithm should immediately transition into
6533AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
6534lens position until a cancel AF trigger is received.<wbr/></p>
6535<p>Once cancel is received,<wbr/> the algorithm should transition
6536back to INACTIVE and resume passive scan.<wbr/> Note that this
6537behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
6538ongoing PASSIVE_<wbr/>SCAN must immediately be
6539canceled.<wbr/></p></span>
6540                  </li>
6541                  <li>
6542                    <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
6543                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
6544position continually to attempt to provide a
6545constantly-in-focus image stream.<wbr/></p>
6546<p>The focusing behavior should be suitable for still image
6547capture; typically this means focusing as fast as
6548possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
6549algorithm should start in INACTIVE state,<wbr/> and then
6550transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
6551appropriate as it attempts to maintain focus.<wbr/> When the AF
6552trigger is activated,<wbr/> the algorithm should finish its
6553PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
6554AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
6555lens position until a cancel AF trigger is received.<wbr/></p>
6556<p>When the AF cancel trigger is activated,<wbr/> the algorithm
6557should transition back to INACTIVE and then act as if it
6558has just been started.<wbr/></p></span>
6559                  </li>
6560                  <li>
6561                    <span class="entry_type_enum_name">EDOF</span>
6562                    <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
6563<p>The camera device will produce images with an extended
6564depth of field automatically; no special focusing
6565operations need to be done before taking a picture.<wbr/></p>
6566<p>AF triggers are ignored,<wbr/> and the AF state will always be
6567INACTIVE.<wbr/></p></span>
6568                  </li>
6569                </ul>
6570
6571            </td> <!-- entry_type -->
6572
6573            <td class="entry_description">
6574              <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
6575mode it is set to.<wbr/></p>
6576            </td>
6577
6578            <td class="entry_units">
6579            </td>
6580
6581            <td class="entry_range">
6582              <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
6583            </td>
6584
6585            <td class="entry_tags">
6586              <ul class="entry_tags">
6587                  <li><a href="#tag_BC">BC</a></li>
6588              </ul>
6589            </td>
6590
6591          </tr>
6592          <tr class="entries_header">
6593            <th class="th_details" colspan="5">Details</th>
6594          </tr>
6595          <tr class="entry_cont">
6596            <td class="entry_details" colspan="5">
6597              <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
6598(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
6599when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
6600dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
6601setting <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>
6602<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
6603the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
6604in result metadata.<wbr/></p>
6605            </td>
6606          </tr>
6607
6608          <tr class="entries_header">
6609            <th class="th_details" colspan="5">HAL Implementation Details</th>
6610          </tr>
6611          <tr class="entry_cont">
6612            <td class="entry_details" colspan="5">
6613              <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
6614request (<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
6615up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
6616<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
6617locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
6618after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
6619the same focal plane remains in focus.<wbr/></p>
6620<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
6621scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
6622(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
6623same lock behavior as above.<wbr/></p>
6624<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
6625focus 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/>
6626However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
6627manual control.<wbr/></p>
6628<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
6629camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
6630remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
6631by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
6632that will arise on camera modules with open-loop VCMs.<wbr/></p>
6633            </td>
6634          </tr>
6635
6636          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6637           <!-- end of entry -->
6638        
6639                
6640          <tr class="entry" id="dynamic_android.control.afRegions">
6641            <td class="entry_name
6642             " rowspan="5">
6643              android.<wbr/>control.<wbr/>af<wbr/>Regions
6644            </td>
6645            <td class="entry_type">
6646                <span class="entry_type_name">int32</span>
6647                <span class="entry_type_container">x</span>
6648
6649                <span class="entry_type_array">
6650                  5 x area_count
6651                </span>
6652              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6653
6654
6655
6656
6657
6658
6659            </td> <!-- entry_type -->
6660
6661            <td class="entry_description">
6662              <p>List of metering areas to use for auto-focus.<wbr/></p>
6663            </td>
6664
6665            <td class="entry_units">
6666              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
6667            </td>
6668
6669            <td class="entry_range">
6670              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
6671<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
6672            </td>
6673
6674            <td class="entry_tags">
6675              <ul class="entry_tags">
6676                  <li><a href="#tag_BC">BC</a></li>
6677              </ul>
6678            </td>
6679
6680          </tr>
6681          <tr class="entries_header">
6682            <th class="th_details" colspan="5">Details</th>
6683          </tr>
6684          <tr class="entry_cont">
6685            <td class="entry_details" colspan="5">
6686              <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
6687Otherwise will always be present.<wbr/></p>
6688<p>The maximum number of focus areas supported by the device is determined by the value
6689of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
6690<p>The coordinate system is based on the active pixel array,<wbr/>
6691with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
6692(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6693<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
6694bottom-right pixel in the active pixel array.<wbr/></p>
6695<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
6696for every pixel in the area.<wbr/> This means that a large metering area
6697with the same weight as a smaller area will have more effect in
6698the metering result.<wbr/> Metering areas can partially overlap and the
6699camera device will add the weights in the overlap region.<wbr/></p>
6700<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
6701is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
6702ignored.<wbr/></p>
6703<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
6704camera device.<wbr/></p>
6705<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
6706capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
6707region and output only the intersection rectangle as the metering region in the result
6708metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
6709not reported in the result metadata.<wbr/></p>
6710            </td>
6711          </tr>
6712
6713          <tr class="entries_header">
6714            <th class="th_details" colspan="5">HAL Implementation Details</th>
6715          </tr>
6716          <tr class="entry_cont">
6717            <td class="entry_details" colspan="5">
6718              <p>The HAL level representation of MeteringRectangle[] is a
6719int[5 * area_<wbr/>count].<wbr/>
6720Every five elements represent a metering region of
6721(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6722The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6723exclusive on xmax and ymax.<wbr/></p>
6724            </td>
6725          </tr>
6726
6727          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6728           <!-- end of entry -->
6729        
6730                
6731          <tr class="entry" id="dynamic_android.control.afTrigger">
6732            <td class="entry_name
6733             " rowspan="5">
6734              android.<wbr/>control.<wbr/>af<wbr/>Trigger
6735            </td>
6736            <td class="entry_type">
6737                <span class="entry_type_name entry_type_name_enum">byte</span>
6738
6739              <span class="entry_type_visibility"> [public]</span>
6740
6741
6742              <span class="entry_type_hwlevel">[legacy] </span>
6743
6744
6745
6746                <ul class="entry_type_enum">
6747                  <li>
6748                    <span class="entry_type_enum_name">IDLE</span>
6749                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6750                  </li>
6751                  <li>
6752                    <span class="entry_type_enum_name">START</span>
6753                    <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
6754                  </li>
6755                  <li>
6756                    <span class="entry_type_enum_name">CANCEL</span>
6757                    <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
6758state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
6759                  </li>
6760                </ul>
6761
6762            </td> <!-- entry_type -->
6763
6764            <td class="entry_description">
6765              <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
6766            </td>
6767
6768            <td class="entry_units">
6769            </td>
6770
6771            <td class="entry_range">
6772            </td>
6773
6774            <td class="entry_tags">
6775              <ul class="entry_tags">
6776                  <li><a href="#tag_BC">BC</a></li>
6777              </ul>
6778            </td>
6779
6780          </tr>
6781          <tr class="entries_header">
6782            <th class="th_details" colspan="5">Details</th>
6783          </tr>
6784          <tr class="entry_cont">
6785            <td class="entry_details" colspan="5">
6786              <p>This entry is normally set to IDLE,<wbr/> or is not
6787included at all in the request settings.<wbr/></p>
6788<p>When included and set to START,<wbr/> the camera device will trigger the
6789autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
6790<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
6791and return to its initial AF state.<wbr/></p>
6792<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
6793single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
6794START for multiple captures in a row means restarting the AF operation over
6795and over again.<wbr/></p>
6796<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>
6797<p>Using the autofocus trigger and the precapture trigger <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>
6798simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
6799the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
6800focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
6801trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
6802changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
6803            </td>
6804          </tr>
6805
6806          <tr class="entries_header">
6807            <th class="th_details" colspan="5">HAL Implementation Details</th>
6808          </tr>
6809          <tr class="entry_cont">
6810            <td class="entry_details" colspan="5">
6811              <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
6812(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
6813treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
6814AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
6815to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
6816            </td>
6817          </tr>
6818
6819          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6820           <!-- end of entry -->
6821        
6822                
6823          <tr class="entry" id="dynamic_android.control.afState">
6824            <td class="entry_name
6825             " rowspan="3">
6826              android.<wbr/>control.<wbr/>af<wbr/>State
6827            </td>
6828            <td class="entry_type">
6829                <span class="entry_type_name entry_type_name_enum">byte</span>
6830
6831              <span class="entry_type_visibility"> [public]</span>
6832
6833
6834              <span class="entry_type_hwlevel">[legacy] </span>
6835
6836
6837
6838                <ul class="entry_type_enum">
6839                  <li>
6840                    <span class="entry_type_enum_name">INACTIVE</span>
6841                    <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
6842to scan.<wbr/></p>
6843<p>When a camera device is opened,<wbr/> it starts in this
6844state.<wbr/> This is a transient state,<wbr/> the camera device may
6845skip reporting this state in capture
6846result.<wbr/></p></span>
6847                  </li>
6848                  <li>
6849                    <span class="entry_type_enum_name">PASSIVE_SCAN</span>
6850                    <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
6851camera device in a continuous autofocus mode.<wbr/></p>
6852<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
6853state,<wbr/> the camera device may skip reporting this state in
6854capture result.<wbr/></p></span>
6855                  </li>
6856                  <li>
6857                    <span class="entry_type_enum_name">PASSIVE_FOCUSED</span>
6858                    <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
6859restart scanning at any time.<wbr/></p>
6860<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
6861state,<wbr/> the camera device may skip reporting this state in
6862capture result.<wbr/></p></span>
6863                  </li>
6864                  <li>
6865                    <span class="entry_type_enum_name">ACTIVE_SCAN</span>
6866                    <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
6867triggered by AF trigger.<wbr/></p>
6868<p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
6869state,<wbr/> the camera device may skip reporting this state in
6870capture result.<wbr/></p></span>
6871                  </li>
6872                  <li>
6873                    <span class="entry_type_enum_name">FOCUSED_LOCKED</span>
6874                    <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
6875focus.<wbr/></p>
6876<p>This state is reached only after an explicit START AF trigger has been
6877sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p>
6878<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
6879a 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>
6880                  </li>
6881                  <li>
6882                    <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span>
6883                    <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
6884focus.<wbr/></p>
6885<p>This state is reached only after an explicit START AF trigger has been
6886sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p>
6887<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
6888a 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>
6889                  </li>
6890                  <li>
6891                    <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span>
6892                    <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
6893and may restart scanning at any time.<wbr/></p>
6894<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
6895device may skip reporting this state in capture result.<wbr/></p>
6896<p>LEGACY camera devices do not support this state.<wbr/> When a passive
6897scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span>
6898                  </li>
6899                </ul>
6900
6901            </td> <!-- entry_type -->
6902
6903            <td class="entry_description">
6904              <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
6905            </td>
6906
6907            <td class="entry_units">
6908            </td>
6909
6910            <td class="entry_range">
6911            </td>
6912
6913            <td class="entry_tags">
6914            </td>
6915
6916          </tr>
6917          <tr class="entries_header">
6918            <th class="th_details" colspan="5">Details</th>
6919          </tr>
6920          <tr class="entry_cont">
6921            <td class="entry_details" colspan="5">
6922              <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
6923resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6924or <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
6925the algorithm states to INACTIVE.<wbr/></p>
6926<p>The camera device can do several state transitions between two results,<wbr/> if it is
6927allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6928seen in a result.<wbr/></p>
6929<p>The state in the result is the state for this image (in sync with this image): if
6930AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
6931be sharp.<wbr/></p>
6932<p>Below are state transition tables for different AF modes.<wbr/></p>
6933<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>
6934<table>
6935<thead>
6936<tr>
6937<th align="center">State</th>
6938<th align="center">Transition Cause</th>
6939<th align="center">New State</th>
6940<th align="center">Notes</th>
6941</tr>
6942</thead>
6943<tbody>
6944<tr>
6945<td align="center">INACTIVE</td>
6946<td align="center"></td>
6947<td align="center">INACTIVE</td>
6948<td align="center">Never changes</td>
6949</tr>
6950</tbody>
6951</table>
6952<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>
6953<table>
6954<thead>
6955<tr>
6956<th align="center">State</th>
6957<th align="center">Transition Cause</th>
6958<th align="center">New State</th>
6959<th align="center">Notes</th>
6960</tr>
6961</thead>
6962<tbody>
6963<tr>
6964<td align="center">INACTIVE</td>
6965<td align="center">AF_<wbr/>TRIGGER</td>
6966<td align="center">ACTIVE_<wbr/>SCAN</td>
6967<td align="center">Start AF sweep,<wbr/> Lens now moving</td>
6968</tr>
6969<tr>
6970<td align="center">ACTIVE_<wbr/>SCAN</td>
6971<td align="center">AF sweep done</td>
6972<td align="center">FOCUSED_<wbr/>LOCKED</td>
6973<td align="center">Focused,<wbr/> Lens now locked</td>
6974</tr>
6975<tr>
6976<td align="center">ACTIVE_<wbr/>SCAN</td>
6977<td align="center">AF sweep done</td>
6978<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6979<td align="center">Not focused,<wbr/> Lens now locked</td>
6980</tr>
6981<tr>
6982<td align="center">ACTIVE_<wbr/>SCAN</td>
6983<td align="center">AF_<wbr/>CANCEL</td>
6984<td align="center">INACTIVE</td>
6985<td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
6986</tr>
6987<tr>
6988<td align="center">FOCUSED_<wbr/>LOCKED</td>
6989<td align="center">AF_<wbr/>CANCEL</td>
6990<td align="center">INACTIVE</td>
6991<td align="center">Cancel/<wbr/>reset AF</td>
6992</tr>
6993<tr>
6994<td align="center">FOCUSED_<wbr/>LOCKED</td>
6995<td align="center">AF_<wbr/>TRIGGER</td>
6996<td align="center">ACTIVE_<wbr/>SCAN</td>
6997<td align="center">Start new sweep,<wbr/> Lens now moving</td>
6998</tr>
6999<tr>
7000<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7001<td align="center">AF_<wbr/>CANCEL</td>
7002<td align="center">INACTIVE</td>
7003<td align="center">Cancel/<wbr/>reset AF</td>
7004</tr>
7005<tr>
7006<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7007<td align="center">AF_<wbr/>TRIGGER</td>
7008<td align="center">ACTIVE_<wbr/>SCAN</td>
7009<td align="center">Start new sweep,<wbr/> Lens now moving</td>
7010</tr>
7011<tr>
7012<td align="center">Any state</td>
7013<td align="center">Mode change</td>
7014<td align="center">INACTIVE</td>
7015<td align="center"></td>
7016</tr>
7017</tbody>
7018</table>
7019<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7020without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7021can be skipped in that manner is called a transient state.<wbr/></p>
7022<p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
7023state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
7024one or more transient states between two results.<wbr/> See below table for examples:</p>
7025<table>
7026<thead>
7027<tr>
7028<th align="center">State</th>
7029<th align="center">Transition Cause</th>
7030<th align="center">New State</th>
7031<th align="center">Notes</th>
7032</tr>
7033</thead>
7034<tbody>
7035<tr>
7036<td align="center">INACTIVE</td>
7037<td align="center">AF_<wbr/>TRIGGER</td>
7038<td align="center">FOCUSED_<wbr/>LOCKED</td>
7039<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7040</tr>
7041<tr>
7042<td align="center">INACTIVE</td>
7043<td align="center">AF_<wbr/>TRIGGER</td>
7044<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7045<td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></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">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7052</tr>
7053<tr>
7054<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7055<td align="center">AF_<wbr/>TRIGGER</td>
7056<td align="center">FOCUSED_<wbr/>LOCKED</td>
7057<td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
7058</tr>
7059</tbody>
7060</table>
7061<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>
7062<table>
7063<thead>
7064<tr>
7065<th align="center">State</th>
7066<th align="center">Transition Cause</th>
7067<th align="center">New State</th>
7068<th align="center">Notes</th>
7069</tr>
7070</thead>
7071<tbody>
7072<tr>
7073<td align="center">INACTIVE</td>
7074<td align="center">Camera device initiates new scan</td>
7075<td align="center">PASSIVE_<wbr/>SCAN</td>
7076<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7077</tr>
7078<tr>
7079<td align="center">INACTIVE</td>
7080<td align="center">AF_<wbr/>TRIGGER</td>
7081<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7082<td align="center">AF state query,<wbr/> Lens now locked</td>
7083</tr>
7084<tr>
7085<td align="center">PASSIVE_<wbr/>SCAN</td>
7086<td align="center">Camera device completes current scan</td>
7087<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7088<td align="center">End AF scan,<wbr/> Lens now locked</td>
7089</tr>
7090<tr>
7091<td align="center">PASSIVE_<wbr/>SCAN</td>
7092<td align="center">Camera device fails current scan</td>
7093<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7094<td align="center">End AF scan,<wbr/> Lens now locked</td>
7095</tr>
7096<tr>
7097<td align="center">PASSIVE_<wbr/>SCAN</td>
7098<td align="center">AF_<wbr/>TRIGGER</td>
7099<td align="center">FOCUSED_<wbr/>LOCKED</td>
7100<td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td>
7101</tr>
7102<tr>
7103<td align="center">PASSIVE_<wbr/>SCAN</td>
7104<td align="center">AF_<wbr/>TRIGGER</td>
7105<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7106<td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td>
7107</tr>
7108<tr>
7109<td align="center">PASSIVE_<wbr/>SCAN</td>
7110<td align="center">AF_<wbr/>CANCEL</td>
7111<td align="center">INACTIVE</td>
7112<td align="center">Reset lens position,<wbr/> Lens now locked</td>
7113</tr>
7114<tr>
7115<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7116<td align="center">Camera device initiates new scan</td>
7117<td align="center">PASSIVE_<wbr/>SCAN</td>
7118<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7119</tr>
7120<tr>
7121<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7122<td align="center">Camera device initiates new scan</td>
7123<td align="center">PASSIVE_<wbr/>SCAN</td>
7124<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7125</tr>
7126<tr>
7127<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7128<td align="center">AF_<wbr/>TRIGGER</td>
7129<td align="center">FOCUSED_<wbr/>LOCKED</td>
7130<td align="center">Immediate transition,<wbr/> lens now locked</td>
7131</tr>
7132<tr>
7133<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7134<td align="center">AF_<wbr/>TRIGGER</td>
7135<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7136<td align="center">Immediate transition,<wbr/> lens now locked</td>
7137</tr>
7138<tr>
7139<td align="center">FOCUSED_<wbr/>LOCKED</td>
7140<td align="center">AF_<wbr/>TRIGGER</td>
7141<td align="center">FOCUSED_<wbr/>LOCKED</td>
7142<td align="center">No effect</td>
7143</tr>
7144<tr>
7145<td align="center">FOCUSED_<wbr/>LOCKED</td>
7146<td align="center">AF_<wbr/>CANCEL</td>
7147<td align="center">INACTIVE</td>
7148<td align="center">Restart AF scan</td>
7149</tr>
7150<tr>
7151<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7152<td align="center">AF_<wbr/>TRIGGER</td>
7153<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7154<td align="center">No effect</td>
7155</tr>
7156<tr>
7157<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7158<td align="center">AF_<wbr/>CANCEL</td>
7159<td align="center">INACTIVE</td>
7160<td align="center">Restart AF scan</td>
7161</tr>
7162</tbody>
7163</table>
7164<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>
7165<table>
7166<thead>
7167<tr>
7168<th align="center">State</th>
7169<th align="center">Transition Cause</th>
7170<th align="center">New State</th>
7171<th align="center">Notes</th>
7172</tr>
7173</thead>
7174<tbody>
7175<tr>
7176<td align="center">INACTIVE</td>
7177<td align="center">Camera device initiates new scan</td>
7178<td align="center">PASSIVE_<wbr/>SCAN</td>
7179<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7180</tr>
7181<tr>
7182<td align="center">INACTIVE</td>
7183<td align="center">AF_<wbr/>TRIGGER</td>
7184<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7185<td align="center">AF state query,<wbr/> Lens now locked</td>
7186</tr>
7187<tr>
7188<td align="center">PASSIVE_<wbr/>SCAN</td>
7189<td align="center">Camera device completes current scan</td>
7190<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7191<td align="center">End AF scan,<wbr/> Lens now locked</td>
7192</tr>
7193<tr>
7194<td align="center">PASSIVE_<wbr/>SCAN</td>
7195<td align="center">Camera device fails current scan</td>
7196<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7197<td align="center">End AF scan,<wbr/> Lens now locked</td>
7198</tr>
7199<tr>
7200<td align="center">PASSIVE_<wbr/>SCAN</td>
7201<td align="center">AF_<wbr/>TRIGGER</td>
7202<td align="center">FOCUSED_<wbr/>LOCKED</td>
7203<td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td>
7204</tr>
7205<tr>
7206<td align="center">PASSIVE_<wbr/>SCAN</td>
7207<td align="center">AF_<wbr/>TRIGGER</td>
7208<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7209<td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td>
7210</tr>
7211<tr>
7212<td align="center">PASSIVE_<wbr/>SCAN</td>
7213<td align="center">AF_<wbr/>CANCEL</td>
7214<td align="center">INACTIVE</td>
7215<td align="center">Reset lens position,<wbr/> Lens now locked</td>
7216</tr>
7217<tr>
7218<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7219<td align="center">Camera device initiates new scan</td>
7220<td align="center">PASSIVE_<wbr/>SCAN</td>
7221<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7222</tr>
7223<tr>
7224<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7225<td align="center">Camera device initiates new scan</td>
7226<td align="center">PASSIVE_<wbr/>SCAN</td>
7227<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7228</tr>
7229<tr>
7230<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7231<td align="center">AF_<wbr/>TRIGGER</td>
7232<td align="center">FOCUSED_<wbr/>LOCKED</td>
7233<td align="center">Immediate trans.<wbr/> Lens now locked</td>
7234</tr>
7235<tr>
7236<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7237<td align="center">AF_<wbr/>TRIGGER</td>
7238<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7239<td align="center">Immediate trans.<wbr/> Lens now locked</td>
7240</tr>
7241<tr>
7242<td align="center">FOCUSED_<wbr/>LOCKED</td>
7243<td align="center">AF_<wbr/>TRIGGER</td>
7244<td align="center">FOCUSED_<wbr/>LOCKED</td>
7245<td align="center">No effect</td>
7246</tr>
7247<tr>
7248<td align="center">FOCUSED_<wbr/>LOCKED</td>
7249<td align="center">AF_<wbr/>CANCEL</td>
7250<td align="center">INACTIVE</td>
7251<td align="center">Restart AF scan</td>
7252</tr>
7253<tr>
7254<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7255<td align="center">AF_<wbr/>TRIGGER</td>
7256<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7257<td align="center">No effect</td>
7258</tr>
7259<tr>
7260<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7261<td align="center">AF_<wbr/>CANCEL</td>
7262<td align="center">INACTIVE</td>
7263<td align="center">Restart AF scan</td>
7264</tr>
7265</tbody>
7266</table>
7267<p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
7268(AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
7269camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
7270will be evaluated in the context of the new mode in the request.<wbr/>
7271See below table for examples:</p>
7272<table>
7273<thead>
7274<tr>
7275<th align="center">State</th>
7276<th align="center">Transition Cause</th>
7277<th align="center">New State</th>
7278<th align="center">Notes</th>
7279</tr>
7280</thead>
7281<tbody>
7282<tr>
7283<td align="center">any state</td>
7284<td align="center">CAF--&gt;AUTO mode switch</td>
7285<td align="center">INACTIVE</td>
7286<td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
7287</tr>
7288<tr>
7289<td align="center">any state</td>
7290<td align="center">CAF--&gt;AUTO mode switch with AF_<wbr/>TRIGGER</td>
7291<td align="center">trigger-reachable states from INACTIVE</td>
7292<td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
7293</tr>
7294<tr>
7295<td align="center">any state</td>
7296<td align="center">AUTO--&gt;CAF mode switch</td>
7297<td align="center">passively reachable states from INACTIVE</td>
7298<td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
7299</tr>
7300</tbody>
7301</table>
7302            </td>
7303          </tr>
7304
7305
7306          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7307           <!-- end of entry -->
7308        
7309                
7310          <tr class="entry" id="dynamic_android.control.afTriggerId">
7311            <td class="entry_name
7312                entry_name_deprecated
7313             " rowspan="3">
7314              android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
7315            </td>
7316            <td class="entry_type">
7317                <span class="entry_type_name">int32</span>
7318
7319              <span class="entry_type_visibility"> [system]</span>
7320
7321
7322
7323              <span class="entry_type_deprecated">[deprecated] </span>
7324
7325
7326
7327            </td> <!-- entry_type -->
7328
7329            <td class="entry_description">
7330              <p>The ID sent with the latest
7331CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
7332            </td>
7333
7334            <td class="entry_units">
7335            </td>
7336
7337            <td class="entry_range">
7338              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
7339            </td>
7340
7341            <td class="entry_tags">
7342            </td>
7343
7344          </tr>
7345          <tr class="entries_header">
7346            <th class="th_details" colspan="5">Details</th>
7347          </tr>
7348          <tr class="entry_cont">
7349            <td class="entry_details" colspan="5">
7350              <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
7351received yet by HAL.<wbr/> Always updated even if AF algorithm
7352ignores the trigger</p>
7353            </td>
7354          </tr>
7355
7356
7357          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7358           <!-- end of entry -->
7359        
7360                
7361          <tr class="entry" id="dynamic_android.control.awbLock">
7362            <td class="entry_name
7363             " rowspan="3">
7364              android.<wbr/>control.<wbr/>awb<wbr/>Lock
7365            </td>
7366            <td class="entry_type">
7367                <span class="entry_type_name entry_type_name_enum">byte</span>
7368
7369              <span class="entry_type_visibility"> [public as boolean]</span>
7370
7371
7372              <span class="entry_type_hwlevel">[legacy] </span>
7373
7374
7375
7376                <ul class="entry_type_enum">
7377                  <li>
7378                    <span class="entry_type_enum_name">OFF</span>
7379                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
7380algorithm is free to update its parameters if in AUTO
7381mode.<wbr/></p></span>
7382                  </li>
7383                  <li>
7384                    <span class="entry_type_enum_name">ON</span>
7385                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
7386algorithm will not update its parameters while the lock
7387is active.<wbr/></p></span>
7388                  </li>
7389                </ul>
7390
7391            </td> <!-- entry_type -->
7392
7393            <td class="entry_description">
7394              <p>Whether auto-white balance (AWB) is currently locked to its
7395latest calculated values.<wbr/></p>
7396            </td>
7397
7398            <td class="entry_units">
7399            </td>
7400
7401            <td class="entry_range">
7402            </td>
7403
7404            <td class="entry_tags">
7405              <ul class="entry_tags">
7406                  <li><a href="#tag_BC">BC</a></li>
7407              </ul>
7408            </td>
7409
7410          </tr>
7411          <tr class="entries_header">
7412            <th class="th_details" colspan="5">Details</th>
7413          </tr>
7414          <tr class="entry_cont">
7415            <td class="entry_details" colspan="5">
7416              <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
7417and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
7418<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
7419get locked do not necessarily correspond to the settings that were present in the
7420latest capture result received from the camera device,<wbr/> since additional captures
7421and AWB updates may have occurred even before the result was sent out.<wbr/> If an
7422application is switching between automatic and manual control and wishes to eliminate
7423any flicker during the switch,<wbr/> the following procedure is recommended:</p>
7424<ol>
7425<li>Starting in auto-AWB mode:</li>
7426<li>Lock AWB</li>
7427<li>Wait for the first result to be output that has the AWB locked</li>
7428<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
7429<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
7430</ol>
7431<p>Note that AWB lock is only meaningful when
7432<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
7433AWB is already fixed to a specific setting.<wbr/></p>
7434<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
7435            </td>
7436          </tr>
7437
7438
7439          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7440           <!-- end of entry -->
7441        
7442                
7443          <tr class="entry" id="dynamic_android.control.awbMode">
7444            <td class="entry_name
7445             " rowspan="3">
7446              android.<wbr/>control.<wbr/>awb<wbr/>Mode
7447            </td>
7448            <td class="entry_type">
7449                <span class="entry_type_name entry_type_name_enum">byte</span>
7450
7451              <span class="entry_type_visibility"> [public]</span>
7452
7453
7454              <span class="entry_type_hwlevel">[legacy] </span>
7455
7456
7457
7458                <ul class="entry_type_enum">
7459                  <li>
7460                    <span class="entry_type_enum_name">OFF</span>
7461                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
7462<p>The application-selected color transform matrix
7463(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
7464(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
7465device for manual white balance control.<wbr/></p></span>
7466                  </li>
7467                  <li>
7468                    <span class="entry_type_enum_name">AUTO</span>
7469                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
7470<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7471and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7472For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7473values used by the camera device for the transform and gains
7474will be available in the capture result for this request.<wbr/></p></span>
7475                  </li>
7476                  <li>
7477                    <span class="entry_type_enum_name">INCANDESCENT</span>
7478                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7479the camera device uses incandescent light as the assumed scene
7480illumination for white balance.<wbr/></p>
7481<p>While the exact white balance transforms are up to the
7482camera device,<wbr/> they will approximately match the CIE
7483standard illuminant A.<wbr/></p>
7484<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7485and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7486For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7487values used by the camera device for the transform and gains
7488will be available in the capture result for this request.<wbr/></p></span>
7489                  </li>
7490                  <li>
7491                    <span class="entry_type_enum_name">FLUORESCENT</span>
7492                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7493the camera device uses fluorescent light as the assumed scene
7494illumination for white balance.<wbr/></p>
7495<p>While the exact white balance transforms are up to the
7496camera device,<wbr/> they will approximately match the CIE
7497standard illuminant F2.<wbr/></p>
7498<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7499and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7500For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7501values used by the camera device for the transform and gains
7502will be available in the capture result for this request.<wbr/></p></span>
7503                  </li>
7504                  <li>
7505                    <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
7506                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7507the camera device uses warm fluorescent light as the assumed scene
7508illumination for white balance.<wbr/></p>
7509<p>While the exact white balance transforms are up to the
7510camera device,<wbr/> they will approximately match the CIE
7511standard illuminant F4.<wbr/></p>
7512<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7513and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7514For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7515values used by the camera device for the transform and gains
7516will be available in the capture result for this request.<wbr/></p></span>
7517                  </li>
7518                  <li>
7519                    <span class="entry_type_enum_name">DAYLIGHT</span>
7520                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7521the camera device uses daylight light as the assumed scene
7522illumination for white balance.<wbr/></p>
7523<p>While the exact white balance transforms are up to the
7524camera device,<wbr/> they will approximately match the CIE
7525standard illuminant D65.<wbr/></p>
7526<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7527and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7528For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7529values used by the camera device for the transform and gains
7530will be available in the capture result for this request.<wbr/></p></span>
7531                  </li>
7532                  <li>
7533                    <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
7534                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7535the camera device uses cloudy daylight light as the assumed scene
7536illumination for white balance.<wbr/></p>
7537<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7538and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7539For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7540values used by the camera device for the transform and gains
7541will be available in the capture result for this request.<wbr/></p></span>
7542                  </li>
7543                  <li>
7544                    <span class="entry_type_enum_name">TWILIGHT</span>
7545                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7546the camera device uses twilight light as the assumed scene
7547illumination for white balance.<wbr/></p>
7548<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7549and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7550For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7551values used by the camera device for the transform and gains
7552will be available in the capture result for this request.<wbr/></p></span>
7553                  </li>
7554                  <li>
7555                    <span class="entry_type_enum_name">SHADE</span>
7556                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7557the camera device uses shade light as the assumed scene
7558illumination for white balance.<wbr/></p>
7559<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7560and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7561For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7562values used by the camera device for the transform and gains
7563will be available in the capture result for this request.<wbr/></p></span>
7564                  </li>
7565                </ul>
7566
7567            </td> <!-- entry_type -->
7568
7569            <td class="entry_description">
7570              <p>Whether auto-white balance (AWB) is currently setting the color
7571transform fields,<wbr/> and what its illumination target
7572is.<wbr/></p>
7573            </td>
7574
7575            <td class="entry_units">
7576            </td>
7577
7578            <td class="entry_range">
7579              <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
7580            </td>
7581
7582            <td class="entry_tags">
7583              <ul class="entry_tags">
7584                  <li><a href="#tag_BC">BC</a></li>
7585              </ul>
7586            </td>
7587
7588          </tr>
7589          <tr class="entries_header">
7590            <th class="th_details" colspan="5">Details</th>
7591          </tr>
7592          <tr class="entry_cont">
7593            <td class="entry_details" colspan="5">
7594              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
7595<p>When set to the ON mode,<wbr/> the camera device's auto-white balance
7596routine is enabled,<wbr/> overriding the application's selected
7597<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
7598<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>
7599is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
7600also 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
7601setting AE mode to OFF.<wbr/></p>
7602<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
7603routine is disabled.<wbr/> The application manually controls the white
7604balance 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>
7605and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
7606<p>When set to any other modes,<wbr/> the camera device's auto-white
7607balance routine is disabled.<wbr/> The camera device uses each
7608particular illumination target for white balance
7609adjustment.<wbr/> The application's values for
7610<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
7611<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
7612<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
7613            </td>
7614          </tr>
7615
7616
7617          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7618           <!-- end of entry -->
7619        
7620                
7621          <tr class="entry" id="dynamic_android.control.awbRegions">
7622            <td class="entry_name
7623             " rowspan="5">
7624              android.<wbr/>control.<wbr/>awb<wbr/>Regions
7625            </td>
7626            <td class="entry_type">
7627                <span class="entry_type_name">int32</span>
7628                <span class="entry_type_container">x</span>
7629
7630                <span class="entry_type_array">
7631                  5 x area_count
7632                </span>
7633              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
7634
7635
7636
7637
7638
7639
7640            </td> <!-- entry_type -->
7641
7642            <td class="entry_description">
7643              <p>List of metering areas to use for auto-white-balance illuminant
7644estimation.<wbr/></p>
7645            </td>
7646
7647            <td class="entry_units">
7648              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
7649            </td>
7650
7651            <td class="entry_range">
7652              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
7653<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
7654            </td>
7655
7656            <td class="entry_tags">
7657              <ul class="entry_tags">
7658                  <li><a href="#tag_BC">BC</a></li>
7659              </ul>
7660            </td>
7661
7662          </tr>
7663          <tr class="entries_header">
7664            <th class="th_details" colspan="5">Details</th>
7665          </tr>
7666          <tr class="entry_cont">
7667            <td class="entry_details" colspan="5">
7668              <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
7669Otherwise will always be present.<wbr/></p>
7670<p>The maximum number of regions supported by the device is determined by the value
7671of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
7672<p>The coordinate system is based on the active pixel array,<wbr/>
7673with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
7674(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7675<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
7676bottom-right pixel in the active pixel array.<wbr/></p>
7677<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
7678for every pixel in the area.<wbr/> This means that a large metering area
7679with the same weight as a smaller area will have more effect in
7680the metering result.<wbr/> Metering areas can partially overlap and the
7681camera device will add the weights in the overlap region.<wbr/></p>
7682<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
7683only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
76840 weight is ignored.<wbr/></p>
7685<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
7686camera device.<wbr/></p>
7687<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
7688capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
7689region and output only the intersection rectangle as the metering region in the result
7690metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
7691not reported in the result metadata.<wbr/></p>
7692            </td>
7693          </tr>
7694
7695          <tr class="entries_header">
7696            <th class="th_details" colspan="5">HAL Implementation Details</th>
7697          </tr>
7698          <tr class="entry_cont">
7699            <td class="entry_details" colspan="5">
7700              <p>The HAL level representation of MeteringRectangle[] is a
7701int[5 * area_<wbr/>count].<wbr/>
7702Every five elements represent a metering region of
7703(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
7704The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
7705exclusive on xmax and ymax.<wbr/></p>
7706            </td>
7707          </tr>
7708
7709          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7710           <!-- end of entry -->
7711        
7712                
7713          <tr class="entry" id="dynamic_android.control.captureIntent">
7714            <td class="entry_name
7715             " rowspan="3">
7716              android.<wbr/>control.<wbr/>capture<wbr/>Intent
7717            </td>
7718            <td class="entry_type">
7719                <span class="entry_type_name entry_type_name_enum">byte</span>
7720
7721              <span class="entry_type_visibility"> [public]</span>
7722
7723
7724              <span class="entry_type_hwlevel">[legacy] </span>
7725
7726
7727
7728                <ul class="entry_type_enum">
7729                  <li>
7730                    <span class="entry_type_enum_name">CUSTOM</span>
7731                    <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
7732categories.<wbr/> The camera device will default to preview-like
7733behavior.<wbr/></p></span>
7734                  </li>
7735                  <li>
7736                    <span class="entry_type_enum_name">PREVIEW</span>
7737                    <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
7738<p>The precapture trigger may be used to start off a metering
7739w/<wbr/>flash sequence.<wbr/></p></span>
7740                  </li>
7741                  <li>
7742                    <span class="entry_type_enum_name">STILL_CAPTURE</span>
7743                    <span class="entry_type_enum_notes"><p>This request is for a still capture-type
7744use case.<wbr/></p>
7745<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
7746                  </li>
7747                  <li>
7748                    <span class="entry_type_enum_name">VIDEO_RECORD</span>
7749                    <span class="entry_type_enum_notes"><p>This request is for a video recording
7750use case.<wbr/></p></span>
7751                  </li>
7752                  <li>
7753                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
7754                    <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
7755image while recording video) use case.<wbr/></p>
7756<p>The camera device should take the highest-quality image
7757possible (given the other settings) without disrupting the
7758frame rate of video recording.<wbr/>  </p></span>
7759                  </li>
7760                  <li>
7761                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
7762                    <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
7763application will stream full-resolution images and
7764reprocess one or several later for a final
7765capture.<wbr/></p></span>
7766                  </li>
7767                  <li>
7768                    <span class="entry_type_enum_name">MANUAL</span>
7769                    <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
7770the applications want to directly control the capture parameters.<wbr/></p>
7771<p>For example,<wbr/> the application may wish to manually control
7772<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>
7773                  </li>
7774                </ul>
7775
7776            </td> <!-- entry_type -->
7777
7778            <td class="entry_description">
7779              <p>Information to the camera device 3A (auto-exposure,<wbr/>
7780auto-focus,<wbr/> auto-white balance) routines about the purpose
7781of this capture,<wbr/> to help the camera device to decide optimal 3A
7782strategy.<wbr/></p>
7783            </td>
7784
7785            <td class="entry_units">
7786            </td>
7787
7788            <td class="entry_range">
7789            </td>
7790
7791            <td class="entry_tags">
7792              <ul class="entry_tags">
7793                  <li><a href="#tag_BC">BC</a></li>
7794              </ul>
7795            </td>
7796
7797          </tr>
7798          <tr class="entries_header">
7799            <th class="th_details" colspan="5">Details</th>
7800          </tr>
7801          <tr class="entry_cont">
7802            <td class="entry_details" colspan="5">
7803              <p>This control (except for MANUAL) is only effective if
7804<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
7805<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
7806contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
7807<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
7808always supported.<wbr/></p>
7809            </td>
7810          </tr>
7811
7812
7813          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7814           <!-- end of entry -->
7815        
7816                
7817          <tr class="entry" id="dynamic_android.control.awbState">
7818            <td class="entry_name
7819             " rowspan="3">
7820              android.<wbr/>control.<wbr/>awb<wbr/>State
7821            </td>
7822            <td class="entry_type">
7823                <span class="entry_type_name entry_type_name_enum">byte</span>
7824
7825              <span class="entry_type_visibility"> [public]</span>
7826
7827
7828              <span class="entry_type_hwlevel">[limited] </span>
7829
7830
7831
7832                <ul class="entry_type_enum">
7833                  <li>
7834                    <span class="entry_type_enum_name">INACTIVE</span>
7835                    <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
7836<p>When a camera device is opened,<wbr/> it starts in this
7837state.<wbr/> This is a transient state,<wbr/> the camera device may
7838skip reporting this state in capture
7839result.<wbr/></p></span>
7840                  </li>
7841                  <li>
7842                    <span class="entry_type_enum_name">SEARCHING</span>
7843                    <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
7844values for the current scene.<wbr/></p>
7845<p>This is a transient state,<wbr/> the camera device
7846may skip reporting this state in capture result.<wbr/></p></span>
7847                  </li>
7848                  <li>
7849                    <span class="entry_type_enum_name">CONVERGED</span>
7850                    <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
7851current scene.<wbr/></p></span>
7852                  </li>
7853                  <li>
7854                    <span class="entry_type_enum_name">LOCKED</span>
7855                    <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
7856                  </li>
7857                </ul>
7858
7859            </td> <!-- entry_type -->
7860
7861            <td class="entry_description">
7862              <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
7863            </td>
7864
7865            <td class="entry_units">
7866            </td>
7867
7868            <td class="entry_range">
7869            </td>
7870
7871            <td class="entry_tags">
7872            </td>
7873
7874          </tr>
7875          <tr class="entries_header">
7876            <th class="th_details" colspan="5">Details</th>
7877          </tr>
7878          <tr class="entry_cont">
7879            <td class="entry_details" colspan="5">
7880              <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
7881resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
7882or <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
7883the algorithm states to INACTIVE.<wbr/></p>
7884<p>The camera device can do several state transitions between two results,<wbr/> if it is
7885allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
7886a result.<wbr/></p>
7887<p>The state in the result is the state for this image (in sync with this image): if
7888AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
7889be good to use.<wbr/></p>
7890<p>Below are state transition tables for different AWB modes.<wbr/></p>
7891<p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p>
7892<table>
7893<thead>
7894<tr>
7895<th align="center">State</th>
7896<th align="center">Transition Cause</th>
7897<th align="center">New State</th>
7898<th align="center">Notes</th>
7899</tr>
7900</thead>
7901<tbody>
7902<tr>
7903<td align="center">INACTIVE</td>
7904<td align="center"></td>
7905<td align="center">INACTIVE</td>
7906<td align="center">Camera device auto white balance algorithm is disabled</td>
7907</tr>
7908</tbody>
7909</table>
7910<p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
7911<table>
7912<thead>
7913<tr>
7914<th align="center">State</th>
7915<th align="center">Transition Cause</th>
7916<th align="center">New State</th>
7917<th align="center">Notes</th>
7918</tr>
7919</thead>
7920<tbody>
7921<tr>
7922<td align="center">INACTIVE</td>
7923<td align="center">Camera device initiates AWB scan</td>
7924<td align="center">SEARCHING</td>
7925<td align="center">Values changing</td>
7926</tr>
7927<tr>
7928<td align="center">INACTIVE</td>
7929<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
7930<td align="center">LOCKED</td>
7931<td align="center">Values locked</td>
7932</tr>
7933<tr>
7934<td align="center">SEARCHING</td>
7935<td align="center">Camera device finishes AWB scan</td>
7936<td align="center">CONVERGED</td>
7937<td align="center">Good values,<wbr/> not changing</td>
7938</tr>
7939<tr>
7940<td align="center">SEARCHING</td>
7941<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
7942<td align="center">LOCKED</td>
7943<td align="center">Values locked</td>
7944</tr>
7945<tr>
7946<td align="center">CONVERGED</td>
7947<td align="center">Camera device initiates AWB scan</td>
7948<td align="center">SEARCHING</td>
7949<td align="center">Values changing</td>
7950</tr>
7951<tr>
7952<td align="center">CONVERGED</td>
7953<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
7954<td align="center">LOCKED</td>
7955<td align="center">Values locked</td>
7956</tr>
7957<tr>
7958<td align="center">LOCKED</td>
7959<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
7960<td align="center">SEARCHING</td>
7961<td align="center">Values not good after unlock</td>
7962</tr>
7963</tbody>
7964</table>
7965<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7966without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7967can be skipped in that manner is called a transient state.<wbr/></p>
7968<p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
7969listed in above table,<wbr/> it is also legal for the camera device to skip one or more
7970transient states between two results.<wbr/> See below table for examples:</p>
7971<table>
7972<thead>
7973<tr>
7974<th align="center">State</th>
7975<th align="center">Transition Cause</th>
7976<th align="center">New State</th>
7977<th align="center">Notes</th>
7978</tr>
7979</thead>
7980<tbody>
7981<tr>
7982<td align="center">INACTIVE</td>
7983<td align="center">Camera device finished AWB scan</td>
7984<td align="center">CONVERGED</td>
7985<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
7986</tr>
7987<tr>
7988<td align="center">LOCKED</td>
7989<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
7990<td align="center">CONVERGED</td>
7991<td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
7992</tr>
7993</tbody>
7994</table>
7995            </td>
7996          </tr>
7997
7998
7999          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8000           <!-- end of entry -->
8001        
8002                
8003          <tr class="entry" id="dynamic_android.control.effectMode">
8004            <td class="entry_name
8005             " rowspan="3">
8006              android.<wbr/>control.<wbr/>effect<wbr/>Mode
8007            </td>
8008            <td class="entry_type">
8009                <span class="entry_type_name entry_type_name_enum">byte</span>
8010
8011              <span class="entry_type_visibility"> [public]</span>
8012
8013
8014              <span class="entry_type_hwlevel">[legacy] </span>
8015
8016
8017
8018                <ul class="entry_type_enum">
8019                  <li>
8020                    <span class="entry_type_enum_name">OFF</span>
8021                    <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
8022                  </li>
8023                  <li>
8024                    <span class="entry_type_enum_name">MONO</span>
8025                    <span class="entry_type_enum_optional">[optional]</span>
8026                    <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
8027a single color.<wbr/></p>
8028<p>This will typically be grayscale.<wbr/></p></span>
8029                  </li>
8030                  <li>
8031                    <span class="entry_type_enum_name">NEGATIVE</span>
8032                    <span class="entry_type_enum_optional">[optional]</span>
8033                    <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
8034are inverted.<wbr/></p></span>
8035                  </li>
8036                  <li>
8037                    <span class="entry_type_enum_name">SOLARIZE</span>
8038                    <span class="entry_type_enum_optional">[optional]</span>
8039                    <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
8040image is wholly or partially reversed in
8041tone.<wbr/></p></span>
8042                  </li>
8043                  <li>
8044                    <span class="entry_type_enum_name">SEPIA</span>
8045                    <span class="entry_type_enum_optional">[optional]</span>
8046                    <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
8047gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
8048                  </li>
8049                  <li>
8050                    <span class="entry_type_enum_name">POSTERIZE</span>
8051                    <span class="entry_type_enum_optional">[optional]</span>
8052                    <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
8053discrete regions of tone rather than a continuous
8054gradient of tones.<wbr/></p></span>
8055                  </li>
8056                  <li>
8057                    <span class="entry_type_enum_name">WHITEBOARD</span>
8058                    <span class="entry_type_enum_optional">[optional]</span>
8059                    <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
8060as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
8061                  </li>
8062                  <li>
8063                    <span class="entry_type_enum_name">BLACKBOARD</span>
8064                    <span class="entry_type_enum_optional">[optional]</span>
8065                    <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
8066as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
8067                  </li>
8068                  <li>
8069                    <span class="entry_type_enum_name">AQUA</span>
8070                    <span class="entry_type_enum_optional">[optional]</span>
8071                    <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
8072                  </li>
8073                </ul>
8074
8075            </td> <!-- entry_type -->
8076
8077            <td class="entry_description">
8078              <p>A special color effect to apply.<wbr/></p>
8079            </td>
8080
8081            <td class="entry_units">
8082            </td>
8083
8084            <td class="entry_range">
8085              <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
8086            </td>
8087
8088            <td class="entry_tags">
8089              <ul class="entry_tags">
8090                  <li><a href="#tag_BC">BC</a></li>
8091              </ul>
8092            </td>
8093
8094          </tr>
8095          <tr class="entries_header">
8096            <th class="th_details" colspan="5">Details</th>
8097          </tr>
8098          <tr class="entry_cont">
8099            <td class="entry_details" colspan="5">
8100              <p>When this mode is set,<wbr/> a color effect will be applied
8101to images produced by the camera device.<wbr/> The interpretation
8102and implementation of these color effects is left to the
8103implementor of the camera device,<wbr/> and should not be
8104depended on to be consistent (or present) across all
8105devices.<wbr/></p>
8106            </td>
8107          </tr>
8108
8109
8110          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8111           <!-- end of entry -->
8112        
8113                
8114          <tr class="entry" id="dynamic_android.control.mode">
8115            <td class="entry_name
8116             " rowspan="3">
8117              android.<wbr/>control.<wbr/>mode
8118            </td>
8119            <td class="entry_type">
8120                <span class="entry_type_name entry_type_name_enum">byte</span>
8121
8122              <span class="entry_type_visibility"> [public]</span>
8123
8124
8125              <span class="entry_type_hwlevel">[legacy] </span>
8126
8127
8128
8129                <ul class="entry_type_enum">
8130                  <li>
8131                    <span class="entry_type_enum_name">OFF</span>
8132                    <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
8133<p>All control by the device's metering and focusing (3A)
8134routines is disabled,<wbr/> and no other settings in
8135android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
8136<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
8137device to select post-processing values for processing
8138blocks that do not allow for manual control,<wbr/> or are not
8139exposed by the camera API.<wbr/></p>
8140<p>However,<wbr/> the camera device's 3A routines may continue to
8141collect statistics and update their internal state so that
8142when control is switched to AUTO mode,<wbr/> good control values
8143can be immediately applied.<wbr/></p></span>
8144                  </li>
8145                  <li>
8146                    <span class="entry_type_enum_name">AUTO</span>
8147                    <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
8148<p>Manual control of capture parameters is disabled.<wbr/> All
8149controls in android.<wbr/>control.<wbr/>* besides sceneMode take
8150effect.<wbr/></p></span>
8151                  </li>
8152                  <li>
8153                    <span class="entry_type_enum_name">USE_SCENE_MODE</span>
8154                    <span class="entry_type_enum_optional">[optional]</span>
8155                    <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
8156<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
8157control.<wbr/>afMode controls; the camera device will ignore
8158those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
8159FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
8160This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
8161<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
8162contain some modes other than DISABLED).<wbr/></p></span>
8163                  </li>
8164                  <li>
8165                    <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
8166                    <span class="entry_type_enum_optional">[optional]</span>
8167                    <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
8168used by camera device background auto-exposure,<wbr/> auto-white balance and
8169auto-focus algorithms (3A) to update their statistics.<wbr/></p>
8170<p>Specifically,<wbr/> the 3A routines are locked to the last
8171values set from a request with AUTO,<wbr/> OFF,<wbr/> or
8172USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
8173collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
8174discarded by the camera device.<wbr/></p></span>
8175                  </li>
8176                </ul>
8177
8178            </td> <!-- entry_type -->
8179
8180            <td class="entry_description">
8181              <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
8182routines.<wbr/></p>
8183            </td>
8184
8185            <td class="entry_units">
8186            </td>
8187
8188            <td class="entry_range">
8189              <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
8190            </td>
8191
8192            <td class="entry_tags">
8193              <ul class="entry_tags">
8194                  <li><a href="#tag_BC">BC</a></li>
8195              </ul>
8196            </td>
8197
8198          </tr>
8199          <tr class="entries_header">
8200            <th class="th_details" colspan="5">Details</th>
8201          </tr>
8202          <tr class="entry_cont">
8203            <td class="entry_details" colspan="5">
8204              <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
8205by the camera device is disabled.<wbr/> The application must set the fields for
8206capture parameters itself.<wbr/></p>
8207<p>When set to AUTO,<wbr/> the individual algorithm controls in
8208android.<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>
8209<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
8210android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
8211one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
8212as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
8213<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
8214<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
8215is that this frame will not be used by camera device background 3A statistics
8216update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
8217where the application doesn't want a 3A manual control capture to affect
8218the subsequent auto 3A capture results.<wbr/></p>
8219            </td>
8220          </tr>
8221
8222
8223          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8224           <!-- end of entry -->
8225        
8226                
8227          <tr class="entry" id="dynamic_android.control.sceneMode">
8228            <td class="entry_name
8229             " rowspan="5">
8230              android.<wbr/>control.<wbr/>scene<wbr/>Mode
8231            </td>
8232            <td class="entry_type">
8233                <span class="entry_type_name entry_type_name_enum">byte</span>
8234
8235              <span class="entry_type_visibility"> [public]</span>
8236
8237
8238              <span class="entry_type_hwlevel">[legacy] </span>
8239
8240
8241
8242                <ul class="entry_type_enum">
8243                  <li>
8244                    <span class="entry_type_enum_name">DISABLED</span>
8245                    <span class="entry_type_enum_value">0</span>
8246                    <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
8247                  </li>
8248                  <li>
8249                    <span class="entry_type_enum_name">FACE_PRIORITY</span>
8250                    <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
8251detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
8252auto-exposure routines.<wbr/></p>
8253<p>If face detection statistics are disabled
8254(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/>
8255this should still operate correctly (but will not return
8256face detection statistics to the framework).<wbr/></p>
8257<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8258<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>
8259remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
8260                  </li>
8261                  <li>
8262                    <span class="entry_type_enum_name">ACTION</span>
8263                    <span class="entry_type_enum_optional">[optional]</span>
8264                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
8265<p>Similar to SPORTS.<wbr/></p></span>
8266                  </li>
8267                  <li>
8268                    <span class="entry_type_enum_name">PORTRAIT</span>
8269                    <span class="entry_type_enum_optional">[optional]</span>
8270                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
8271                  </li>
8272                  <li>
8273                    <span class="entry_type_enum_name">LANDSCAPE</span>
8274                    <span class="entry_type_enum_optional">[optional]</span>
8275                    <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
8276                  </li>
8277                  <li>
8278                    <span class="entry_type_enum_name">NIGHT</span>
8279                    <span class="entry_type_enum_optional">[optional]</span>
8280                    <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
8281                  </li>
8282                  <li>
8283                    <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
8284                    <span class="entry_type_enum_optional">[optional]</span>
8285                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
8286settings.<wbr/></p></span>
8287                  </li>
8288                  <li>
8289                    <span class="entry_type_enum_name">THEATRE</span>
8290                    <span class="entry_type_enum_optional">[optional]</span>
8291                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
8292remain off.<wbr/></p></span>
8293                  </li>
8294                  <li>
8295                    <span class="entry_type_enum_name">BEACH</span>
8296                    <span class="entry_type_enum_optional">[optional]</span>
8297                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
8298                  </li>
8299                  <li>
8300                    <span class="entry_type_enum_name">SNOW</span>
8301                    <span class="entry_type_enum_optional">[optional]</span>
8302                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
8303                  </li>
8304                  <li>
8305                    <span class="entry_type_enum_name">SUNSET</span>
8306                    <span class="entry_type_enum_optional">[optional]</span>
8307                    <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
8308                  </li>
8309                  <li>
8310                    <span class="entry_type_enum_name">STEADYPHOTO</span>
8311                    <span class="entry_type_enum_optional">[optional]</span>
8312                    <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
8313device motion (for example: due to hand shake).<wbr/></p></span>
8314                  </li>
8315                  <li>
8316                    <span class="entry_type_enum_name">FIREWORKS</span>
8317                    <span class="entry_type_enum_optional">[optional]</span>
8318                    <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
8319                  </li>
8320                  <li>
8321                    <span class="entry_type_enum_name">SPORTS</span>
8322                    <span class="entry_type_enum_optional">[optional]</span>
8323                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
8324<p>Similar to ACTION.<wbr/></p></span>
8325                  </li>
8326                  <li>
8327                    <span class="entry_type_enum_name">PARTY</span>
8328                    <span class="entry_type_enum_optional">[optional]</span>
8329                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
8330people.<wbr/></p></span>
8331                  </li>
8332                  <li>
8333                    <span class="entry_type_enum_name">CANDLELIGHT</span>
8334                    <span class="entry_type_enum_optional">[optional]</span>
8335                    <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
8336is a flame.<wbr/></p></span>
8337                  </li>
8338                  <li>
8339                    <span class="entry_type_enum_name">BARCODE</span>
8340                    <span class="entry_type_enum_optional">[optional]</span>
8341                    <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
8342for use by camera applications that wish to read the
8343barcode value.<wbr/></p></span>
8344                  </li>
8345                  <li>
8346                    <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
8347                    <span class="entry_type_enum_deprecated">[deprecated]</span>
8348                    <span class="entry_type_enum_optional">[optional]</span>
8349                    <span class="entry_type_enum_notes"><p>This is deprecated,<wbr/> please use <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
8350and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
8351for high speed video recording.<wbr/></p>
8352<p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
8353<p>The supported high speed video sizes and fps ranges are specified in
8354<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
8355output frame rates,<wbr/> the application is only allowed to select video size
8356and fps range combinations listed in this static metadata.<wbr/> The fps range
8357can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
8358<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
8359ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
8360controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
8361and post-processing parameters is possible.<wbr/> All other controls operate the
8362same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
8363android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
8364<ul>
8365<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
8366<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
8367<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
8368<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
8369<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
8370<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
8371<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
8372<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
8373<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
8374<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
8375</ul>
8376<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
8377<ul>
8378<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>
8379<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
8380<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
8381<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
8382</ul>
8383<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
8384be lower than what camera can output,<wbr/> depending on the destination Surfaces for
8385the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
8386the application need check if the video encoder is capable of supporting the
8387high frame rate for a given video size,<wbr/> or it will end up with lower recording
8388frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
8389rate will be bounded by the screen refresh rate.<wbr/></p>
8390<p>The camera device will only support up to 2 output high speed streams
8391(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
8392in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
8393<ul>
8394<li>The application created no more than maxNumHighSpeedStreams processed non-stalling
8395format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
8396min(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>
8397<li>The stream sizes are selected from the sizes reported by
8398<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
8399<li>No processed non-stalling or raw streams are configured.<wbr/></li>
8400</ul>
8401<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
8402<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/>
8403the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
8404and the returned capture result metadata will give the fps range choosen
8405by the camera device.<wbr/></p>
8406<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
8407reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
8408the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
8409                  </li>
8410                  <li>
8411                    <span class="entry_type_enum_name">HDR</span>
8412                    <span class="entry_type_enum_optional">[optional]</span>
8413                    <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
8414<p>In this scene mode,<wbr/> the camera device captures images
8415that keep a larger range of scene illumination levels
8416visible in the final image.<wbr/> For example,<wbr/> when taking a
8417picture of a object in front of a bright window,<wbr/> both
8418the object and the scene through the window may be
8419visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
8420one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
8421HDR mode generally takes much longer to capture a single
8422image,<wbr/> has no user control,<wbr/> and may have other artifacts
8423depending on the HDR method used.<wbr/></p>
8424<p>Therefore,<wbr/> HDR captures operate at a much slower rate
8425than regular captures.<wbr/></p>
8426<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
8427is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
8428STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
8429using a high dynamic range capture technique.<wbr/>  On LEGACY
8430devices,<wbr/> captures that target a JPEG-format output will
8431be captured with HDR,<wbr/> and the capture intent is not
8432relevant.<wbr/></p>
8433<p>The HDR capture may involve the device capturing a burst
8434of images internally and combining them into one,<wbr/> or it
8435may involve the device using specialized high dynamic
8436range capture hardware.<wbr/> In all cases,<wbr/> a single image is
8437produced in response to a capture request submitted
8438while in HDR mode.<wbr/></p>
8439<p>Since substantial post-processing is generally needed to
8440produce an HDR image,<wbr/> only YUV and JPEG outputs are
8441supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only
8442JPEG outputs are supported for LEGACY HDR
8443captures.<wbr/> Using a RAW output for HDR capture is not
8444supported.<wbr/></p></span>
8445                  </li>
8446                  <li>
8447                    <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span>
8448                    <span class="entry_type_enum_optional">[optional]</span>
8449                    <span class="entry_type_enum_hidden">[hidden]</span>
8450                    <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
8451device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
8452under low light conditions.<wbr/></p>
8453<p>The camera device may be tuned to expose the images in a reduced
8454sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
8455if the <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> gives range of [100,<wbr/> 1600],<wbr/>
8456the camera device auto-exposure routine tuning process may limit the actual
8457exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
8458exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
8459low light may be under-exposed when the sensor max exposure time (bounded by the
8460<a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of the
8461ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
8462camera device auto-exposure routine to increase the sensitivity up to the max
8463sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
8464dark and the max exposure time is reached.<wbr/> The captured images may be noisier
8465compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
8466recommended that the application only use this scene mode when it is capable of
8467reducing the noise level of the captured images.<wbr/></p>
8468<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8469<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>
8470remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
8471                  </li>
8472                </ul>
8473
8474            </td> <!-- entry_type -->
8475
8476            <td class="entry_description">
8477              <p>Control for which scene mode is currently active.<wbr/></p>
8478            </td>
8479
8480            <td class="entry_units">
8481            </td>
8482
8483            <td class="entry_range">
8484              <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
8485            </td>
8486
8487            <td class="entry_tags">
8488              <ul class="entry_tags">
8489                  <li><a href="#tag_BC">BC</a></li>
8490              </ul>
8491            </td>
8492
8493          </tr>
8494          <tr class="entries_header">
8495            <th class="th_details" colspan="5">Details</th>
8496          </tr>
8497          <tr class="entry_cont">
8498            <td class="entry_details" colspan="5">
8499              <p>Scene modes are custom camera modes optimized for a certain set of conditions and
8500capture settings.<wbr/></p>
8501<p>This is the mode that that is active when
8502<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code>.<wbr/> Aside from FACE_<wbr/>PRIORITY,<wbr/> these modes will
8503disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>
8504while in use.<wbr/></p>
8505<p>The interpretation and implementation of these scene modes is left
8506to the implementor of the camera device.<wbr/> Their behavior will not be
8507consistent across all devices,<wbr/> and any given device may only implement
8508a subset of these modes.<wbr/></p>
8509            </td>
8510          </tr>
8511
8512          <tr class="entries_header">
8513            <th class="th_details" colspan="5">HAL Implementation Details</th>
8514          </tr>
8515          <tr class="entry_cont">
8516            <td class="entry_details" colspan="5">
8517              <p>HAL implementations that include scene modes are expected to provide
8518the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8519<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
8520<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
8521<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/>
8522the HAL must list supported video size and fps range in
8523<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/>
85241280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming
8525mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture
8526requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/>
8527This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
8528<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a> and CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO
8529capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
8530            </td>
8531          </tr>
8532
8533          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8534           <!-- end of entry -->
8535        
8536                
8537          <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
8538            <td class="entry_name
8539             " rowspan="3">
8540              android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
8541            </td>
8542            <td class="entry_type">
8543                <span class="entry_type_name entry_type_name_enum">byte</span>
8544
8545              <span class="entry_type_visibility"> [public]</span>
8546
8547
8548              <span class="entry_type_hwlevel">[legacy] </span>
8549
8550
8551
8552                <ul class="entry_type_enum">
8553                  <li>
8554                    <span class="entry_type_enum_name">OFF</span>
8555                    <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
8556                  </li>
8557                  <li>
8558                    <span class="entry_type_enum_name">ON</span>
8559                    <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
8560                  </li>
8561                </ul>
8562
8563            </td> <!-- entry_type -->
8564
8565            <td class="entry_description">
8566              <p>Whether video stabilization is
8567active.<wbr/></p>
8568            </td>
8569
8570            <td class="entry_units">
8571            </td>
8572
8573            <td class="entry_range">
8574            </td>
8575
8576            <td class="entry_tags">
8577              <ul class="entry_tags">
8578                  <li><a href="#tag_BC">BC</a></li>
8579              </ul>
8580            </td>
8581
8582          </tr>
8583          <tr class="entries_header">
8584            <th class="th_details" colspan="5">Details</th>
8585          </tr>
8586          <tr class="entry_cont">
8587            <td class="entry_details" colspan="5">
8588              <p>Video stabilization automatically warps images from
8589the camera in order to stabilize motion between consecutive frames.<wbr/></p>
8590<p>If enabled,<wbr/> video stabilization can modify the
8591<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
8592<p>Switching between different video stabilization modes may take several
8593frames to initialize,<wbr/> the camera device will report the current mode
8594in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
8595the video stabilization modes in the first several capture results may
8596still be "OFF",<wbr/> and it will become "ON" when the initialization is
8597done.<wbr/></p>
8598<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
8599stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
8600that an output targeting a MediaRecorder or MediaCodec will be stabilized if
8601the recording resolution is less than or equal to 1920 x 1080 (width less than
8602or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
8603frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
8604<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
8605OFF if the recording output is not stabilized,<wbr/> or if there are no output
8606Surface types that can be stabilized.<wbr/></p>
8607<p>If a camera device supports both this mode and OIS
8608(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
8609produce undesirable interaction,<wbr/> so it is recommended not to enable
8610both at the same time.<wbr/></p>
8611            </td>
8612          </tr>
8613
8614
8615          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8616           <!-- end of entry -->
8617        
8618        
8619
8620      <!-- end of kind -->
8621      </tbody>
8622
8623  <!-- end of section -->
8624  <tr><td colspan="6" id="section_demosaic" class="section">demosaic</td></tr>
8625
8626
8627      <tr><td colspan="6" class="kind">controls</td></tr>
8628
8629      <thead class="entries_header">
8630        <tr>
8631          <th class="th_name">Property Name</th>
8632          <th class="th_type">Type</th>
8633          <th class="th_description">Description</th>
8634          <th class="th_units">Units</th>
8635          <th class="th_range">Range</th>
8636          <th class="th_tags">Tags</th>
8637        </tr>
8638      </thead>
8639
8640      <tbody>
8641
8642        
8643
8644        
8645
8646        
8647
8648        
8649
8650                
8651          <tr class="entry" id="controls_android.demosaic.mode">
8652            <td class="entry_name
8653             " rowspan="1">
8654              android.<wbr/>demosaic.<wbr/>mode
8655            </td>
8656            <td class="entry_type">
8657                <span class="entry_type_name entry_type_name_enum">byte</span>
8658
8659              <span class="entry_type_visibility"> [system]</span>
8660
8661
8662
8663
8664
8665                <ul class="entry_type_enum">
8666                  <li>
8667                    <span class="entry_type_enum_name">FAST</span>
8668                    <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
8669Bayer RAW output.<wbr/></p></span>
8670                  </li>
8671                  <li>
8672                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
8673                    <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down
8674relative to raw output.<wbr/></p></span>
8675                  </li>
8676                </ul>
8677
8678            </td> <!-- entry_type -->
8679
8680            <td class="entry_description">
8681              <p>Controls the quality of the demosaicing
8682processing.<wbr/></p>
8683            </td>
8684
8685            <td class="entry_units">
8686            </td>
8687
8688            <td class="entry_range">
8689            </td>
8690
8691            <td class="entry_tags">
8692              <ul class="entry_tags">
8693                  <li><a href="#tag_FUTURE">FUTURE</a></li>
8694              </ul>
8695            </td>
8696
8697          </tr>
8698
8699
8700          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8701           <!-- end of entry -->
8702        
8703        
8704
8705      <!-- end of kind -->
8706      </tbody>
8707
8708  <!-- end of section -->
8709  <tr><td colspan="6" id="section_edge" class="section">edge</td></tr>
8710
8711
8712      <tr><td colspan="6" class="kind">controls</td></tr>
8713
8714      <thead class="entries_header">
8715        <tr>
8716          <th class="th_name">Property Name</th>
8717          <th class="th_type">Type</th>
8718          <th class="th_description">Description</th>
8719          <th class="th_units">Units</th>
8720          <th class="th_range">Range</th>
8721          <th class="th_tags">Tags</th>
8722        </tr>
8723      </thead>
8724
8725      <tbody>
8726
8727        
8728
8729        
8730
8731        
8732
8733        
8734
8735                
8736          <tr class="entry" id="controls_android.edge.mode">
8737            <td class="entry_name
8738             " rowspan="5">
8739              android.<wbr/>edge.<wbr/>mode
8740            </td>
8741            <td class="entry_type">
8742                <span class="entry_type_name entry_type_name_enum">byte</span>
8743
8744              <span class="entry_type_visibility"> [public]</span>
8745
8746
8747              <span class="entry_type_hwlevel">[full] </span>
8748
8749
8750
8751                <ul class="entry_type_enum">
8752                  <li>
8753                    <span class="entry_type_enum_name">OFF</span>
8754                    <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
8755                  </li>
8756                  <li>
8757                    <span class="entry_type_enum_name">FAST</span>
8758                    <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
8759relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
8760slow down frame rate relative to sensor.<wbr/></p></span>
8761                  </li>
8762                  <li>
8763                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
8764                    <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>
8765                  </li>
8766                  <li>
8767                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
8768                    <span class="entry_type_enum_optional">[optional]</span>
8769                    <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/>
8770based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have
8771edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement
8772applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that
8773frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it
8774is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
8775<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
8776with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
8777high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
8778produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
8779high-resolution buffers must not have edge enhancement applied to maximize efficiency of
8780preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
8781buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
8782reasonable preview quality.<wbr/></p>
8783<p>This mode is guaranteed to be supported by devices that support either the
8784YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
8785(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
8786be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
8787                  </li>
8788                </ul>
8789
8790            </td> <!-- entry_type -->
8791
8792            <td class="entry_description">
8793              <p>Operation mode for edge
8794enhancement.<wbr/></p>
8795            </td>
8796
8797            <td class="entry_units">
8798            </td>
8799
8800            <td class="entry_range">
8801              <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
8802            </td>
8803
8804            <td class="entry_tags">
8805              <ul class="entry_tags">
8806                  <li><a href="#tag_V1">V1</a></li>
8807                  <li><a href="#tag_REPROC">REPROC</a></li>
8808              </ul>
8809            </td>
8810
8811          </tr>
8812          <tr class="entries_header">
8813            <th class="th_details" colspan="5">Details</th>
8814          </tr>
8815          <tr class="entry_cont">
8816            <td class="entry_details" colspan="5">
8817              <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
8818no enhancement will be applied by the camera device.<wbr/></p>
8819<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
8820will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
8821camera device will use the highest-quality enhancement algorithms,<wbr/>
8822even if it slows down capture rate.<wbr/> FAST means the camera device will
8823not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
8824edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
8825amount of enhancement applied.<wbr/></p>
8826<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
8827buffer of high-resolution images during preview and reprocess image(s) from that buffer
8828into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
8829edge enhancement to low-resolution streams (below maximum recording resolution) to
8830maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
8831since those will be reprocessed later if necessary.<wbr/></p>
8832<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
8833device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
8834The camera device may adjust its internal edge enhancement parameters for best
8835image 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>
8836            </td>
8837          </tr>
8838
8839          <tr class="entries_header">
8840            <th class="th_details" colspan="5">HAL Implementation Details</th>
8841          </tr>
8842          <tr class="entry_cont">
8843            <td class="entry_details" colspan="5">
8844              <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
8845adjust the internal edge enhancement reduction parameters appropriately to get the best
8846quality images.<wbr/></p>
8847            </td>
8848          </tr>
8849
8850          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8851           <!-- end of entry -->
8852        
8853                
8854          <tr class="entry" id="controls_android.edge.strength">
8855            <td class="entry_name
8856             " rowspan="1">
8857              android.<wbr/>edge.<wbr/>strength
8858            </td>
8859            <td class="entry_type">
8860                <span class="entry_type_name">byte</span>
8861
8862              <span class="entry_type_visibility"> [system]</span>
8863
8864
8865
8866
8867
8868
8869            </td> <!-- entry_type -->
8870
8871            <td class="entry_description">
8872              <p>Control the amount of edge enhancement
8873applied to the images</p>
8874            </td>
8875
8876            <td class="entry_units">
8877              1-10; 10 is maximum sharpening
8878            </td>
8879
8880            <td class="entry_range">
8881            </td>
8882
8883            <td class="entry_tags">
8884              <ul class="entry_tags">
8885                  <li><a href="#tag_FUTURE">FUTURE</a></li>
8886              </ul>
8887            </td>
8888
8889          </tr>
8890
8891
8892          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8893           <!-- end of entry -->
8894        
8895        
8896
8897      <!-- end of kind -->
8898      </tbody>
8899      <tr><td colspan="6" class="kind">static</td></tr>
8900
8901      <thead class="entries_header">
8902        <tr>
8903          <th class="th_name">Property Name</th>
8904          <th class="th_type">Type</th>
8905          <th class="th_description">Description</th>
8906          <th class="th_units">Units</th>
8907          <th class="th_range">Range</th>
8908          <th class="th_tags">Tags</th>
8909        </tr>
8910      </thead>
8911
8912      <tbody>
8913
8914        
8915
8916        
8917
8918        
8919
8920        
8921
8922                
8923          <tr class="entry" id="static_android.edge.availableEdgeModes">
8924            <td class="entry_name
8925             " rowspan="5">
8926              android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
8927            </td>
8928            <td class="entry_type">
8929                <span class="entry_type_name">byte</span>
8930                <span class="entry_type_container">x</span>
8931
8932                <span class="entry_type_array">
8933                  n
8934                </span>
8935              <span class="entry_type_visibility"> [public as enumList]</span>
8936
8937
8938              <span class="entry_type_hwlevel">[full] </span>
8939
8940
8941                <div class="entry_type_notes">list of enums</div>
8942
8943
8944            </td> <!-- entry_type -->
8945
8946            <td class="entry_description">
8947              <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
8948device.<wbr/></p>
8949            </td>
8950
8951            <td class="entry_units">
8952            </td>
8953
8954            <td class="entry_range">
8955              <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
8956            </td>
8957
8958            <td class="entry_tags">
8959              <ul class="entry_tags">
8960                  <li><a href="#tag_V1">V1</a></li>
8961                  <li><a href="#tag_REPROC">REPROC</a></li>
8962              </ul>
8963            </td>
8964
8965          </tr>
8966          <tr class="entries_header">
8967            <th class="th_details" colspan="5">Details</th>
8968          </tr>
8969          <tr class="entry_cont">
8970            <td class="entry_details" colspan="5">
8971              <p>Full-capability camera devices must always support OFF; camera devices that support
8972YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will
8973list FAST.<wbr/></p>
8974            </td>
8975          </tr>
8976
8977          <tr class="entries_header">
8978            <th class="th_details" colspan="5">HAL Implementation Details</th>
8979          </tr>
8980          <tr class="entry_cont">
8981            <td class="entry_details" colspan="5">
8982              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available
8983on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
8984That is,<wbr/> if the highest quality implementation on the camera device does not slow down
8985capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
8986            </td>
8987          </tr>
8988
8989          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8990           <!-- end of entry -->
8991        
8992        
8993
8994      <!-- end of kind -->
8995      </tbody>
8996      <tr><td colspan="6" class="kind">dynamic</td></tr>
8997
8998      <thead class="entries_header">
8999        <tr>
9000          <th class="th_name">Property Name</th>
9001          <th class="th_type">Type</th>
9002          <th class="th_description">Description</th>
9003          <th class="th_units">Units</th>
9004          <th class="th_range">Range</th>
9005          <th class="th_tags">Tags</th>
9006        </tr>
9007      </thead>
9008
9009      <tbody>
9010
9011        
9012
9013        
9014
9015        
9016
9017        
9018
9019                
9020          <tr class="entry" id="dynamic_android.edge.mode">
9021            <td class="entry_name
9022             " rowspan="5">
9023              android.<wbr/>edge.<wbr/>mode
9024            </td>
9025            <td class="entry_type">
9026                <span class="entry_type_name entry_type_name_enum">byte</span>
9027
9028              <span class="entry_type_visibility"> [public]</span>
9029
9030
9031              <span class="entry_type_hwlevel">[full] </span>
9032
9033
9034
9035                <ul class="entry_type_enum">
9036                  <li>
9037                    <span class="entry_type_enum_name">OFF</span>
9038                    <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9039                  </li>
9040                  <li>
9041                    <span class="entry_type_enum_name">FAST</span>
9042                    <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9043relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9044slow down frame rate relative to sensor.<wbr/></p></span>
9045                  </li>
9046                  <li>
9047                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
9048                    <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>
9049                  </li>
9050                  <li>
9051                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
9052                    <span class="entry_type_enum_optional">[optional]</span>
9053                    <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/>
9054based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have
9055edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement
9056applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that
9057frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it
9058is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9059<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9060with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9061high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9062produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
9063high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9064preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9065buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9066reasonable preview quality.<wbr/></p>
9067<p>This mode is guaranteed to be supported by devices that support either the
9068YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9069(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9070be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9071                  </li>
9072                </ul>
9073
9074            </td> <!-- entry_type -->
9075
9076            <td class="entry_description">
9077              <p>Operation mode for edge
9078enhancement.<wbr/></p>
9079            </td>
9080
9081            <td class="entry_units">
9082            </td>
9083
9084            <td class="entry_range">
9085              <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9086            </td>
9087
9088            <td class="entry_tags">
9089              <ul class="entry_tags">
9090                  <li><a href="#tag_V1">V1</a></li>
9091                  <li><a href="#tag_REPROC">REPROC</a></li>
9092              </ul>
9093            </td>
9094
9095          </tr>
9096          <tr class="entries_header">
9097            <th class="th_details" colspan="5">Details</th>
9098          </tr>
9099          <tr class="entry_cont">
9100            <td class="entry_details" colspan="5">
9101              <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9102no enhancement will be applied by the camera device.<wbr/></p>
9103<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9104will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9105camera device will use the highest-quality enhancement algorithms,<wbr/>
9106even if it slows down capture rate.<wbr/> FAST means the camera device will
9107not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9108edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9109amount of enhancement applied.<wbr/></p>
9110<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9111buffer of high-resolution images during preview and reprocess image(s) from that buffer
9112into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9113edge enhancement to low-resolution streams (below maximum recording resolution) to
9114maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9115since those will be reprocessed later if necessary.<wbr/></p>
9116<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9117device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9118The camera device may adjust its internal edge enhancement parameters for best
9119image 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>
9120            </td>
9121          </tr>
9122
9123          <tr class="entries_header">
9124            <th class="th_details" colspan="5">HAL Implementation Details</th>
9125          </tr>
9126          <tr class="entry_cont">
9127            <td class="entry_details" colspan="5">
9128              <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
9129adjust the internal edge enhancement reduction parameters appropriately to get the best
9130quality images.<wbr/></p>
9131            </td>
9132          </tr>
9133
9134          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9135           <!-- end of entry -->
9136        
9137        
9138
9139      <!-- end of kind -->
9140      </tbody>
9141
9142  <!-- end of section -->
9143  <tr><td colspan="6" id="section_flash" class="section">flash</td></tr>
9144
9145
9146      <tr><td colspan="6" class="kind">controls</td></tr>
9147
9148      <thead class="entries_header">
9149        <tr>
9150          <th class="th_name">Property Name</th>
9151          <th class="th_type">Type</th>
9152          <th class="th_description">Description</th>
9153          <th class="th_units">Units</th>
9154          <th class="th_range">Range</th>
9155          <th class="th_tags">Tags</th>
9156        </tr>
9157      </thead>
9158
9159      <tbody>
9160
9161        
9162
9163        
9164
9165        
9166
9167        
9168
9169                
9170          <tr class="entry" id="controls_android.flash.firingPower">
9171            <td class="entry_name
9172             " rowspan="3">
9173              android.<wbr/>flash.<wbr/>firing<wbr/>Power
9174            </td>
9175            <td class="entry_type">
9176                <span class="entry_type_name">byte</span>
9177
9178              <span class="entry_type_visibility"> [system]</span>
9179
9180
9181
9182
9183
9184
9185            </td> <!-- entry_type -->
9186
9187            <td class="entry_description">
9188              <p>Power for flash firing/<wbr/>torch</p>
9189            </td>
9190
9191            <td class="entry_units">
9192              10 is max power; 0 is no flash.<wbr/> Linear
9193            </td>
9194
9195            <td class="entry_range">
9196              <p>0 - 10</p>
9197            </td>
9198
9199            <td class="entry_tags">
9200              <ul class="entry_tags">
9201                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9202              </ul>
9203            </td>
9204
9205          </tr>
9206          <tr class="entries_header">
9207            <th class="th_details" colspan="5">Details</th>
9208          </tr>
9209          <tr class="entry_cont">
9210            <td class="entry_details" colspan="5">
9211              <p>Power for snapshot may use a different scale than
9212for torch mode.<wbr/> Only one entry for torch mode will be
9213used</p>
9214            </td>
9215          </tr>
9216
9217
9218          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9219           <!-- end of entry -->
9220        
9221                
9222          <tr class="entry" id="controls_android.flash.firingTime">
9223            <td class="entry_name
9224             " rowspan="3">
9225              android.<wbr/>flash.<wbr/>firing<wbr/>Time
9226            </td>
9227            <td class="entry_type">
9228                <span class="entry_type_name">int64</span>
9229
9230              <span class="entry_type_visibility"> [system]</span>
9231
9232
9233
9234
9235
9236
9237            </td> <!-- entry_type -->
9238
9239            <td class="entry_description">
9240              <p>Firing time of flash relative to start of
9241exposure</p>
9242            </td>
9243
9244            <td class="entry_units">
9245              nanoseconds
9246            </td>
9247
9248            <td class="entry_range">
9249              <p>0-(exposure time-flash duration)</p>
9250            </td>
9251
9252            <td class="entry_tags">
9253              <ul class="entry_tags">
9254                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9255              </ul>
9256            </td>
9257
9258          </tr>
9259          <tr class="entries_header">
9260            <th class="th_details" colspan="5">Details</th>
9261          </tr>
9262          <tr class="entry_cont">
9263            <td class="entry_details" colspan="5">
9264              <p>Clamped to (0,<wbr/> exposure time - flash
9265duration).<wbr/></p>
9266            </td>
9267          </tr>
9268
9269
9270          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9271           <!-- end of entry -->
9272        
9273                
9274          <tr class="entry" id="controls_android.flash.mode">
9275            <td class="entry_name
9276             " rowspan="3">
9277              android.<wbr/>flash.<wbr/>mode
9278            </td>
9279            <td class="entry_type">
9280                <span class="entry_type_name entry_type_name_enum">byte</span>
9281
9282              <span class="entry_type_visibility"> [public]</span>
9283
9284
9285              <span class="entry_type_hwlevel">[legacy] </span>
9286
9287
9288
9289                <ul class="entry_type_enum">
9290                  <li>
9291                    <span class="entry_type_enum_name">OFF</span>
9292                    <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
9293                  </li>
9294                  <li>
9295                    <span class="entry_type_enum_name">SINGLE</span>
9296                    <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
9297for this capture.<wbr/></p></span>
9298                  </li>
9299                  <li>
9300                    <span class="entry_type_enum_name">TORCH</span>
9301                    <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
9302                  </li>
9303                </ul>
9304
9305            </td> <!-- entry_type -->
9306
9307            <td class="entry_description">
9308              <p>The desired mode for for the camera device's flash control.<wbr/></p>
9309            </td>
9310
9311            <td class="entry_units">
9312            </td>
9313
9314            <td class="entry_range">
9315            </td>
9316
9317            <td class="entry_tags">
9318              <ul class="entry_tags">
9319                  <li><a href="#tag_BC">BC</a></li>
9320              </ul>
9321            </td>
9322
9323          </tr>
9324          <tr class="entries_header">
9325            <th class="th_details" colspan="5">Details</th>
9326          </tr>
9327          <tr class="entry_cont">
9328            <td class="entry_details" colspan="5">
9329              <p>This control is only effective when flash unit is available
9330(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
9331<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/>
9332Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
9333ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
9334<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
9335<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
9336device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
9337control should be used along with auto-exposure (AE) precapture metering sequence
9338(<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>
9339<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
9340for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
9341<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>
9342            </td>
9343          </tr>
9344
9345
9346          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9347           <!-- end of entry -->
9348        
9349        
9350
9351      <!-- end of kind -->
9352      </tbody>
9353      <tr><td colspan="6" class="kind">static</td></tr>
9354
9355      <thead class="entries_header">
9356        <tr>
9357          <th class="th_name">Property Name</th>
9358          <th class="th_type">Type</th>
9359          <th class="th_description">Description</th>
9360          <th class="th_units">Units</th>
9361          <th class="th_range">Range</th>
9362          <th class="th_tags">Tags</th>
9363        </tr>
9364      </thead>
9365
9366      <tbody>
9367
9368        
9369
9370        
9371
9372        
9373
9374        
9375                
9376            
9377
9378                
9379          <tr class="entry" id="static_android.flash.info.available">
9380            <td class="entry_name
9381             " rowspan="3">
9382              android.<wbr/>flash.<wbr/>info.<wbr/>available
9383            </td>
9384            <td class="entry_type">
9385                <span class="entry_type_name entry_type_name_enum">byte</span>
9386
9387              <span class="entry_type_visibility"> [public as boolean]</span>
9388
9389
9390              <span class="entry_type_hwlevel">[legacy] </span>
9391
9392
9393
9394                <ul class="entry_type_enum">
9395                  <li>
9396                    <span class="entry_type_enum_name">FALSE</span>
9397                  </li>
9398                  <li>
9399                    <span class="entry_type_enum_name">TRUE</span>
9400                  </li>
9401                </ul>
9402
9403            </td> <!-- entry_type -->
9404
9405            <td class="entry_description">
9406              <p>Whether this camera device has a
9407flash unit.<wbr/></p>
9408            </td>
9409
9410            <td class="entry_units">
9411            </td>
9412
9413            <td class="entry_range">
9414            </td>
9415
9416            <td class="entry_tags">
9417              <ul class="entry_tags">
9418                  <li><a href="#tag_BC">BC</a></li>
9419              </ul>
9420            </td>
9421
9422          </tr>
9423          <tr class="entries_header">
9424            <th class="th_details" colspan="5">Details</th>
9425          </tr>
9426          <tr class="entry_cont">
9427            <td class="entry_details" colspan="5">
9428              <p>Will be <code>false</code> if no flash is available.<wbr/></p>
9429<p>If there is no flash unit,<wbr/> none of the flash controls do
9430anything.<wbr/></p>
9431            </td>
9432          </tr>
9433
9434
9435          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9436           <!-- end of entry -->
9437        
9438                
9439          <tr class="entry" id="static_android.flash.info.chargeDuration">
9440            <td class="entry_name
9441             " rowspan="3">
9442              android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
9443            </td>
9444            <td class="entry_type">
9445                <span class="entry_type_name">int64</span>
9446
9447              <span class="entry_type_visibility"> [system]</span>
9448
9449
9450
9451
9452
9453
9454            </td> <!-- entry_type -->
9455
9456            <td class="entry_description">
9457              <p>Time taken before flash can fire
9458again</p>
9459            </td>
9460
9461            <td class="entry_units">
9462              nanoseconds
9463            </td>
9464
9465            <td class="entry_range">
9466              <p>0-1e9</p>
9467            </td>
9468
9469            <td class="entry_tags">
9470              <ul class="entry_tags">
9471                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9472              </ul>
9473            </td>
9474
9475          </tr>
9476          <tr class="entries_header">
9477            <th class="th_details" colspan="5">Details</th>
9478          </tr>
9479          <tr class="entry_cont">
9480            <td class="entry_details" colspan="5">
9481              <p>1 second too long/<wbr/>too short for recharge? Should
9482this be power-dependent?</p>
9483            </td>
9484          </tr>
9485
9486
9487          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9488           <!-- end of entry -->
9489        
9490        
9491        
9492
9493                
9494          <tr class="entry" id="static_android.flash.colorTemperature">
9495            <td class="entry_name
9496             " rowspan="1">
9497              android.<wbr/>flash.<wbr/>color<wbr/>Temperature
9498            </td>
9499            <td class="entry_type">
9500                <span class="entry_type_name">byte</span>
9501
9502              <span class="entry_type_visibility"> [system]</span>
9503
9504
9505
9506
9507
9508
9509            </td> <!-- entry_type -->
9510
9511            <td class="entry_description">
9512              <p>The x,<wbr/>y whitepoint of the
9513flash</p>
9514            </td>
9515
9516            <td class="entry_units">
9517              pair of floats
9518            </td>
9519
9520            <td class="entry_range">
9521              <p>0-1 for both</p>
9522            </td>
9523
9524            <td class="entry_tags">
9525              <ul class="entry_tags">
9526                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9527              </ul>
9528            </td>
9529
9530          </tr>
9531
9532
9533          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9534           <!-- end of entry -->
9535        
9536                
9537          <tr class="entry" id="static_android.flash.maxEnergy">
9538            <td class="entry_name
9539             " rowspan="1">
9540              android.<wbr/>flash.<wbr/>max<wbr/>Energy
9541            </td>
9542            <td class="entry_type">
9543                <span class="entry_type_name">byte</span>
9544
9545              <span class="entry_type_visibility"> [system]</span>
9546
9547
9548
9549
9550
9551
9552            </td> <!-- entry_type -->
9553
9554            <td class="entry_description">
9555              <p>Max energy output of the flash for a full
9556power single flash</p>
9557            </td>
9558
9559            <td class="entry_units">
9560              lumen-seconds
9561            </td>
9562
9563            <td class="entry_range">
9564              <p>&gt;= 0</p>
9565            </td>
9566
9567            <td class="entry_tags">
9568              <ul class="entry_tags">
9569                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9570              </ul>
9571            </td>
9572
9573          </tr>
9574
9575
9576          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9577           <!-- end of entry -->
9578        
9579        
9580
9581      <!-- end of kind -->
9582      </tbody>
9583      <tr><td colspan="6" class="kind">dynamic</td></tr>
9584
9585      <thead class="entries_header">
9586        <tr>
9587          <th class="th_name">Property Name</th>
9588          <th class="th_type">Type</th>
9589          <th class="th_description">Description</th>
9590          <th class="th_units">Units</th>
9591          <th class="th_range">Range</th>
9592          <th class="th_tags">Tags</th>
9593        </tr>
9594      </thead>
9595
9596      <tbody>
9597
9598        
9599
9600        
9601
9602        
9603
9604        
9605
9606                
9607          <tr class="entry" id="dynamic_android.flash.firingPower">
9608            <td class="entry_name
9609             " rowspan="3">
9610              android.<wbr/>flash.<wbr/>firing<wbr/>Power
9611            </td>
9612            <td class="entry_type">
9613                <span class="entry_type_name">byte</span>
9614
9615              <span class="entry_type_visibility"> [system]</span>
9616
9617
9618
9619
9620
9621
9622            </td> <!-- entry_type -->
9623
9624            <td class="entry_description">
9625              <p>Power for flash firing/<wbr/>torch</p>
9626            </td>
9627
9628            <td class="entry_units">
9629              10 is max power; 0 is no flash.<wbr/> Linear
9630            </td>
9631
9632            <td class="entry_range">
9633              <p>0 - 10</p>
9634            </td>
9635
9636            <td class="entry_tags">
9637              <ul class="entry_tags">
9638                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9639              </ul>
9640            </td>
9641
9642          </tr>
9643          <tr class="entries_header">
9644            <th class="th_details" colspan="5">Details</th>
9645          </tr>
9646          <tr class="entry_cont">
9647            <td class="entry_details" colspan="5">
9648              <p>Power for snapshot may use a different scale than
9649for torch mode.<wbr/> Only one entry for torch mode will be
9650used</p>
9651            </td>
9652          </tr>
9653
9654
9655          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9656           <!-- end of entry -->
9657        
9658                
9659          <tr class="entry" id="dynamic_android.flash.firingTime">
9660            <td class="entry_name
9661             " rowspan="3">
9662              android.<wbr/>flash.<wbr/>firing<wbr/>Time
9663            </td>
9664            <td class="entry_type">
9665                <span class="entry_type_name">int64</span>
9666
9667              <span class="entry_type_visibility"> [system]</span>
9668
9669
9670
9671
9672
9673
9674            </td> <!-- entry_type -->
9675
9676            <td class="entry_description">
9677              <p>Firing time of flash relative to start of
9678exposure</p>
9679            </td>
9680
9681            <td class="entry_units">
9682              nanoseconds
9683            </td>
9684
9685            <td class="entry_range">
9686              <p>0-(exposure time-flash duration)</p>
9687            </td>
9688
9689            <td class="entry_tags">
9690              <ul class="entry_tags">
9691                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9692              </ul>
9693            </td>
9694
9695          </tr>
9696          <tr class="entries_header">
9697            <th class="th_details" colspan="5">Details</th>
9698          </tr>
9699          <tr class="entry_cont">
9700            <td class="entry_details" colspan="5">
9701              <p>Clamped to (0,<wbr/> exposure time - flash
9702duration).<wbr/></p>
9703            </td>
9704          </tr>
9705
9706
9707          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9708           <!-- end of entry -->
9709        
9710                
9711          <tr class="entry" id="dynamic_android.flash.mode">
9712            <td class="entry_name
9713             " rowspan="3">
9714              android.<wbr/>flash.<wbr/>mode
9715            </td>
9716            <td class="entry_type">
9717                <span class="entry_type_name entry_type_name_enum">byte</span>
9718
9719              <span class="entry_type_visibility"> [public]</span>
9720
9721
9722              <span class="entry_type_hwlevel">[legacy] </span>
9723
9724
9725
9726                <ul class="entry_type_enum">
9727                  <li>
9728                    <span class="entry_type_enum_name">OFF</span>
9729                    <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
9730                  </li>
9731                  <li>
9732                    <span class="entry_type_enum_name">SINGLE</span>
9733                    <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
9734for this capture.<wbr/></p></span>
9735                  </li>
9736                  <li>
9737                    <span class="entry_type_enum_name">TORCH</span>
9738                    <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
9739                  </li>
9740                </ul>
9741
9742            </td> <!-- entry_type -->
9743
9744            <td class="entry_description">
9745              <p>The desired mode for for the camera device's flash control.<wbr/></p>
9746            </td>
9747
9748            <td class="entry_units">
9749            </td>
9750
9751            <td class="entry_range">
9752            </td>
9753
9754            <td class="entry_tags">
9755              <ul class="entry_tags">
9756                  <li><a href="#tag_BC">BC</a></li>
9757              </ul>
9758            </td>
9759
9760          </tr>
9761          <tr class="entries_header">
9762            <th class="th_details" colspan="5">Details</th>
9763          </tr>
9764          <tr class="entry_cont">
9765            <td class="entry_details" colspan="5">
9766              <p>This control is only effective when flash unit is available
9767(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
9768<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/>
9769Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
9770ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
9771<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
9772<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
9773device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
9774control should be used along with auto-exposure (AE) precapture metering sequence
9775(<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>
9776<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
9777for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
9778<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>
9779            </td>
9780          </tr>
9781
9782
9783          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9784           <!-- end of entry -->
9785        
9786                
9787          <tr class="entry" id="dynamic_android.flash.state">
9788            <td class="entry_name
9789             " rowspan="3">
9790              android.<wbr/>flash.<wbr/>state
9791            </td>
9792            <td class="entry_type">
9793                <span class="entry_type_name entry_type_name_enum">byte</span>
9794
9795              <span class="entry_type_visibility"> [public]</span>
9796
9797
9798              <span class="entry_type_hwlevel">[limited] </span>
9799
9800
9801
9802                <ul class="entry_type_enum">
9803                  <li>
9804                    <span class="entry_type_enum_name">UNAVAILABLE</span>
9805                    <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
9806                  </li>
9807                  <li>
9808                    <span class="entry_type_enum_name">CHARGING</span>
9809                    <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
9810                  </li>
9811                  <li>
9812                    <span class="entry_type_enum_name">READY</span>
9813                    <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
9814                  </li>
9815                  <li>
9816                    <span class="entry_type_enum_name">FIRED</span>
9817                    <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
9818                  </li>
9819                  <li>
9820                    <span class="entry_type_enum_name">PARTIAL</span>
9821                    <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
9822<p>This is usually due to the next or previous frame having
9823the flash fire,<wbr/> and the flash spilling into this capture
9824due to hardware limitations.<wbr/></p></span>
9825                  </li>
9826                </ul>
9827
9828            </td> <!-- entry_type -->
9829
9830            <td class="entry_description">
9831              <p>Current state of the flash
9832unit.<wbr/></p>
9833            </td>
9834
9835            <td class="entry_units">
9836            </td>
9837
9838            <td class="entry_range">
9839            </td>
9840
9841            <td class="entry_tags">
9842            </td>
9843
9844          </tr>
9845          <tr class="entries_header">
9846            <th class="th_details" colspan="5">Details</th>
9847          </tr>
9848          <tr class="entry_cont">
9849            <td class="entry_details" colspan="5">
9850              <p>When the camera device doesn't have flash unit
9851(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/>
9852Other states indicate the current flash status.<wbr/></p>
9853<p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p>
9854<ul>
9855<li>Flash-less cameras always return UNAVAILABLE.<wbr/></li>
9856<li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH
9857   will always return FIRED.<wbr/></li>
9858<li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH
9859   will always return FIRED.<wbr/></li>
9860</ul>
9861<p>In all other conditions the state will not be available on
9862LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p>
9863            </td>
9864          </tr>
9865
9866
9867          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9868           <!-- end of entry -->
9869        
9870        
9871
9872      <!-- end of kind -->
9873      </tbody>
9874
9875  <!-- end of section -->
9876  <tr><td colspan="6" id="section_hotPixel" class="section">hotPixel</td></tr>
9877
9878
9879      <tr><td colspan="6" class="kind">controls</td></tr>
9880
9881      <thead class="entries_header">
9882        <tr>
9883          <th class="th_name">Property Name</th>
9884          <th class="th_type">Type</th>
9885          <th class="th_description">Description</th>
9886          <th class="th_units">Units</th>
9887          <th class="th_range">Range</th>
9888          <th class="th_tags">Tags</th>
9889        </tr>
9890      </thead>
9891
9892      <tbody>
9893
9894        
9895
9896        
9897
9898        
9899
9900        
9901
9902                
9903          <tr class="entry" id="controls_android.hotPixel.mode">
9904            <td class="entry_name
9905             " rowspan="3">
9906              android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
9907            </td>
9908            <td class="entry_type">
9909                <span class="entry_type_name entry_type_name_enum">byte</span>
9910
9911              <span class="entry_type_visibility"> [public]</span>
9912
9913
9914
9915
9916
9917                <ul class="entry_type_enum">
9918                  <li>
9919                    <span class="entry_type_enum_name">OFF</span>
9920                    <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
9921<p>The frame rate must not be reduced relative to sensor raw output
9922for this option.<wbr/></p>
9923<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>
9924                  </li>
9925                  <li>
9926                    <span class="entry_type_enum_name">FAST</span>
9927                    <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
9928rate relative to sensor raw output.<wbr/></p>
9929<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>
9930                  </li>
9931                  <li>
9932                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
9933                    <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
9934of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
9935<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>
9936                  </li>
9937                </ul>
9938
9939            </td> <!-- entry_type -->
9940
9941            <td class="entry_description">
9942              <p>Operational mode for hot pixel correction.<wbr/></p>
9943            </td>
9944
9945            <td class="entry_units">
9946            </td>
9947
9948            <td class="entry_range">
9949              <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
9950            </td>
9951
9952            <td class="entry_tags">
9953              <ul class="entry_tags">
9954                  <li><a href="#tag_V1">V1</a></li>
9955                  <li><a href="#tag_RAW">RAW</a></li>
9956              </ul>
9957            </td>
9958
9959          </tr>
9960          <tr class="entries_header">
9961            <th class="th_details" colspan="5">Details</th>
9962          </tr>
9963          <tr class="entry_cont">
9964            <td class="entry_details" colspan="5">
9965              <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
9966that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
9967are stuck at an arbitrary value or are oversensitive).<wbr/></p>
9968            </td>
9969          </tr>
9970
9971
9972          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9973           <!-- end of entry -->
9974        
9975        
9976
9977      <!-- end of kind -->
9978      </tbody>
9979      <tr><td colspan="6" class="kind">static</td></tr>
9980
9981      <thead class="entries_header">
9982        <tr>
9983          <th class="th_name">Property Name</th>
9984          <th class="th_type">Type</th>
9985          <th class="th_description">Description</th>
9986          <th class="th_units">Units</th>
9987          <th class="th_range">Range</th>
9988          <th class="th_tags">Tags</th>
9989        </tr>
9990      </thead>
9991
9992      <tbody>
9993
9994        
9995
9996        
9997
9998        
9999
10000        
10001
10002                
10003          <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
10004            <td class="entry_name
10005             " rowspan="5">
10006              android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
10007            </td>
10008            <td class="entry_type">
10009                <span class="entry_type_name">byte</span>
10010                <span class="entry_type_container">x</span>
10011
10012                <span class="entry_type_array">
10013                  n
10014                </span>
10015              <span class="entry_type_visibility"> [public as enumList]</span>
10016
10017
10018
10019
10020                <div class="entry_type_notes">list of enums</div>
10021
10022
10023            </td> <!-- entry_type -->
10024
10025            <td class="entry_description">
10026              <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
10027camera device.<wbr/></p>
10028            </td>
10029
10030            <td class="entry_units">
10031            </td>
10032
10033            <td class="entry_range">
10034              <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
10035            </td>
10036
10037            <td class="entry_tags">
10038              <ul class="entry_tags">
10039                  <li><a href="#tag_V1">V1</a></li>
10040                  <li><a href="#tag_RAW">RAW</a></li>
10041              </ul>
10042            </td>
10043
10044          </tr>
10045          <tr class="entries_header">
10046            <th class="th_details" colspan="5">Details</th>
10047          </tr>
10048          <tr class="entry_cont">
10049            <td class="entry_details" colspan="5">
10050              <p>FULL mode camera devices will always support FAST.<wbr/></p>
10051            </td>
10052          </tr>
10053
10054          <tr class="entries_header">
10055            <th class="th_details" colspan="5">HAL Implementation Details</th>
10056          </tr>
10057          <tr class="entry_cont">
10058            <td class="entry_details" colspan="5">
10059              <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
10060pixels than actual pixels on the camera sensor.<wbr/>
10061HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available
10062on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
10063That is,<wbr/> if the highest quality implementation on the camera device does not slow down
10064capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
10065            </td>
10066          </tr>
10067
10068          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10069           <!-- end of entry -->
10070        
10071        
10072
10073      <!-- end of kind -->
10074      </tbody>
10075      <tr><td colspan="6" class="kind">dynamic</td></tr>
10076
10077      <thead class="entries_header">
10078        <tr>
10079          <th class="th_name">Property Name</th>
10080          <th class="th_type">Type</th>
10081          <th class="th_description">Description</th>
10082          <th class="th_units">Units</th>
10083          <th class="th_range">Range</th>
10084          <th class="th_tags">Tags</th>
10085        </tr>
10086      </thead>
10087
10088      <tbody>
10089
10090        
10091
10092        
10093
10094        
10095
10096        
10097
10098                
10099          <tr class="entry" id="dynamic_android.hotPixel.mode">
10100            <td class="entry_name
10101             " rowspan="3">
10102              android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
10103            </td>
10104            <td class="entry_type">
10105                <span class="entry_type_name entry_type_name_enum">byte</span>
10106
10107              <span class="entry_type_visibility"> [public]</span>
10108
10109
10110
10111
10112
10113                <ul class="entry_type_enum">
10114                  <li>
10115                    <span class="entry_type_enum_name">OFF</span>
10116                    <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
10117<p>The frame rate must not be reduced relative to sensor raw output
10118for this option.<wbr/></p>
10119<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>
10120                  </li>
10121                  <li>
10122                    <span class="entry_type_enum_name">FAST</span>
10123                    <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
10124rate relative to sensor raw output.<wbr/></p>
10125<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>
10126                  </li>
10127                  <li>
10128                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
10129                    <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
10130of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
10131<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>
10132                  </li>
10133                </ul>
10134
10135            </td> <!-- entry_type -->
10136
10137            <td class="entry_description">
10138              <p>Operational mode for hot pixel correction.<wbr/></p>
10139            </td>
10140
10141            <td class="entry_units">
10142            </td>
10143
10144            <td class="entry_range">
10145              <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
10146            </td>
10147
10148            <td class="entry_tags">
10149              <ul class="entry_tags">
10150                  <li><a href="#tag_V1">V1</a></li>
10151                  <li><a href="#tag_RAW">RAW</a></li>
10152              </ul>
10153            </td>
10154
10155          </tr>
10156          <tr class="entries_header">
10157            <th class="th_details" colspan="5">Details</th>
10158          </tr>
10159          <tr class="entry_cont">
10160            <td class="entry_details" colspan="5">
10161              <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
10162that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
10163are stuck at an arbitrary value or are oversensitive).<wbr/></p>
10164            </td>
10165          </tr>
10166
10167
10168          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10169           <!-- end of entry -->
10170        
10171        
10172
10173      <!-- end of kind -->
10174      </tbody>
10175
10176  <!-- end of section -->
10177  <tr><td colspan="6" id="section_jpeg" class="section">jpeg</td></tr>
10178
10179
10180      <tr><td colspan="6" class="kind">controls</td></tr>
10181
10182      <thead class="entries_header">
10183        <tr>
10184          <th class="th_name">Property Name</th>
10185          <th class="th_type">Type</th>
10186          <th class="th_description">Description</th>
10187          <th class="th_units">Units</th>
10188          <th class="th_range">Range</th>
10189          <th class="th_tags">Tags</th>
10190        </tr>
10191      </thead>
10192
10193      <tbody>
10194
10195        
10196
10197        
10198
10199        
10200
10201        
10202
10203                
10204          <tr class="entry" id="controls_android.jpeg.gpsLocation">
10205            <td class="entry_name
10206             " rowspan="3">
10207              android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
10208            </td>
10209            <td class="entry_type">
10210                <span class="entry_type_name">byte</span>
10211
10212              <span class="entry_type_visibility"> [public as location]</span>
10213
10214              <span class="entry_type_synthetic">[synthetic] </span>
10215
10216              <span class="entry_type_hwlevel">[legacy] </span>
10217
10218
10219
10220
10221            </td> <!-- entry_type -->
10222
10223            <td class="entry_description">
10224              <p>A location object to use when generating image GPS metadata.<wbr/></p>
10225            </td>
10226
10227            <td class="entry_units">
10228            </td>
10229
10230            <td class="entry_range">
10231            </td>
10232
10233            <td class="entry_tags">
10234            </td>
10235
10236          </tr>
10237          <tr class="entries_header">
10238            <th class="th_details" colspan="5">Details</th>
10239          </tr>
10240          <tr class="entry_cont">
10241            <td class="entry_details" colspan="5">
10242              <p>Setting a location object in a request will include the GPS coordinates of the location
10243into any JPEG images captured based on the request.<wbr/> These coordinates can then be
10244viewed by anyone who receives the JPEG image.<wbr/></p>
10245            </td>
10246          </tr>
10247
10248
10249          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10250           <!-- end of entry -->
10251        
10252                
10253          <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
10254            <td class="entry_name
10255             " rowspan="1">
10256              android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
10257            </td>
10258            <td class="entry_type">
10259                <span class="entry_type_name">double</span>
10260                <span class="entry_type_container">x</span>
10261
10262                <span class="entry_type_array">
10263                  3
10264                </span>
10265              <span class="entry_type_visibility"> [hidden]</span>
10266
10267
10268              <span class="entry_type_hwlevel">[legacy] </span>
10269
10270
10271                <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
10272
10273
10274            </td> <!-- entry_type -->
10275
10276            <td class="entry_description">
10277              <p>GPS coordinates to include in output JPEG
10278EXIF.<wbr/></p>
10279            </td>
10280
10281            <td class="entry_units">
10282            </td>
10283
10284            <td class="entry_range">
10285              <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</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
10296
10297          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10298           <!-- end of entry -->
10299        
10300                
10301          <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
10302            <td class="entry_name
10303             " rowspan="1">
10304              android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
10305            </td>
10306            <td class="entry_type">
10307                <span class="entry_type_name">byte</span>
10308
10309              <span class="entry_type_visibility"> [hidden as string]</span>
10310
10311
10312              <span class="entry_type_hwlevel">[legacy] </span>
10313
10314
10315
10316
10317            </td> <!-- entry_type -->
10318
10319            <td class="entry_description">
10320              <p>32 characters describing GPS algorithm to
10321include in EXIF.<wbr/></p>
10322            </td>
10323
10324            <td class="entry_units">
10325              UTF-8 null-terminated string
10326            </td>
10327
10328            <td class="entry_range">
10329            </td>
10330
10331            <td class="entry_tags">
10332              <ul class="entry_tags">
10333                  <li><a href="#tag_BC">BC</a></li>
10334              </ul>
10335            </td>
10336
10337          </tr>
10338
10339
10340          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10341           <!-- end of entry -->
10342        
10343                
10344          <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
10345            <td class="entry_name
10346             " rowspan="1">
10347              android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
10348            </td>
10349            <td class="entry_type">
10350                <span class="entry_type_name">int64</span>
10351
10352              <span class="entry_type_visibility"> [hidden]</span>
10353
10354
10355              <span class="entry_type_hwlevel">[legacy] </span>
10356
10357
10358
10359
10360            </td> <!-- entry_type -->
10361
10362            <td class="entry_description">
10363              <p>Time GPS fix was made to include in
10364EXIF.<wbr/></p>
10365            </td>
10366
10367            <td class="entry_units">
10368              UTC in seconds since January 1,<wbr/> 1970
10369            </td>
10370
10371            <td class="entry_range">
10372            </td>
10373
10374            <td class="entry_tags">
10375              <ul class="entry_tags">
10376                  <li><a href="#tag_BC">BC</a></li>
10377              </ul>
10378            </td>
10379
10380          </tr>
10381
10382
10383          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10384           <!-- end of entry -->
10385        
10386                
10387          <tr class="entry" id="controls_android.jpeg.orientation">
10388            <td class="entry_name
10389             " rowspan="3">
10390              android.<wbr/>jpeg.<wbr/>orientation
10391            </td>
10392            <td class="entry_type">
10393                <span class="entry_type_name">int32</span>
10394
10395              <span class="entry_type_visibility"> [public]</span>
10396
10397
10398              <span class="entry_type_hwlevel">[legacy] </span>
10399
10400
10401
10402
10403            </td> <!-- entry_type -->
10404
10405            <td class="entry_description">
10406              <p>The orientation for a JPEG image.<wbr/></p>
10407            </td>
10408
10409            <td class="entry_units">
10410              Degrees in multiples of 90
10411            </td>
10412
10413            <td class="entry_range">
10414              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
10415            </td>
10416
10417            <td class="entry_tags">
10418              <ul class="entry_tags">
10419                  <li><a href="#tag_BC">BC</a></li>
10420              </ul>
10421            </td>
10422
10423          </tr>
10424          <tr class="entries_header">
10425            <th class="th_details" colspan="5">Details</th>
10426          </tr>
10427          <tr class="entry_cont">
10428            <td class="entry_details" colspan="5">
10429              <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
10430to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
10431upright.<wbr/></p>
10432<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
10433rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
10434the thumbnail data will also be rotated.<wbr/></p>
10435<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
10436by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
10437<p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
10438sample code may be used:</p>
10439<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
10440    if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
10441    int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
10442
10443    //<wbr/> Round device orientation to a multiple of 90
10444    deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
10445
10446    //<wbr/> Reverse device orientation for front-facing cameras
10447    boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
10448    if (facingFront) deviceOrientation = -deviceOrientation;
10449
10450    //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
10451    //<wbr/> the image upright relative to the device orientation
10452    int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
10453
10454    return jpegOrientation;
10455}
10456</code></pre>
10457            </td>
10458          </tr>
10459
10460
10461          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10462           <!-- end of entry -->
10463        
10464                
10465          <tr class="entry" id="controls_android.jpeg.quality">
10466            <td class="entry_name
10467             " rowspan="3">
10468              android.<wbr/>jpeg.<wbr/>quality
10469            </td>
10470            <td class="entry_type">
10471                <span class="entry_type_name">byte</span>
10472
10473              <span class="entry_type_visibility"> [public]</span>
10474
10475
10476              <span class="entry_type_hwlevel">[legacy] </span>
10477
10478
10479
10480
10481            </td> <!-- entry_type -->
10482
10483            <td class="entry_description">
10484              <p>Compression quality of the final JPEG
10485image.<wbr/></p>
10486            </td>
10487
10488            <td class="entry_units">
10489            </td>
10490
10491            <td class="entry_range">
10492              <p>1-100; larger is higher quality</p>
10493            </td>
10494
10495            <td class="entry_tags">
10496              <ul class="entry_tags">
10497                  <li><a href="#tag_BC">BC</a></li>
10498              </ul>
10499            </td>
10500
10501          </tr>
10502          <tr class="entries_header">
10503            <th class="th_details" colspan="5">Details</th>
10504          </tr>
10505          <tr class="entry_cont">
10506            <td class="entry_details" colspan="5">
10507              <p>85-95 is typical usage range.<wbr/></p>
10508            </td>
10509          </tr>
10510
10511
10512          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10513           <!-- end of entry -->
10514        
10515                
10516          <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
10517            <td class="entry_name
10518             " rowspan="1">
10519              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
10520            </td>
10521            <td class="entry_type">
10522                <span class="entry_type_name">byte</span>
10523
10524              <span class="entry_type_visibility"> [public]</span>
10525
10526
10527              <span class="entry_type_hwlevel">[legacy] </span>
10528
10529
10530
10531
10532            </td> <!-- entry_type -->
10533
10534            <td class="entry_description">
10535              <p>Compression quality of JPEG
10536thumbnail.<wbr/></p>
10537            </td>
10538
10539            <td class="entry_units">
10540            </td>
10541
10542            <td class="entry_range">
10543              <p>1-100; larger is higher quality</p>
10544            </td>
10545
10546            <td class="entry_tags">
10547              <ul class="entry_tags">
10548                  <li><a href="#tag_BC">BC</a></li>
10549              </ul>
10550            </td>
10551
10552          </tr>
10553
10554
10555          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10556           <!-- end of entry -->
10557        
10558                
10559          <tr class="entry" id="controls_android.jpeg.thumbnailSize">
10560            <td class="entry_name
10561             " rowspan="5">
10562              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
10563            </td>
10564            <td class="entry_type">
10565                <span class="entry_type_name">int32</span>
10566                <span class="entry_type_container">x</span>
10567
10568                <span class="entry_type_array">
10569                  2
10570                </span>
10571              <span class="entry_type_visibility"> [public as size]</span>
10572
10573
10574              <span class="entry_type_hwlevel">[legacy] </span>
10575
10576
10577
10578
10579            </td> <!-- entry_type -->
10580
10581            <td class="entry_description">
10582              <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
10583            </td>
10584
10585            <td class="entry_units">
10586            </td>
10587
10588            <td class="entry_range">
10589              <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
10590            </td>
10591
10592            <td class="entry_tags">
10593              <ul class="entry_tags">
10594                  <li><a href="#tag_BC">BC</a></li>
10595              </ul>
10596            </td>
10597
10598          </tr>
10599          <tr class="entries_header">
10600            <th class="th_details" colspan="5">Details</th>
10601          </tr>
10602          <tr class="entry_cont">
10603            <td class="entry_details" colspan="5">
10604              <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
10605but the captured JPEG will still be a valid image.<wbr/></p>
10606<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
10607should have the same aspect ratio as the main JPEG output.<wbr/></p>
10608<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
10609ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
10610For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
1061116:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
10612generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
10613Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
10614<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
10615the camera device will handle thumbnail rotation in one of the following ways:</p>
10616<ul>
10617<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
10618  and keep jpeg and thumbnail image data unrotated.<wbr/></li>
10619<li>Rotate the jpeg and thumbnail image data and not set
10620  <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
10621  case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
10622  capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
10623  orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
10624  size.<wbr/></li>
10625</ul>
10626            </td>
10627          </tr>
10628
10629          <tr class="entries_header">
10630            <th class="th_details" colspan="5">HAL Implementation Details</th>
10631          </tr>
10632          <tr class="entry_cont">
10633            <td class="entry_details" colspan="5">
10634              <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
10635The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
10636The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
10637thumbnail image cropping.<wbr/></p>
10638            </td>
10639          </tr>
10640
10641          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10642           <!-- end of entry -->
10643        
10644        
10645
10646      <!-- end of kind -->
10647      </tbody>
10648      <tr><td colspan="6" class="kind">static</td></tr>
10649
10650      <thead class="entries_header">
10651        <tr>
10652          <th class="th_name">Property Name</th>
10653          <th class="th_type">Type</th>
10654          <th class="th_description">Description</th>
10655          <th class="th_units">Units</th>
10656          <th class="th_range">Range</th>
10657          <th class="th_tags">Tags</th>
10658        </tr>
10659      </thead>
10660
10661      <tbody>
10662
10663        
10664
10665        
10666
10667        
10668
10669        
10670
10671                
10672          <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
10673            <td class="entry_name
10674             " rowspan="3">
10675              android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
10676            </td>
10677            <td class="entry_type">
10678                <span class="entry_type_name">int32</span>
10679                <span class="entry_type_container">x</span>
10680
10681                <span class="entry_type_array">
10682                  2 x n
10683                </span>
10684              <span class="entry_type_visibility"> [public as size]</span>
10685
10686
10687              <span class="entry_type_hwlevel">[legacy] </span>
10688
10689
10690
10691
10692            </td> <!-- entry_type -->
10693
10694            <td class="entry_description">
10695              <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
10696camera device.<wbr/></p>
10697            </td>
10698
10699            <td class="entry_units">
10700            </td>
10701
10702            <td class="entry_range">
10703            </td>
10704
10705            <td class="entry_tags">
10706              <ul class="entry_tags">
10707                  <li><a href="#tag_BC">BC</a></li>
10708              </ul>
10709            </td>
10710
10711          </tr>
10712          <tr class="entries_header">
10713            <th class="th_details" colspan="5">Details</th>
10714          </tr>
10715          <tr class="entry_cont">
10716            <td class="entry_details" colspan="5">
10717              <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
10718thumbnail should be generated.<wbr/></p>
10719<p>Below condiditions will be satisfied for this size list:</p>
10720<ul>
10721<li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
10722If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
10723<li>The aspect ratio of the largest thumbnail size will be same as the
10724aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
10725The largest size is defined as the size that has the largest pixel area
10726in a given size list.<wbr/></li>
10727<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
10728one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
10729and vice versa.<wbr/></li>
10730<li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
10731</ul>
10732            </td>
10733          </tr>
10734
10735
10736          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10737           <!-- end of entry -->
10738        
10739                
10740          <tr class="entry" id="static_android.jpeg.maxSize">
10741            <td class="entry_name
10742             " rowspan="3">
10743              android.<wbr/>jpeg.<wbr/>max<wbr/>Size
10744            </td>
10745            <td class="entry_type">
10746                <span class="entry_type_name">int32</span>
10747
10748              <span class="entry_type_visibility"> [system]</span>
10749
10750
10751
10752
10753
10754
10755            </td> <!-- entry_type -->
10756
10757            <td class="entry_description">
10758              <p>Maximum size in bytes for the compressed
10759JPEG buffer</p>
10760            </td>
10761
10762            <td class="entry_units">
10763            </td>
10764
10765            <td class="entry_range">
10766              <p>Must be large enough to fit any JPEG produced by
10767the camera</p>
10768            </td>
10769
10770            <td class="entry_tags">
10771            </td>
10772
10773          </tr>
10774          <tr class="entries_header">
10775            <th class="th_details" colspan="5">Details</th>
10776          </tr>
10777          <tr class="entry_cont">
10778            <td class="entry_details" colspan="5">
10779              <p>This is used for sizing the gralloc buffers for
10780JPEG</p>
10781            </td>
10782          </tr>
10783
10784
10785          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10786           <!-- end of entry -->
10787        
10788        
10789
10790      <!-- end of kind -->
10791      </tbody>
10792      <tr><td colspan="6" class="kind">dynamic</td></tr>
10793
10794      <thead class="entries_header">
10795        <tr>
10796          <th class="th_name">Property Name</th>
10797          <th class="th_type">Type</th>
10798          <th class="th_description">Description</th>
10799          <th class="th_units">Units</th>
10800          <th class="th_range">Range</th>
10801          <th class="th_tags">Tags</th>
10802        </tr>
10803      </thead>
10804
10805      <tbody>
10806
10807        
10808
10809        
10810
10811        
10812
10813        
10814
10815                
10816          <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
10817            <td class="entry_name
10818             " rowspan="3">
10819              android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
10820            </td>
10821            <td class="entry_type">
10822                <span class="entry_type_name">byte</span>
10823
10824              <span class="entry_type_visibility"> [public as location]</span>
10825
10826              <span class="entry_type_synthetic">[synthetic] </span>
10827
10828              <span class="entry_type_hwlevel">[legacy] </span>
10829
10830
10831
10832
10833            </td> <!-- entry_type -->
10834
10835            <td class="entry_description">
10836              <p>A location object to use when generating image GPS metadata.<wbr/></p>
10837            </td>
10838
10839            <td class="entry_units">
10840            </td>
10841
10842            <td class="entry_range">
10843            </td>
10844
10845            <td class="entry_tags">
10846            </td>
10847
10848          </tr>
10849          <tr class="entries_header">
10850            <th class="th_details" colspan="5">Details</th>
10851          </tr>
10852          <tr class="entry_cont">
10853            <td class="entry_details" colspan="5">
10854              <p>Setting a location object in a request will include the GPS coordinates of the location
10855into any JPEG images captured based on the request.<wbr/> These coordinates can then be
10856viewed by anyone who receives the JPEG image.<wbr/></p>
10857            </td>
10858          </tr>
10859
10860
10861          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10862           <!-- end of entry -->
10863        
10864                
10865          <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
10866            <td class="entry_name
10867             " rowspan="1">
10868              android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
10869            </td>
10870            <td class="entry_type">
10871                <span class="entry_type_name">double</span>
10872                <span class="entry_type_container">x</span>
10873
10874                <span class="entry_type_array">
10875                  3
10876                </span>
10877              <span class="entry_type_visibility"> [hidden]</span>
10878
10879
10880              <span class="entry_type_hwlevel">[legacy] </span>
10881
10882
10883                <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
10884
10885
10886            </td> <!-- entry_type -->
10887
10888            <td class="entry_description">
10889              <p>GPS coordinates to include in output JPEG
10890EXIF.<wbr/></p>
10891            </td>
10892
10893            <td class="entry_units">
10894            </td>
10895
10896            <td class="entry_range">
10897              <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
10898            </td>
10899
10900            <td class="entry_tags">
10901              <ul class="entry_tags">
10902                  <li><a href="#tag_BC">BC</a></li>
10903              </ul>
10904            </td>
10905
10906          </tr>
10907
10908
10909          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10910           <!-- end of entry -->
10911        
10912                
10913          <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
10914            <td class="entry_name
10915             " rowspan="1">
10916              android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
10917            </td>
10918            <td class="entry_type">
10919                <span class="entry_type_name">byte</span>
10920
10921              <span class="entry_type_visibility"> [hidden as string]</span>
10922
10923
10924              <span class="entry_type_hwlevel">[legacy] </span>
10925
10926
10927
10928
10929            </td> <!-- entry_type -->
10930
10931            <td class="entry_description">
10932              <p>32 characters describing GPS algorithm to
10933include in EXIF.<wbr/></p>
10934            </td>
10935
10936            <td class="entry_units">
10937              UTF-8 null-terminated string
10938            </td>
10939
10940            <td class="entry_range">
10941            </td>
10942
10943            <td class="entry_tags">
10944              <ul class="entry_tags">
10945                  <li><a href="#tag_BC">BC</a></li>
10946              </ul>
10947            </td>
10948
10949          </tr>
10950
10951
10952          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10953           <!-- end of entry -->
10954        
10955                
10956          <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
10957            <td class="entry_name
10958             " rowspan="1">
10959              android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
10960            </td>
10961            <td class="entry_type">
10962                <span class="entry_type_name">int64</span>
10963
10964              <span class="entry_type_visibility"> [hidden]</span>
10965
10966
10967              <span class="entry_type_hwlevel">[legacy] </span>
10968
10969
10970
10971
10972            </td> <!-- entry_type -->
10973
10974            <td class="entry_description">
10975              <p>Time GPS fix was made to include in
10976EXIF.<wbr/></p>
10977            </td>
10978
10979            <td class="entry_units">
10980              UTC in seconds since January 1,<wbr/> 1970
10981            </td>
10982
10983            <td class="entry_range">
10984            </td>
10985
10986            <td class="entry_tags">
10987              <ul class="entry_tags">
10988                  <li><a href="#tag_BC">BC</a></li>
10989              </ul>
10990            </td>
10991
10992          </tr>
10993
10994
10995          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10996           <!-- end of entry -->
10997        
10998                
10999          <tr class="entry" id="dynamic_android.jpeg.orientation">
11000            <td class="entry_name
11001             " rowspan="3">
11002              android.<wbr/>jpeg.<wbr/>orientation
11003            </td>
11004            <td class="entry_type">
11005                <span class="entry_type_name">int32</span>
11006
11007              <span class="entry_type_visibility"> [public]</span>
11008
11009
11010              <span class="entry_type_hwlevel">[legacy] </span>
11011
11012
11013
11014
11015            </td> <!-- entry_type -->
11016
11017            <td class="entry_description">
11018              <p>The orientation for a JPEG image.<wbr/></p>
11019            </td>
11020
11021            <td class="entry_units">
11022              Degrees in multiples of 90
11023            </td>
11024
11025            <td class="entry_range">
11026              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
11027            </td>
11028
11029            <td class="entry_tags">
11030              <ul class="entry_tags">
11031                  <li><a href="#tag_BC">BC</a></li>
11032              </ul>
11033            </td>
11034
11035          </tr>
11036          <tr class="entries_header">
11037            <th class="th_details" colspan="5">Details</th>
11038          </tr>
11039          <tr class="entry_cont">
11040            <td class="entry_details" colspan="5">
11041              <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
11042to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
11043upright.<wbr/></p>
11044<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
11045rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
11046the thumbnail data will also be rotated.<wbr/></p>
11047<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
11048by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
11049<p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
11050sample code may be used:</p>
11051<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
11052    if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
11053    int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
11054
11055    //<wbr/> Round device orientation to a multiple of 90
11056    deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
11057
11058    //<wbr/> Reverse device orientation for front-facing cameras
11059    boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
11060    if (facingFront) deviceOrientation = -deviceOrientation;
11061
11062    //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
11063    //<wbr/> the image upright relative to the device orientation
11064    int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
11065
11066    return jpegOrientation;
11067}
11068</code></pre>
11069            </td>
11070          </tr>
11071
11072
11073          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11074           <!-- end of entry -->
11075        
11076                
11077          <tr class="entry" id="dynamic_android.jpeg.quality">
11078            <td class="entry_name
11079             " rowspan="3">
11080              android.<wbr/>jpeg.<wbr/>quality
11081            </td>
11082            <td class="entry_type">
11083                <span class="entry_type_name">byte</span>
11084
11085              <span class="entry_type_visibility"> [public]</span>
11086
11087
11088              <span class="entry_type_hwlevel">[legacy] </span>
11089
11090
11091
11092
11093            </td> <!-- entry_type -->
11094
11095            <td class="entry_description">
11096              <p>Compression quality of the final JPEG
11097image.<wbr/></p>
11098            </td>
11099
11100            <td class="entry_units">
11101            </td>
11102
11103            <td class="entry_range">
11104              <p>1-100; larger is higher quality</p>
11105            </td>
11106
11107            <td class="entry_tags">
11108              <ul class="entry_tags">
11109                  <li><a href="#tag_BC">BC</a></li>
11110              </ul>
11111            </td>
11112
11113          </tr>
11114          <tr class="entries_header">
11115            <th class="th_details" colspan="5">Details</th>
11116          </tr>
11117          <tr class="entry_cont">
11118            <td class="entry_details" colspan="5">
11119              <p>85-95 is typical usage range.<wbr/></p>
11120            </td>
11121          </tr>
11122
11123
11124          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11125           <!-- end of entry -->
11126        
11127                
11128          <tr class="entry" id="dynamic_android.jpeg.size">
11129            <td class="entry_name
11130             " rowspan="3">
11131              android.<wbr/>jpeg.<wbr/>size
11132            </td>
11133            <td class="entry_type">
11134                <span class="entry_type_name">int32</span>
11135
11136              <span class="entry_type_visibility"> [system]</span>
11137
11138
11139
11140
11141
11142
11143            </td> <!-- entry_type -->
11144
11145            <td class="entry_description">
11146              <p>The size of the compressed JPEG image,<wbr/> in
11147bytes</p>
11148            </td>
11149
11150            <td class="entry_units">
11151            </td>
11152
11153            <td class="entry_range">
11154              <p>&gt;= 0</p>
11155            </td>
11156
11157            <td class="entry_tags">
11158              <ul class="entry_tags">
11159                  <li><a href="#tag_FUTURE">FUTURE</a></li>
11160              </ul>
11161            </td>
11162
11163          </tr>
11164          <tr class="entries_header">
11165            <th class="th_details" colspan="5">Details</th>
11166          </tr>
11167          <tr class="entry_cont">
11168            <td class="entry_details" colspan="5">
11169              <p>If no JPEG output is produced for the request,<wbr/>
11170this must be 0.<wbr/></p>
11171<p>Otherwise,<wbr/> this describes the real size of the compressed
11172JPEG image placed in the output stream.<wbr/>  More specifically,<wbr/>
11173if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
11174has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
11175the JPEG stream will be 1000000 bytes,<wbr/> of which the first
11176500000 make up the real data.<wbr/></p>
11177            </td>
11178          </tr>
11179
11180
11181          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11182           <!-- end of entry -->
11183        
11184                
11185          <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
11186            <td class="entry_name
11187             " rowspan="1">
11188              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
11189            </td>
11190            <td class="entry_type">
11191                <span class="entry_type_name">byte</span>
11192
11193              <span class="entry_type_visibility"> [public]</span>
11194
11195
11196              <span class="entry_type_hwlevel">[legacy] </span>
11197
11198
11199
11200
11201            </td> <!-- entry_type -->
11202
11203            <td class="entry_description">
11204              <p>Compression quality of JPEG
11205thumbnail.<wbr/></p>
11206            </td>
11207
11208            <td class="entry_units">
11209            </td>
11210
11211            <td class="entry_range">
11212              <p>1-100; larger is higher quality</p>
11213            </td>
11214
11215            <td class="entry_tags">
11216              <ul class="entry_tags">
11217                  <li><a href="#tag_BC">BC</a></li>
11218              </ul>
11219            </td>
11220
11221          </tr>
11222
11223
11224          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11225           <!-- end of entry -->
11226        
11227                
11228          <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
11229            <td class="entry_name
11230             " rowspan="5">
11231              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
11232            </td>
11233            <td class="entry_type">
11234                <span class="entry_type_name">int32</span>
11235                <span class="entry_type_container">x</span>
11236
11237                <span class="entry_type_array">
11238                  2
11239                </span>
11240              <span class="entry_type_visibility"> [public as size]</span>
11241
11242
11243              <span class="entry_type_hwlevel">[legacy] </span>
11244
11245
11246
11247
11248            </td> <!-- entry_type -->
11249
11250            <td class="entry_description">
11251              <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
11252            </td>
11253
11254            <td class="entry_units">
11255            </td>
11256
11257            <td class="entry_range">
11258              <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
11259            </td>
11260
11261            <td class="entry_tags">
11262              <ul class="entry_tags">
11263                  <li><a href="#tag_BC">BC</a></li>
11264              </ul>
11265            </td>
11266
11267          </tr>
11268          <tr class="entries_header">
11269            <th class="th_details" colspan="5">Details</th>
11270          </tr>
11271          <tr class="entry_cont">
11272            <td class="entry_details" colspan="5">
11273              <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
11274but the captured JPEG will still be a valid image.<wbr/></p>
11275<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
11276should have the same aspect ratio as the main JPEG output.<wbr/></p>
11277<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
11278ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
11279For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
1128016:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
11281generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
11282Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
11283<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
11284the camera device will handle thumbnail rotation in one of the following ways:</p>
11285<ul>
11286<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
11287  and keep jpeg and thumbnail image data unrotated.<wbr/></li>
11288<li>Rotate the jpeg and thumbnail image data and not set
11289  <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
11290  case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
11291  capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
11292  orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
11293  size.<wbr/></li>
11294</ul>
11295            </td>
11296          </tr>
11297
11298          <tr class="entries_header">
11299            <th class="th_details" colspan="5">HAL Implementation Details</th>
11300          </tr>
11301          <tr class="entry_cont">
11302            <td class="entry_details" colspan="5">
11303              <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
11304The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
11305The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
11306thumbnail image cropping.<wbr/></p>
11307            </td>
11308          </tr>
11309
11310          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11311           <!-- end of entry -->
11312        
11313        
11314
11315      <!-- end of kind -->
11316      </tbody>
11317
11318  <!-- end of section -->
11319  <tr><td colspan="6" id="section_lens" class="section">lens</td></tr>
11320
11321
11322      <tr><td colspan="6" class="kind">controls</td></tr>
11323
11324      <thead class="entries_header">
11325        <tr>
11326          <th class="th_name">Property Name</th>
11327          <th class="th_type">Type</th>
11328          <th class="th_description">Description</th>
11329          <th class="th_units">Units</th>
11330          <th class="th_range">Range</th>
11331          <th class="th_tags">Tags</th>
11332        </tr>
11333      </thead>
11334
11335      <tbody>
11336
11337        
11338
11339        
11340
11341        
11342
11343        
11344
11345                
11346          <tr class="entry" id="controls_android.lens.aperture">
11347            <td class="entry_name
11348             " rowspan="3">
11349              android.<wbr/>lens.<wbr/>aperture
11350            </td>
11351            <td class="entry_type">
11352                <span class="entry_type_name">float</span>
11353
11354              <span class="entry_type_visibility"> [public]</span>
11355
11356
11357              <span class="entry_type_hwlevel">[full] </span>
11358
11359
11360
11361
11362            </td> <!-- entry_type -->
11363
11364            <td class="entry_description">
11365              <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
11366effective aperture diameter.<wbr/></p>
11367            </td>
11368
11369            <td class="entry_units">
11370              The f-number (f/<wbr/>N)
11371            </td>
11372
11373            <td class="entry_range">
11374              <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
11375            </td>
11376
11377            <td class="entry_tags">
11378              <ul class="entry_tags">
11379                  <li><a href="#tag_V1">V1</a></li>
11380              </ul>
11381            </td>
11382
11383          </tr>
11384          <tr class="entries_header">
11385            <th class="th_details" colspan="5">Details</th>
11386          </tr>
11387          <tr class="entry_cont">
11388            <td class="entry_details" colspan="5">
11389              <p>Setting this value is only supported on the camera devices that have a variable
11390aperture lens.<wbr/></p>
11391<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
11392this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
11393<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>
11394to achieve manual exposure control.<wbr/></p>
11395<p>The requested aperture value may take several frames to reach the
11396requested value; the camera device will report the current (intermediate)
11397aperture size in capture result metadata while the aperture is changing.<wbr/>
11398While 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>
11399<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
11400the ON modes,<wbr/> this will be overridden by the camera device
11401auto-exposure algorithm,<wbr/> the overridden values are then provided
11402back to the user in the corresponding result.<wbr/></p>
11403            </td>
11404          </tr>
11405
11406
11407          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11408           <!-- end of entry -->
11409        
11410                
11411          <tr class="entry" id="controls_android.lens.filterDensity">
11412            <td class="entry_name
11413             " rowspan="3">
11414              android.<wbr/>lens.<wbr/>filter<wbr/>Density
11415            </td>
11416            <td class="entry_type">
11417                <span class="entry_type_name">float</span>
11418
11419              <span class="entry_type_visibility"> [public]</span>
11420
11421
11422              <span class="entry_type_hwlevel">[full] </span>
11423
11424
11425
11426
11427            </td> <!-- entry_type -->
11428
11429            <td class="entry_description">
11430              <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
11431            </td>
11432
11433            <td class="entry_units">
11434              Exposure Value (EV)
11435            </td>
11436
11437            <td class="entry_range">
11438              <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
11439            </td>
11440
11441            <td class="entry_tags">
11442              <ul class="entry_tags">
11443                  <li><a href="#tag_V1">V1</a></li>
11444              </ul>
11445            </td>
11446
11447          </tr>
11448          <tr class="entries_header">
11449            <th class="th_details" colspan="5">Details</th>
11450          </tr>
11451          <tr class="entry_cont">
11452            <td class="entry_details" colspan="5">
11453              <p>This control will not be supported on most camera devices.<wbr/></p>
11454<p>Lens filters are typically used to lower the amount of light the
11455sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
11456step is the standard logarithmic representation,<wbr/> which are
11457non-negative,<wbr/> and inversely proportional to the amount of light
11458hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
11459in no reduction of the incoming light,<wbr/> and setting this to 2 would
11460mean that the filter is set to reduce incoming light by two stops
11461(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
11462<p>It may take several frames before the lens filter density changes
11463to the requested value.<wbr/> While the filter density is still changing,<wbr/>
11464<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
11465            </td>
11466          </tr>
11467
11468
11469          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11470           <!-- end of entry -->
11471        
11472                
11473          <tr class="entry" id="controls_android.lens.focalLength">
11474            <td class="entry_name
11475             " rowspan="3">
11476              android.<wbr/>lens.<wbr/>focal<wbr/>Length
11477            </td>
11478            <td class="entry_type">
11479                <span class="entry_type_name">float</span>
11480
11481              <span class="entry_type_visibility"> [public]</span>
11482
11483
11484              <span class="entry_type_hwlevel">[legacy] </span>
11485
11486
11487
11488
11489            </td> <!-- entry_type -->
11490
11491            <td class="entry_description">
11492              <p>The desired lens focal length; used for optical zoom.<wbr/></p>
11493            </td>
11494
11495            <td class="entry_units">
11496              Millimeters
11497            </td>
11498
11499            <td class="entry_range">
11500              <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
11501            </td>
11502
11503            <td class="entry_tags">
11504              <ul class="entry_tags">
11505                  <li><a href="#tag_V1">V1</a></li>
11506              </ul>
11507            </td>
11508
11509          </tr>
11510          <tr class="entries_header">
11511            <th class="th_details" colspan="5">Details</th>
11512          </tr>
11513          <tr class="entry_cont">
11514            <td class="entry_details" colspan="5">
11515              <p>This setting controls the physical focal length of the camera
11516device's lens.<wbr/> Changing the focal length changes the field of
11517view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
11518<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
11519setting won't be applied instantaneously,<wbr/> and it may take several
11520frames before the lens can change to the requested focal length.<wbr/>
11521While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
11522be set to MOVING.<wbr/></p>
11523<p>Optical zoom will not be supported on most devices.<wbr/></p>
11524            </td>
11525          </tr>
11526
11527
11528          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11529           <!-- end of entry -->
11530        
11531                
11532          <tr class="entry" id="controls_android.lens.focusDistance">
11533            <td class="entry_name
11534             " rowspan="3">
11535              android.<wbr/>lens.<wbr/>focus<wbr/>Distance
11536            </td>
11537            <td class="entry_type">
11538                <span class="entry_type_name">float</span>
11539
11540              <span class="entry_type_visibility"> [public]</span>
11541
11542
11543              <span class="entry_type_hwlevel">[full] </span>
11544
11545
11546
11547
11548            </td> <!-- entry_type -->
11549
11550            <td class="entry_description">
11551              <p>Desired distance to plane of sharpest focus,<wbr/>
11552measured from frontmost surface of the lens.<wbr/></p>
11553            </td>
11554
11555            <td class="entry_units">
11556              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
11557            </td>
11558
11559            <td class="entry_range">
11560              <p>&gt;= 0</p>
11561            </td>
11562
11563            <td class="entry_tags">
11564              <ul class="entry_tags">
11565                  <li><a href="#tag_BC">BC</a></li>
11566                  <li><a href="#tag_V1">V1</a></li>
11567              </ul>
11568            </td>
11569
11570          </tr>
11571          <tr class="entries_header">
11572            <th class="th_details" colspan="5">Details</th>
11573          </tr>
11574          <tr class="entry_cont">
11575            <td class="entry_details" colspan="5">
11576              <p>This control can be used for setting manual focus,<wbr/> on devices that support
11577the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
11578<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
11579<p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
11580<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>
11581<p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
11582instantaneously,<wbr/> and it may take several frames before the lens
11583can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
11584<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
11585<p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
11586for infinity focus.<wbr/></p>
11587            </td>
11588          </tr>
11589
11590
11591          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11592           <!-- end of entry -->
11593        
11594                
11595          <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
11596            <td class="entry_name
11597             " rowspan="3">
11598              android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
11599            </td>
11600            <td class="entry_type">
11601                <span class="entry_type_name entry_type_name_enum">byte</span>
11602
11603              <span class="entry_type_visibility"> [public]</span>
11604
11605
11606              <span class="entry_type_hwlevel">[limited] </span>
11607
11608
11609
11610                <ul class="entry_type_enum">
11611                  <li>
11612                    <span class="entry_type_enum_name">OFF</span>
11613                    <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
11614                  </li>
11615                  <li>
11616                    <span class="entry_type_enum_name">ON</span>
11617                    <span class="entry_type_enum_optional">[optional]</span>
11618                    <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
11619                  </li>
11620                </ul>
11621
11622            </td> <!-- entry_type -->
11623
11624            <td class="entry_description">
11625              <p>Sets whether the camera device uses optical image stabilization (OIS)
11626when capturing images.<wbr/></p>
11627            </td>
11628
11629            <td class="entry_units">
11630            </td>
11631
11632            <td class="entry_range">
11633              <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
11634            </td>
11635
11636            <td class="entry_tags">
11637              <ul class="entry_tags">
11638                  <li><a href="#tag_V1">V1</a></li>
11639              </ul>
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>OIS is used to compensate for motion blur due to small
11649movements of the camera during capture.<wbr/> Unlike digital image
11650stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
11651makes use of mechanical elements to stabilize the camera
11652sensor,<wbr/> and thus allows for longer exposure times before
11653camera shake becomes apparent.<wbr/></p>
11654<p>Switching between different optical stabilization modes may take several
11655frames to initialize,<wbr/> the camera device will report the current mode in
11656capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
11657optical stabilization modes in the first several capture results may still
11658be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
11659<p>If a camera device supports both OIS and digital image stabilization
11660(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
11661interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
11662<p>Not all devices will support OIS; see
11663<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
11664available controls.<wbr/></p>
11665            </td>
11666          </tr>
11667
11668
11669          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11670           <!-- end of entry -->
11671        
11672        
11673
11674      <!-- end of kind -->
11675      </tbody>
11676      <tr><td colspan="6" class="kind">static</td></tr>
11677
11678      <thead class="entries_header">
11679        <tr>
11680          <th class="th_name">Property Name</th>
11681          <th class="th_type">Type</th>
11682          <th class="th_description">Description</th>
11683          <th class="th_units">Units</th>
11684          <th class="th_range">Range</th>
11685          <th class="th_tags">Tags</th>
11686        </tr>
11687      </thead>
11688
11689      <tbody>
11690
11691        
11692
11693        
11694
11695        
11696
11697        
11698                
11699            
11700
11701                
11702          <tr class="entry" id="static_android.lens.info.availableApertures">
11703            <td class="entry_name
11704             " rowspan="3">
11705              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
11706            </td>
11707            <td class="entry_type">
11708                <span class="entry_type_name">float</span>
11709                <span class="entry_type_container">x</span>
11710
11711                <span class="entry_type_array">
11712                  n
11713                </span>
11714              <span class="entry_type_visibility"> [public]</span>
11715
11716
11717              <span class="entry_type_hwlevel">[full] </span>
11718
11719
11720
11721
11722            </td> <!-- entry_type -->
11723
11724            <td class="entry_description">
11725              <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
11726supported by this camera device.<wbr/></p>
11727            </td>
11728
11729            <td class="entry_units">
11730              The aperture f-number
11731            </td>
11732
11733            <td class="entry_range">
11734            </td>
11735
11736            <td class="entry_tags">
11737              <ul class="entry_tags">
11738                  <li><a href="#tag_V1">V1</a></li>
11739              </ul>
11740            </td>
11741
11742          </tr>
11743          <tr class="entries_header">
11744            <th class="th_details" colspan="5">Details</th>
11745          </tr>
11746          <tr class="entry_cont">
11747            <td class="entry_details" colspan="5">
11748              <p>If the camera device doesn't support a variable lens aperture,<wbr/>
11749this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
11750<p>If the camera device supports a variable aperture,<wbr/> the aperture values
11751in this list will be sorted in ascending order.<wbr/></p>
11752            </td>
11753          </tr>
11754
11755
11756          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11757           <!-- end of entry -->
11758        
11759                
11760          <tr class="entry" id="static_android.lens.info.availableFilterDensities">
11761            <td class="entry_name
11762             " rowspan="3">
11763              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
11764            </td>
11765            <td class="entry_type">
11766                <span class="entry_type_name">float</span>
11767                <span class="entry_type_container">x</span>
11768
11769                <span class="entry_type_array">
11770                  n
11771                </span>
11772              <span class="entry_type_visibility"> [public]</span>
11773
11774
11775              <span class="entry_type_hwlevel">[full] </span>
11776
11777
11778
11779
11780            </td> <!-- entry_type -->
11781
11782            <td class="entry_description">
11783              <p>List of neutral density filter values for
11784<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
11785            </td>
11786
11787            <td class="entry_units">
11788              Exposure value (EV)
11789            </td>
11790
11791            <td class="entry_range">
11792              <p>Values are &gt;= 0</p>
11793            </td>
11794
11795            <td class="entry_tags">
11796              <ul class="entry_tags">
11797                  <li><a href="#tag_V1">V1</a></li>
11798              </ul>
11799            </td>
11800
11801          </tr>
11802          <tr class="entries_header">
11803            <th class="th_details" colspan="5">Details</th>
11804          </tr>
11805          <tr class="entry_cont">
11806            <td class="entry_details" colspan="5">
11807              <p>If a neutral density filter is not supported by this camera device,<wbr/>
11808this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
11809filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
11810            </td>
11811          </tr>
11812
11813
11814          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11815           <!-- end of entry -->
11816        
11817                
11818          <tr class="entry" id="static_android.lens.info.availableFocalLengths">
11819            <td class="entry_name
11820             " rowspan="3">
11821              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
11822            </td>
11823            <td class="entry_type">
11824                <span class="entry_type_name">float</span>
11825                <span class="entry_type_container">x</span>
11826
11827                <span class="entry_type_array">
11828                  n
11829                </span>
11830              <span class="entry_type_visibility"> [public]</span>
11831
11832
11833              <span class="entry_type_hwlevel">[legacy] </span>
11834
11835
11836                <div class="entry_type_notes">The list of available focal lengths</div>
11837
11838
11839            </td> <!-- entry_type -->
11840
11841            <td class="entry_description">
11842              <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
11843device.<wbr/></p>
11844            </td>
11845
11846            <td class="entry_units">
11847              Millimeters
11848            </td>
11849
11850            <td class="entry_range">
11851              <p>Values are &gt; 0</p>
11852            </td>
11853
11854            <td class="entry_tags">
11855              <ul class="entry_tags">
11856                  <li><a href="#tag_BC">BC</a></li>
11857                  <li><a href="#tag_V1">V1</a></li>
11858              </ul>
11859            </td>
11860
11861          </tr>
11862          <tr class="entries_header">
11863            <th class="th_details" colspan="5">Details</th>
11864          </tr>
11865          <tr class="entry_cont">
11866            <td class="entry_details" colspan="5">
11867              <p>If optical zoom is not supported,<wbr/> this list will only contain
11868a single value corresponding to the fixed focal length of the
11869device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
11870by the camera device,<wbr/> in ascending order.<wbr/></p>
11871            </td>
11872          </tr>
11873
11874
11875          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11876           <!-- end of entry -->
11877        
11878                
11879          <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
11880            <td class="entry_name
11881             " rowspan="3">
11882              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
11883            </td>
11884            <td class="entry_type">
11885                <span class="entry_type_name">byte</span>
11886                <span class="entry_type_container">x</span>
11887
11888                <span class="entry_type_array">
11889                  n
11890                </span>
11891              <span class="entry_type_visibility"> [public as enumList]</span>
11892
11893
11894              <span class="entry_type_hwlevel">[limited] </span>
11895
11896
11897                <div class="entry_type_notes">list of enums</div>
11898
11899
11900            </td> <!-- entry_type -->
11901
11902            <td class="entry_description">
11903              <p>List of optical image stabilization (OIS) modes for
11904<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>
11905            </td>
11906
11907            <td class="entry_units">
11908            </td>
11909
11910            <td class="entry_range">
11911              <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
11912            </td>
11913
11914            <td class="entry_tags">
11915              <ul class="entry_tags">
11916                  <li><a href="#tag_V1">V1</a></li>
11917              </ul>
11918            </td>
11919
11920          </tr>
11921          <tr class="entries_header">
11922            <th class="th_details" colspan="5">Details</th>
11923          </tr>
11924          <tr class="entry_cont">
11925            <td class="entry_details" colspan="5">
11926              <p>If OIS is not supported by a given camera device,<wbr/> this list will
11927contain only OFF.<wbr/></p>
11928            </td>
11929          </tr>
11930
11931
11932          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11933           <!-- end of entry -->
11934        
11935                
11936          <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
11937            <td class="entry_name
11938             " rowspan="3">
11939              android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
11940            </td>
11941            <td class="entry_type">
11942                <span class="entry_type_name">float</span>
11943
11944              <span class="entry_type_visibility"> [public]</span>
11945
11946
11947              <span class="entry_type_hwlevel">[limited] </span>
11948
11949
11950
11951
11952            </td> <!-- entry_type -->
11953
11954            <td class="entry_description">
11955              <p>Hyperfocal distance for this lens.<wbr/></p>
11956            </td>
11957
11958            <td class="entry_units">
11959              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
11960            </td>
11961
11962            <td class="entry_range">
11963              <p>If lens is fixed focus,<wbr/> &gt;= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
11964within <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>
11965            </td>
11966
11967            <td class="entry_tags">
11968            </td>
11969
11970          </tr>
11971          <tr class="entries_header">
11972            <th class="th_details" colspan="5">Details</th>
11973          </tr>
11974          <tr class="entry_cont">
11975            <td class="entry_details" colspan="5">
11976              <p>If the lens is not fixed focus,<wbr/> the camera device will report this
11977field 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>
11978            </td>
11979          </tr>
11980
11981
11982          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11983           <!-- end of entry -->
11984        
11985                
11986          <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
11987            <td class="entry_name
11988             " rowspan="5">
11989              android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
11990            </td>
11991            <td class="entry_type">
11992                <span class="entry_type_name">float</span>
11993
11994              <span class="entry_type_visibility"> [public]</span>
11995
11996
11997              <span class="entry_type_hwlevel">[limited] </span>
11998
11999
12000
12001
12002            </td> <!-- entry_type -->
12003
12004            <td class="entry_description">
12005              <p>Shortest distance from frontmost surface
12006of the lens that can be brought into sharp focus.<wbr/></p>
12007            </td>
12008
12009            <td class="entry_units">
12010              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12011            </td>
12012
12013            <td class="entry_range">
12014              <p>&gt;= 0</p>
12015            </td>
12016
12017            <td class="entry_tags">
12018              <ul class="entry_tags">
12019                  <li><a href="#tag_V1">V1</a></li>
12020              </ul>
12021            </td>
12022
12023          </tr>
12024          <tr class="entries_header">
12025            <th class="th_details" colspan="5">Details</th>
12026          </tr>
12027          <tr class="entry_cont">
12028            <td class="entry_details" colspan="5">
12029              <p>If the lens is fixed-focus,<wbr/> this will be
120300.<wbr/></p>
12031            </td>
12032          </tr>
12033
12034          <tr class="entries_header">
12035            <th class="th_details" colspan="5">HAL Implementation Details</th>
12036          </tr>
12037          <tr class="entry_cont">
12038            <td class="entry_details" colspan="5">
12039              <p>Mandatory for FULL devices; LIMITED devices
12040must always set this value to 0 for fixed-focus; and may omit
12041the minimum focus distance otherwise.<wbr/></p>
12042<p>This field is also mandatory for all devices advertising
12043the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
12044            </td>
12045          </tr>
12046
12047          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12048           <!-- end of entry -->
12049        
12050                
12051          <tr class="entry" id="static_android.lens.info.shadingMapSize">
12052            <td class="entry_name
12053             " rowspan="3">
12054              android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
12055            </td>
12056            <td class="entry_type">
12057                <span class="entry_type_name">int32</span>
12058                <span class="entry_type_container">x</span>
12059
12060                <span class="entry_type_array">
12061                  2
12062                </span>
12063              <span class="entry_type_visibility"> [hidden as size]</span>
12064
12065
12066              <span class="entry_type_hwlevel">[full] </span>
12067
12068
12069                <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
12070
12071
12072            </td> <!-- entry_type -->
12073
12074            <td class="entry_description">
12075              <p>Dimensions of lens shading map.<wbr/></p>
12076            </td>
12077
12078            <td class="entry_units">
12079            </td>
12080
12081            <td class="entry_range">
12082              <p>Both values &gt;= 1</p>
12083            </td>
12084
12085            <td class="entry_tags">
12086              <ul class="entry_tags">
12087                  <li><a href="#tag_V1">V1</a></li>
12088              </ul>
12089            </td>
12090
12091          </tr>
12092          <tr class="entries_header">
12093            <th class="th_details" colspan="5">Details</th>
12094          </tr>
12095          <tr class="entry_cont">
12096            <td class="entry_details" colspan="5">
12097              <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
12098must be smaller than 64x64.<wbr/></p>
12099            </td>
12100          </tr>
12101
12102
12103          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12104           <!-- end of entry -->
12105        
12106                
12107          <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
12108            <td class="entry_name
12109             " rowspan="5">
12110              android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
12111            </td>
12112            <td class="entry_type">
12113                <span class="entry_type_name entry_type_name_enum">byte</span>
12114
12115              <span class="entry_type_visibility"> [public]</span>
12116
12117
12118              <span class="entry_type_hwlevel">[limited] </span>
12119
12120
12121
12122                <ul class="entry_type_enum">
12123                  <li>
12124                    <span class="entry_type_enum_name">UNCALIBRATED</span>
12125                    <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
12126<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
12127<p>Setting the lens to the same focus distance on separate occasions may
12128result in a different real focus distance,<wbr/> depending on factors such
12129as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
12130and the device temperature.<wbr/> The focus distance value will still be
12131in 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
12132represents the farthest focus.<wbr/></p></span>
12133                  </li>
12134                  <li>
12135                    <span class="entry_type_enum_name">APPROXIMATE</span>
12136                    <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
12137<p>However,<wbr/> setting the lens to the same focus distance
12138on separate occasions may result in a different real
12139focus distance,<wbr/> depending on factors such as the
12140orientation of the device,<wbr/> the age of the focusing
12141mechanism,<wbr/> and the device temperature.<wbr/></p></span>
12142                  </li>
12143                  <li>
12144                    <span class="entry_type_enum_name">CALIBRATED</span>
12145                    <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
12146is calibrated.<wbr/></p>
12147<p>The lens mechanism is calibrated so that setting the
12148same focus distance is repeatable on multiple
12149occasions with good accuracy,<wbr/> and the focus distance
12150corresponds to the real physical distance to the plane
12151of best focus.<wbr/></p></span>
12152                  </li>
12153                </ul>
12154
12155            </td> <!-- entry_type -->
12156
12157            <td class="entry_description">
12158              <p>The lens focus distance calibration quality.<wbr/></p>
12159            </td>
12160
12161            <td class="entry_units">
12162            </td>
12163
12164            <td class="entry_range">
12165            </td>
12166
12167            <td class="entry_tags">
12168              <ul class="entry_tags">
12169                  <li><a href="#tag_V1">V1</a></li>
12170              </ul>
12171            </td>
12172
12173          </tr>
12174          <tr class="entries_header">
12175            <th class="th_details" colspan="5">Details</th>
12176          </tr>
12177          <tr class="entry_cont">
12178            <td class="entry_details" colspan="5">
12179              <p>The lens focus distance calibration quality determines the reliability of
12180focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
12181<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
12182<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
12183<p>APPROXIMATE and CALIBRATED devices report the focus metadata in
12184units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
12185and increasing positive numbers represent focusing closer and closer
12186to the camera device.<wbr/> The focus distance control also uses diopters
12187on these devices.<wbr/></p>
12188<p>UNCALIBRATED devices do not use units that are directly comparable
12189to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
12190focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
12191nearest focus the device can achieve.<wbr/></p>
12192            </td>
12193          </tr>
12194
12195          <tr class="entries_header">
12196            <th class="th_details" colspan="5">HAL Implementation Details</th>
12197          </tr>
12198          <tr class="entry_cont">
12199            <td class="entry_details" colspan="5">
12200              <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
12201focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
12202and the lens focus distance is set to 0 diopters
12203(<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
12204and is stably focused at infinity even if the device tilts.<wbr/> It may take the
12205lens some time to move; during the move the lens state should be MOVING and
12206the output diopter value should be changing toward 0.<wbr/></p>
12207            </td>
12208          </tr>
12209
12210          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12211           <!-- end of entry -->
12212        
12213        
12214        
12215
12216                
12217          <tr class="entry" id="static_android.lens.facing">
12218            <td class="entry_name
12219             " rowspan="1">
12220              android.<wbr/>lens.<wbr/>facing
12221            </td>
12222            <td class="entry_type">
12223                <span class="entry_type_name entry_type_name_enum">byte</span>
12224
12225              <span class="entry_type_visibility"> [public]</span>
12226
12227
12228              <span class="entry_type_hwlevel">[legacy] </span>
12229
12230
12231
12232                <ul class="entry_type_enum">
12233                  <li>
12234                    <span class="entry_type_enum_name">FRONT</span>
12235                    <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
12236                  </li>
12237                  <li>
12238                    <span class="entry_type_enum_name">BACK</span>
12239                    <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
12240                  </li>
12241                  <li>
12242                    <span class="entry_type_enum_name">EXTERNAL</span>
12243                    <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
12244device's screen.<wbr/></p></span>
12245                  </li>
12246                </ul>
12247
12248            </td> <!-- entry_type -->
12249
12250            <td class="entry_description">
12251              <p>Direction the camera faces relative to
12252device screen.<wbr/></p>
12253            </td>
12254
12255            <td class="entry_units">
12256            </td>
12257
12258            <td class="entry_range">
12259            </td>
12260
12261            <td class="entry_tags">
12262            </td>
12263
12264          </tr>
12265
12266
12267          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12268           <!-- end of entry -->
12269        
12270                
12271          <tr class="entry" id="static_android.lens.poseRotation">
12272            <td class="entry_name
12273             " rowspan="3">
12274              android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
12275            </td>
12276            <td class="entry_type">
12277                <span class="entry_type_name">float</span>
12278                <span class="entry_type_container">x</span>
12279
12280                <span class="entry_type_array">
12281                  4
12282                </span>
12283              <span class="entry_type_visibility"> [public]</span>
12284
12285
12286
12287
12288
12289
12290            </td> <!-- entry_type -->
12291
12292            <td class="entry_description">
12293              <p>The orientation of the camera relative to the sensor
12294coordinate system.<wbr/></p>
12295            </td>
12296
12297            <td class="entry_units">
12298              
12299            Quaternion coefficients
12300          
12301            </td>
12302
12303            <td class="entry_range">
12304            </td>
12305
12306            <td class="entry_tags">
12307              <ul class="entry_tags">
12308                  <li><a href="#tag_DEPTH">DEPTH</a></li>
12309              </ul>
12310            </td>
12311
12312          </tr>
12313          <tr class="entries_header">
12314            <th class="th_details" colspan="5">Details</th>
12315          </tr>
12316          <tr class="entry_cont">
12317            <td class="entry_details" colspan="5">
12318              <p>The four coefficients that describe the quaternion
12319rotation from the Android sensor coordinate system to a
12320camera-aligned coordinate system where the X-axis is
12321aligned with the long side of the image sensor,<wbr/> the Y-axis
12322is aligned with the short side of the image sensor,<wbr/> and
12323the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
12324<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
12325to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
12326amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
12327<pre><code> theta = 2 * acos(w)
12328a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
12329a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
12330a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
12331</code></pre>
12332<p>To create a 3x3 rotation matrix that applies the rotation
12333defined by this quaternion,<wbr/> the following matrix can be
12334used:</p>
12335<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
12336           2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
12337           2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
12338</code></pre>
12339<p>This matrix can then be used to apply the rotation to a
12340 column vector point with</p>
12341<p><code>p' = Rp</code></p>
12342<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
12343 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
12344            </td>
12345          </tr>
12346
12347
12348          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12349           <!-- end of entry -->
12350        
12351                
12352          <tr class="entry" id="static_android.lens.poseTranslation">
12353            <td class="entry_name
12354             " rowspan="3">
12355              android.<wbr/>lens.<wbr/>pose<wbr/>Translation
12356            </td>
12357            <td class="entry_type">
12358                <span class="entry_type_name">float</span>
12359                <span class="entry_type_container">x</span>
12360
12361                <span class="entry_type_array">
12362                  3
12363                </span>
12364              <span class="entry_type_visibility"> [public]</span>
12365
12366
12367
12368
12369
12370
12371            </td> <!-- entry_type -->
12372
12373            <td class="entry_description">
12374              <p>Position of the camera optical center.<wbr/></p>
12375            </td>
12376
12377            <td class="entry_units">
12378              Meters
12379            </td>
12380
12381            <td class="entry_range">
12382            </td>
12383
12384            <td class="entry_tags">
12385              <ul class="entry_tags">
12386                  <li><a href="#tag_DEPTH">DEPTH</a></li>
12387              </ul>
12388            </td>
12389
12390          </tr>
12391          <tr class="entries_header">
12392            <th class="th_details" colspan="5">Details</th>
12393          </tr>
12394          <tr class="entry_cont">
12395            <td class="entry_details" colspan="5">
12396              <p>The position of the camera device's lens optical center,<wbr/>
12397as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
12398optical center of the largest camera device facing in the
12399same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
12400axes</a>.<wbr/> Note that only the axis definitions are shared with
12401the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
12402<p>If this device is the largest or only camera device with a
12403given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
12404camera device with a lens optical center located 3 cm from
12405the main sensor along the +X axis (to the right from the
12406user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
12407<p>To transform a pixel coordinates between two cameras
12408facing the same direction,<wbr/> first the source camera
12409<a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/>  Then
12410the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
12411to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
12412of the source camera,<wbr/> the translation of the source camera
12413relative to the destination camera,<wbr/> the
12414<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
12415finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
12416of the destination camera.<wbr/> This obtains a
12417radial-distortion-free coordinate in the destination
12418camera pixel coordinates.<wbr/></p>
12419<p>To compare this against a real image from the destination
12420camera,<wbr/> the destination camera image then needs to be
12421corrected for radial distortion before comparison or
12422sampling.<wbr/></p>
12423            </td>
12424          </tr>
12425
12426
12427          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12428           <!-- end of entry -->
12429        
12430                
12431          <tr class="entry" id="static_android.lens.intrinsicCalibration">
12432            <td class="entry_name
12433             " rowspan="3">
12434              android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
12435            </td>
12436            <td class="entry_type">
12437                <span class="entry_type_name">float</span>
12438                <span class="entry_type_container">x</span>
12439
12440                <span class="entry_type_array">
12441                  5
12442                </span>
12443              <span class="entry_type_visibility"> [public]</span>
12444
12445
12446
12447
12448
12449
12450            </td> <!-- entry_type -->
12451
12452            <td class="entry_description">
12453              <p>The parameters for this camera device's intrinsic
12454calibration.<wbr/></p>
12455            </td>
12456
12457            <td class="entry_units">
12458              
12459            Pixels in the
12460            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
12461            coordinate system.<wbr/>
12462          
12463            </td>
12464
12465            <td class="entry_range">
12466            </td>
12467
12468            <td class="entry_tags">
12469              <ul class="entry_tags">
12470                  <li><a href="#tag_DEPTH">DEPTH</a></li>
12471              </ul>
12472            </td>
12473
12474          </tr>
12475          <tr class="entries_header">
12476            <th class="th_details" colspan="5">Details</th>
12477          </tr>
12478          <tr class="entry_cont">
12479            <td class="entry_details" colspan="5">
12480              <p>The five calibration parameters that describe the
12481transform from camera-centric 3D coordinates to sensor
12482pixel coordinates:</p>
12483<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
12484</code></pre>
12485<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
12486focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
12487axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
12488being aligned with the lens plane.<wbr/></p>
12489<p>These are typically used within a transformation matrix K:</p>
12490<pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
12491       0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
12492       0    0,<wbr/>   1 ]
12493</code></pre>
12494<p>which can then be combined with the camera pose rotation
12495<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
12496<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
12497complete transform from world coordinates to pixel
12498coordinates:</p>
12499<pre><code>P = [ K 0   * [ R t
12500     0 1 ]     0 1 ]
12501</code></pre>
12502<p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
12503and <code>p_<wbr/>s</code> being a point in the camera active pixel array
12504coordinate system,<wbr/> and with the mapping including the
12505homogeneous division by z:</p>
12506<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
12507p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
12508</code></pre>
12509<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
12510point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
12511(depth) in pixel coordinates.<wbr/></p>
12512<p>Note that the coordinate system for this transform is the
12513<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> system,<wbr/>
12514where <code>(0,<wbr/>0)</code> is the top-left of the
12515preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
12516intrinsic calibration transforms have been applied to a
12517world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
12518transform needs to be applied,<wbr/> and the result adjusted to
12519be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
12520system (where <code>(0,<wbr/> 0)</code> is the top-left of the
12521activeArraySize rectangle),<wbr/> to determine the final pixel
12522coordinate of the world point for processed (non-RAW)
12523output buffers.<wbr/></p>
12524            </td>
12525          </tr>
12526
12527
12528          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12529           <!-- end of entry -->
12530        
12531                
12532          <tr class="entry" id="static_android.lens.radialDistortion">
12533            <td class="entry_name
12534             " rowspan="3">
12535              android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
12536            </td>
12537            <td class="entry_type">
12538                <span class="entry_type_name">float</span>
12539                <span class="entry_type_container">x</span>
12540
12541                <span class="entry_type_array">
12542                  6
12543                </span>
12544              <span class="entry_type_visibility"> [public]</span>
12545
12546
12547
12548
12549
12550
12551            </td> <!-- entry_type -->
12552
12553            <td class="entry_description">
12554              <p>The correction coefficients to correct for this camera device's
12555radial and tangential lens distortion.<wbr/></p>
12556            </td>
12557
12558            <td class="entry_units">
12559              
12560            Unitless coefficients.<wbr/>
12561          
12562            </td>
12563
12564            <td class="entry_range">
12565            </td>
12566
12567            <td class="entry_tags">
12568              <ul class="entry_tags">
12569                  <li><a href="#tag_DEPTH">DEPTH</a></li>
12570              </ul>
12571            </td>
12572
12573          </tr>
12574          <tr class="entries_header">
12575            <th class="th_details" colspan="5">Details</th>
12576          </tr>
12577          <tr class="entry_cont">
12578            <td class="entry_details" colspan="5">
12579              <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
12580kappa_<wbr/>3]</code> and two tangential distortion coefficients
12581<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
12582lens's geometric distortion with the mapping equations:</p>
12583<pre><code> x_<wbr/>c = x_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
12584       kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
12585 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
12586       kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
12587</code></pre>
12588<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
12589input image that correspond to the pixel values in the
12590corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
12591<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
12592</code></pre>
12593<p>The pixel coordinates are defined in a normalized
12594coordinate system related to the
12595<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
12596Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> have <code>(0,<wbr/>0)</code> at the
12597lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
12598of both x and y coordinates are normalized to be 1 at the
12599edge further from the optical center,<wbr/> so the range
12600for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
12601<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
12602optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
12603is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
12604<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
12605            </td>
12606          </tr>
12607
12608
12609          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12610           <!-- end of entry -->
12611        
12612        
12613
12614      <!-- end of kind -->
12615      </tbody>
12616      <tr><td colspan="6" class="kind">dynamic</td></tr>
12617
12618      <thead class="entries_header">
12619        <tr>
12620          <th class="th_name">Property Name</th>
12621          <th class="th_type">Type</th>
12622          <th class="th_description">Description</th>
12623          <th class="th_units">Units</th>
12624          <th class="th_range">Range</th>
12625          <th class="th_tags">Tags</th>
12626        </tr>
12627      </thead>
12628
12629      <tbody>
12630
12631        
12632
12633        
12634
12635        
12636
12637        
12638
12639                
12640          <tr class="entry" id="dynamic_android.lens.aperture">
12641            <td class="entry_name
12642             " rowspan="3">
12643              android.<wbr/>lens.<wbr/>aperture
12644            </td>
12645            <td class="entry_type">
12646                <span class="entry_type_name">float</span>
12647
12648              <span class="entry_type_visibility"> [public]</span>
12649
12650
12651              <span class="entry_type_hwlevel">[full] </span>
12652
12653
12654
12655
12656            </td> <!-- entry_type -->
12657
12658            <td class="entry_description">
12659              <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
12660effective aperture diameter.<wbr/></p>
12661            </td>
12662
12663            <td class="entry_units">
12664              The f-number (f/<wbr/>N)
12665            </td>
12666
12667            <td class="entry_range">
12668              <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
12669            </td>
12670
12671            <td class="entry_tags">
12672              <ul class="entry_tags">
12673                  <li><a href="#tag_V1">V1</a></li>
12674              </ul>
12675            </td>
12676
12677          </tr>
12678          <tr class="entries_header">
12679            <th class="th_details" colspan="5">Details</th>
12680          </tr>
12681          <tr class="entry_cont">
12682            <td class="entry_details" colspan="5">
12683              <p>Setting this value is only supported on the camera devices that have a variable
12684aperture lens.<wbr/></p>
12685<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
12686this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
12687<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>
12688to achieve manual exposure control.<wbr/></p>
12689<p>The requested aperture value may take several frames to reach the
12690requested value; the camera device will report the current (intermediate)
12691aperture size in capture result metadata while the aperture is changing.<wbr/>
12692While 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>
12693<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
12694the ON modes,<wbr/> this will be overridden by the camera device
12695auto-exposure algorithm,<wbr/> the overridden values are then provided
12696back to the user in the corresponding result.<wbr/></p>
12697            </td>
12698          </tr>
12699
12700
12701          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12702           <!-- end of entry -->
12703        
12704                
12705          <tr class="entry" id="dynamic_android.lens.filterDensity">
12706            <td class="entry_name
12707             " rowspan="3">
12708              android.<wbr/>lens.<wbr/>filter<wbr/>Density
12709            </td>
12710            <td class="entry_type">
12711                <span class="entry_type_name">float</span>
12712
12713              <span class="entry_type_visibility"> [public]</span>
12714
12715
12716              <span class="entry_type_hwlevel">[full] </span>
12717
12718
12719
12720
12721            </td> <!-- entry_type -->
12722
12723            <td class="entry_description">
12724              <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
12725            </td>
12726
12727            <td class="entry_units">
12728              Exposure Value (EV)
12729            </td>
12730
12731            <td class="entry_range">
12732              <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
12733            </td>
12734
12735            <td class="entry_tags">
12736              <ul class="entry_tags">
12737                  <li><a href="#tag_V1">V1</a></li>
12738              </ul>
12739            </td>
12740
12741          </tr>
12742          <tr class="entries_header">
12743            <th class="th_details" colspan="5">Details</th>
12744          </tr>
12745          <tr class="entry_cont">
12746            <td class="entry_details" colspan="5">
12747              <p>This control will not be supported on most camera devices.<wbr/></p>
12748<p>Lens filters are typically used to lower the amount of light the
12749sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
12750step is the standard logarithmic representation,<wbr/> which are
12751non-negative,<wbr/> and inversely proportional to the amount of light
12752hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
12753in no reduction of the incoming light,<wbr/> and setting this to 2 would
12754mean that the filter is set to reduce incoming light by two stops
12755(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
12756<p>It may take several frames before the lens filter density changes
12757to the requested value.<wbr/> While the filter density is still changing,<wbr/>
12758<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12759            </td>
12760          </tr>
12761
12762
12763          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12764           <!-- end of entry -->
12765        
12766                
12767          <tr class="entry" id="dynamic_android.lens.focalLength">
12768            <td class="entry_name
12769             " rowspan="3">
12770              android.<wbr/>lens.<wbr/>focal<wbr/>Length
12771            </td>
12772            <td class="entry_type">
12773                <span class="entry_type_name">float</span>
12774
12775              <span class="entry_type_visibility"> [public]</span>
12776
12777
12778              <span class="entry_type_hwlevel">[legacy] </span>
12779
12780
12781
12782
12783            </td> <!-- entry_type -->
12784
12785            <td class="entry_description">
12786              <p>The desired lens focal length; used for optical zoom.<wbr/></p>
12787            </td>
12788
12789            <td class="entry_units">
12790              Millimeters
12791            </td>
12792
12793            <td class="entry_range">
12794              <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
12795            </td>
12796
12797            <td class="entry_tags">
12798              <ul class="entry_tags">
12799                  <li><a href="#tag_BC">BC</a></li>
12800              </ul>
12801            </td>
12802
12803          </tr>
12804          <tr class="entries_header">
12805            <th class="th_details" colspan="5">Details</th>
12806          </tr>
12807          <tr class="entry_cont">
12808            <td class="entry_details" colspan="5">
12809              <p>This setting controls the physical focal length of the camera
12810device's lens.<wbr/> Changing the focal length changes the field of
12811view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
12812<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
12813setting won't be applied instantaneously,<wbr/> and it may take several
12814frames before the lens can change to the requested focal length.<wbr/>
12815While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
12816be set to MOVING.<wbr/></p>
12817<p>Optical zoom will not be supported on most devices.<wbr/></p>
12818            </td>
12819          </tr>
12820
12821
12822          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12823           <!-- end of entry -->
12824        
12825                
12826          <tr class="entry" id="dynamic_android.lens.focusDistance">
12827            <td class="entry_name
12828             " rowspan="3">
12829              android.<wbr/>lens.<wbr/>focus<wbr/>Distance
12830            </td>
12831            <td class="entry_type">
12832                <span class="entry_type_name">float</span>
12833
12834              <span class="entry_type_visibility"> [public]</span>
12835
12836
12837              <span class="entry_type_hwlevel">[full] </span>
12838
12839
12840
12841
12842            </td> <!-- entry_type -->
12843
12844            <td class="entry_description">
12845              <p>Desired distance to plane of sharpest focus,<wbr/>
12846measured from frontmost surface of the lens.<wbr/></p>
12847            </td>
12848
12849            <td class="entry_units">
12850              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12851            </td>
12852
12853            <td class="entry_range">
12854              <p>&gt;= 0</p>
12855            </td>
12856
12857            <td class="entry_tags">
12858              <ul class="entry_tags">
12859                  <li><a href="#tag_BC">BC</a></li>
12860              </ul>
12861            </td>
12862
12863          </tr>
12864          <tr class="entries_header">
12865            <th class="th_details" colspan="5">Details</th>
12866          </tr>
12867          <tr class="entry_cont">
12868            <td class="entry_details" colspan="5">
12869              <p>Should be zero for fixed-focus cameras</p>
12870            </td>
12871          </tr>
12872
12873
12874          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12875           <!-- end of entry -->
12876        
12877                
12878          <tr class="entry" id="dynamic_android.lens.focusRange">
12879            <td class="entry_name
12880             " rowspan="3">
12881              android.<wbr/>lens.<wbr/>focus<wbr/>Range
12882            </td>
12883            <td class="entry_type">
12884                <span class="entry_type_name">float</span>
12885                <span class="entry_type_container">x</span>
12886
12887                <span class="entry_type_array">
12888                  2
12889                </span>
12890              <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
12891
12892
12893              <span class="entry_type_hwlevel">[limited] </span>
12894
12895
12896                <div class="entry_type_notes">Range of scene distances that are in focus</div>
12897
12898
12899            </td> <!-- entry_type -->
12900
12901            <td class="entry_description">
12902              <p>The range of scene distances that are in
12903sharp focus (depth of field).<wbr/></p>
12904            </td>
12905
12906            <td class="entry_units">
12907              A pair of focus distances in diopters: (near,<wbr/>
12908          far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
12909            </td>
12910
12911            <td class="entry_range">
12912              <p>&gt;=0</p>
12913            </td>
12914
12915            <td class="entry_tags">
12916              <ul class="entry_tags">
12917                  <li><a href="#tag_BC">BC</a></li>
12918              </ul>
12919            </td>
12920
12921          </tr>
12922          <tr class="entries_header">
12923            <th class="th_details" colspan="5">Details</th>
12924          </tr>
12925          <tr class="entry_cont">
12926            <td class="entry_details" colspan="5">
12927              <p>If variable focus not supported,<wbr/> can still report
12928fixed depth of field range</p>
12929            </td>
12930          </tr>
12931
12932
12933          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12934           <!-- end of entry -->
12935        
12936                
12937          <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
12938            <td class="entry_name
12939             " rowspan="3">
12940              android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
12941            </td>
12942            <td class="entry_type">
12943                <span class="entry_type_name entry_type_name_enum">byte</span>
12944
12945              <span class="entry_type_visibility"> [public]</span>
12946
12947
12948              <span class="entry_type_hwlevel">[limited] </span>
12949
12950
12951
12952                <ul class="entry_type_enum">
12953                  <li>
12954                    <span class="entry_type_enum_name">OFF</span>
12955                    <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
12956                  </li>
12957                  <li>
12958                    <span class="entry_type_enum_name">ON</span>
12959                    <span class="entry_type_enum_optional">[optional]</span>
12960                    <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
12961                  </li>
12962                </ul>
12963
12964            </td> <!-- entry_type -->
12965
12966            <td class="entry_description">
12967              <p>Sets whether the camera device uses optical image stabilization (OIS)
12968when capturing images.<wbr/></p>
12969            </td>
12970
12971            <td class="entry_units">
12972            </td>
12973
12974            <td class="entry_range">
12975              <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
12976            </td>
12977
12978            <td class="entry_tags">
12979              <ul class="entry_tags">
12980                  <li><a href="#tag_V1">V1</a></li>
12981              </ul>
12982            </td>
12983
12984          </tr>
12985          <tr class="entries_header">
12986            <th class="th_details" colspan="5">Details</th>
12987          </tr>
12988          <tr class="entry_cont">
12989            <td class="entry_details" colspan="5">
12990              <p>OIS is used to compensate for motion blur due to small
12991movements of the camera during capture.<wbr/> Unlike digital image
12992stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
12993makes use of mechanical elements to stabilize the camera
12994sensor,<wbr/> and thus allows for longer exposure times before
12995camera shake becomes apparent.<wbr/></p>
12996<p>Switching between different optical stabilization modes may take several
12997frames to initialize,<wbr/> the camera device will report the current mode in
12998capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
12999optical stabilization modes in the first several capture results may still
13000be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
13001<p>If a camera device supports both OIS and digital image stabilization
13002(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
13003interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
13004<p>Not all devices will support OIS; see
13005<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
13006available controls.<wbr/></p>
13007            </td>
13008          </tr>
13009
13010
13011          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13012           <!-- end of entry -->
13013        
13014                
13015          <tr class="entry" id="dynamic_android.lens.state">
13016            <td class="entry_name
13017             " rowspan="3">
13018              android.<wbr/>lens.<wbr/>state
13019            </td>
13020            <td class="entry_type">
13021                <span class="entry_type_name entry_type_name_enum">byte</span>
13022
13023              <span class="entry_type_visibility"> [public]</span>
13024
13025
13026              <span class="entry_type_hwlevel">[limited] </span>
13027
13028
13029
13030                <ul class="entry_type_enum">
13031                  <li>
13032                    <span class="entry_type_enum_name">STATIONARY</span>
13033                    <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/>
13034<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>
13035                  </li>
13036                  <li>
13037                    <span class="entry_type_enum_name">MOVING</span>
13038                    <span class="entry_type_enum_notes"><p>One or several of the lens parameters
13039(<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/>
13040<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
13041currently changing.<wbr/></p></span>
13042                  </li>
13043                </ul>
13044
13045            </td> <!-- entry_type -->
13046
13047            <td class="entry_description">
13048              <p>Current lens status.<wbr/></p>
13049            </td>
13050
13051            <td class="entry_units">
13052            </td>
13053
13054            <td class="entry_range">
13055            </td>
13056
13057            <td class="entry_tags">
13058              <ul class="entry_tags">
13059                  <li><a href="#tag_V1">V1</a></li>
13060              </ul>
13061            </td>
13062
13063          </tr>
13064          <tr class="entries_header">
13065            <th class="th_details" colspan="5">Details</th>
13066          </tr>
13067          <tr class="entry_cont">
13068            <td class="entry_details" colspan="5">
13069              <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/>
13070<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/>
13071they may take several frames to reach the requested values.<wbr/> This state indicates
13072the current status of the lens parameters.<wbr/></p>
13073<p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
13074either because the parameters are all fixed,<wbr/> or because the lens has had enough
13075time to reach the most recently-requested values.<wbr/>
13076If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
13077<ul>
13078<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
13079<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
13080<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/>
13081which means the optical zoom is not supported.<wbr/></li>
13082<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>
13083<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>
13084</ul>
13085<p>Then this state will always be STATIONARY.<wbr/></p>
13086<p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
13087is changing.<wbr/></p>
13088            </td>
13089          </tr>
13090
13091
13092          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13093           <!-- end of entry -->
13094        
13095                
13096          <tr class="entry" id="dynamic_android.lens.poseRotation">
13097            <td class="entry_name
13098             " rowspan="3">
13099              android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
13100            </td>
13101            <td class="entry_type">
13102                <span class="entry_type_name">float</span>
13103                <span class="entry_type_container">x</span>
13104
13105                <span class="entry_type_array">
13106                  4
13107                </span>
13108              <span class="entry_type_visibility"> [public]</span>
13109
13110
13111
13112
13113
13114
13115            </td> <!-- entry_type -->
13116
13117            <td class="entry_description">
13118              <p>The orientation of the camera relative to the sensor
13119coordinate system.<wbr/></p>
13120            </td>
13121
13122            <td class="entry_units">
13123              
13124            Quaternion coefficients
13125          
13126            </td>
13127
13128            <td class="entry_range">
13129            </td>
13130
13131            <td class="entry_tags">
13132              <ul class="entry_tags">
13133                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13134              </ul>
13135            </td>
13136
13137          </tr>
13138          <tr class="entries_header">
13139            <th class="th_details" colspan="5">Details</th>
13140          </tr>
13141          <tr class="entry_cont">
13142            <td class="entry_details" colspan="5">
13143              <p>The four coefficients that describe the quaternion
13144rotation from the Android sensor coordinate system to a
13145camera-aligned coordinate system where the X-axis is
13146aligned with the long side of the image sensor,<wbr/> the Y-axis
13147is aligned with the short side of the image sensor,<wbr/> and
13148the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
13149<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
13150to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
13151amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
13152<pre><code> theta = 2 * acos(w)
13153a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
13154a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
13155a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
13156</code></pre>
13157<p>To create a 3x3 rotation matrix that applies the rotation
13158defined by this quaternion,<wbr/> the following matrix can be
13159used:</p>
13160<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
13161           2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
13162           2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
13163</code></pre>
13164<p>This matrix can then be used to apply the rotation to a
13165 column vector point with</p>
13166<p><code>p' = Rp</code></p>
13167<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
13168 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
13169            </td>
13170          </tr>
13171
13172
13173          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13174           <!-- end of entry -->
13175        
13176                
13177          <tr class="entry" id="dynamic_android.lens.poseTranslation">
13178            <td class="entry_name
13179             " rowspan="3">
13180              android.<wbr/>lens.<wbr/>pose<wbr/>Translation
13181            </td>
13182            <td class="entry_type">
13183                <span class="entry_type_name">float</span>
13184                <span class="entry_type_container">x</span>
13185
13186                <span class="entry_type_array">
13187                  3
13188                </span>
13189              <span class="entry_type_visibility"> [public]</span>
13190
13191
13192
13193
13194
13195
13196            </td> <!-- entry_type -->
13197
13198            <td class="entry_description">
13199              <p>Position of the camera optical center.<wbr/></p>
13200            </td>
13201
13202            <td class="entry_units">
13203              Meters
13204            </td>
13205
13206            <td class="entry_range">
13207            </td>
13208
13209            <td class="entry_tags">
13210              <ul class="entry_tags">
13211                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13212              </ul>
13213            </td>
13214
13215          </tr>
13216          <tr class="entries_header">
13217            <th class="th_details" colspan="5">Details</th>
13218          </tr>
13219          <tr class="entry_cont">
13220            <td class="entry_details" colspan="5">
13221              <p>The position of the camera device's lens optical center,<wbr/>
13222as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
13223optical center of the largest camera device facing in the
13224same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
13225axes</a>.<wbr/> Note that only the axis definitions are shared with
13226the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
13227<p>If this device is the largest or only camera device with a
13228given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
13229camera device with a lens optical center located 3 cm from
13230the main sensor along the +X axis (to the right from the
13231user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
13232<p>To transform a pixel coordinates between two cameras
13233facing the same direction,<wbr/> first the source camera
13234<a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/>  Then
13235the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
13236to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
13237of the source camera,<wbr/> the translation of the source camera
13238relative to the destination camera,<wbr/> the
13239<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
13240finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
13241of the destination camera.<wbr/> This obtains a
13242radial-distortion-free coordinate in the destination
13243camera pixel coordinates.<wbr/></p>
13244<p>To compare this against a real image from the destination
13245camera,<wbr/> the destination camera image then needs to be
13246corrected for radial distortion before comparison or
13247sampling.<wbr/></p>
13248            </td>
13249          </tr>
13250
13251
13252          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13253           <!-- end of entry -->
13254        
13255                
13256          <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
13257            <td class="entry_name
13258             " rowspan="3">
13259              android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
13260            </td>
13261            <td class="entry_type">
13262                <span class="entry_type_name">float</span>
13263                <span class="entry_type_container">x</span>
13264
13265                <span class="entry_type_array">
13266                  5
13267                </span>
13268              <span class="entry_type_visibility"> [public]</span>
13269
13270
13271
13272
13273
13274
13275            </td> <!-- entry_type -->
13276
13277            <td class="entry_description">
13278              <p>The parameters for this camera device's intrinsic
13279calibration.<wbr/></p>
13280            </td>
13281
13282            <td class="entry_units">
13283              
13284            Pixels in the
13285            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
13286            coordinate system.<wbr/>
13287          
13288            </td>
13289
13290            <td class="entry_range">
13291            </td>
13292
13293            <td class="entry_tags">
13294              <ul class="entry_tags">
13295                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13296              </ul>
13297            </td>
13298
13299          </tr>
13300          <tr class="entries_header">
13301            <th class="th_details" colspan="5">Details</th>
13302          </tr>
13303          <tr class="entry_cont">
13304            <td class="entry_details" colspan="5">
13305              <p>The five calibration parameters that describe the
13306transform from camera-centric 3D coordinates to sensor
13307pixel coordinates:</p>
13308<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
13309</code></pre>
13310<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
13311focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
13312axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
13313being aligned with the lens plane.<wbr/></p>
13314<p>These are typically used within a transformation matrix K:</p>
13315<pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
13316       0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
13317       0    0,<wbr/>   1 ]
13318</code></pre>
13319<p>which can then be combined with the camera pose rotation
13320<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
13321<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
13322complete transform from world coordinates to pixel
13323coordinates:</p>
13324<pre><code>P = [ K 0   * [ R t
13325     0 1 ]     0 1 ]
13326</code></pre>
13327<p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
13328and <code>p_<wbr/>s</code> being a point in the camera active pixel array
13329coordinate system,<wbr/> and with the mapping including the
13330homogeneous division by z:</p>
13331<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
13332p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
13333</code></pre>
13334<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
13335point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
13336(depth) in pixel coordinates.<wbr/></p>
13337<p>Note that the coordinate system for this transform is the
13338<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> system,<wbr/>
13339where <code>(0,<wbr/>0)</code> is the top-left of the
13340preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
13341intrinsic calibration transforms have been applied to a
13342world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
13343transform needs to be applied,<wbr/> and the result adjusted to
13344be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
13345system (where <code>(0,<wbr/> 0)</code> is the top-left of the
13346activeArraySize rectangle),<wbr/> to determine the final pixel
13347coordinate of the world point for processed (non-RAW)
13348output buffers.<wbr/></p>
13349            </td>
13350          </tr>
13351
13352
13353          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13354           <!-- end of entry -->
13355        
13356                
13357          <tr class="entry" id="dynamic_android.lens.radialDistortion">
13358            <td class="entry_name
13359             " rowspan="3">
13360              android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
13361            </td>
13362            <td class="entry_type">
13363                <span class="entry_type_name">float</span>
13364                <span class="entry_type_container">x</span>
13365
13366                <span class="entry_type_array">
13367                  6
13368                </span>
13369              <span class="entry_type_visibility"> [public]</span>
13370
13371
13372
13373
13374
13375
13376            </td> <!-- entry_type -->
13377
13378            <td class="entry_description">
13379              <p>The correction coefficients to correct for this camera device's
13380radial and tangential lens distortion.<wbr/></p>
13381            </td>
13382
13383            <td class="entry_units">
13384              
13385            Unitless coefficients.<wbr/>
13386          
13387            </td>
13388
13389            <td class="entry_range">
13390            </td>
13391
13392            <td class="entry_tags">
13393              <ul class="entry_tags">
13394                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13395              </ul>
13396            </td>
13397
13398          </tr>
13399          <tr class="entries_header">
13400            <th class="th_details" colspan="5">Details</th>
13401          </tr>
13402          <tr class="entry_cont">
13403            <td class="entry_details" colspan="5">
13404              <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13405kappa_<wbr/>3]</code> and two tangential distortion coefficients
13406<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13407lens's geometric distortion with the mapping equations:</p>
13408<pre><code> x_<wbr/>c = x_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13409       kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13410 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13411       kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13412</code></pre>
13413<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13414input image that correspond to the pixel values in the
13415corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13416<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13417</code></pre>
13418<p>The pixel coordinates are defined in a normalized
13419coordinate system related to the
13420<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
13421Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> have <code>(0,<wbr/>0)</code> at the
13422lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
13423of both x and y coordinates are normalized to be 1 at the
13424edge further from the optical center,<wbr/> so the range
13425for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
13426<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13427optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
13428is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
13429<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13430            </td>
13431          </tr>
13432
13433
13434          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13435           <!-- end of entry -->
13436        
13437        
13438
13439      <!-- end of kind -->
13440      </tbody>
13441
13442  <!-- end of section -->
13443  <tr><td colspan="6" id="section_noiseReduction" class="section">noiseReduction</td></tr>
13444
13445
13446      <tr><td colspan="6" class="kind">controls</td></tr>
13447
13448      <thead class="entries_header">
13449        <tr>
13450          <th class="th_name">Property Name</th>
13451          <th class="th_type">Type</th>
13452          <th class="th_description">Description</th>
13453          <th class="th_units">Units</th>
13454          <th class="th_range">Range</th>
13455          <th class="th_tags">Tags</th>
13456        </tr>
13457      </thead>
13458
13459      <tbody>
13460
13461        
13462
13463        
13464
13465        
13466
13467        
13468
13469                
13470          <tr class="entry" id="controls_android.noiseReduction.mode">
13471            <td class="entry_name
13472             " rowspan="5">
13473              android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
13474            </td>
13475            <td class="entry_type">
13476                <span class="entry_type_name entry_type_name_enum">byte</span>
13477
13478              <span class="entry_type_visibility"> [public]</span>
13479
13480
13481              <span class="entry_type_hwlevel">[full] </span>
13482
13483
13484
13485                <ul class="entry_type_enum">
13486                  <li>
13487                    <span class="entry_type_enum_name">OFF</span>
13488                    <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
13489                  </li>
13490                  <li>
13491                    <span class="entry_type_enum_name">FAST</span>
13492                    <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
13493output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
13494relative to sensor.<wbr/></p></span>
13495                  </li>
13496                  <li>
13497                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
13498                    <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
13499rate relative to sensor output.<wbr/></p></span>
13500                  </li>
13501                  <li>
13502                    <span class="entry_type_enum_name">MINIMAL</span>
13503                    <span class="entry_type_enum_optional">[optional]</span>
13504                    <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
13505sensor output.<wbr/> </p></span>
13506                  </li>
13507                  <li>
13508                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
13509                    <span class="entry_type_enum_optional">[optional]</span>
13510                    <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
13511based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have noise
13512reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no
13513noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction
13514for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality
13515is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/>
13516quality may improve from FAST).<wbr/></p>
13517<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
13518with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
13519high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
13520produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
13521high-resolution buffers must not have noise reduction applied to maximize efficiency of
13522preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
13523low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
13524applied for reasonable preview quality.<wbr/></p>
13525<p>This mode is guaranteed to be supported by devices that support either the
13526YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
13527(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
13528be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
13529                  </li>
13530                </ul>
13531
13532            </td> <!-- entry_type -->
13533
13534            <td class="entry_description">
13535              <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
13536            </td>
13537
13538            <td class="entry_units">
13539            </td>
13540
13541            <td class="entry_range">
13542              <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
13543            </td>
13544
13545            <td class="entry_tags">
13546              <ul class="entry_tags">
13547                  <li><a href="#tag_V1">V1</a></li>
13548                  <li><a href="#tag_REPROC">REPROC</a></li>
13549              </ul>
13550            </td>
13551
13552          </tr>
13553          <tr class="entries_header">
13554            <th class="th_details" colspan="5">Details</th>
13555          </tr>
13556          <tr class="entry_cont">
13557            <td class="entry_details" colspan="5">
13558              <p>The noise reduction algorithm attempts to improve image quality by removing
13559excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
13560<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
13561YUV domain.<wbr/></p>
13562<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
13563demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
13564This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
13565<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>
13566<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
13567will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
13568will use the highest-quality noise filtering algorithms,<wbr/>
13569even if it slows down capture rate.<wbr/> FAST means the camera device will not
13570slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
13571MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
13572Every output stream will have a similar amount of enhancement applied.<wbr/></p>
13573<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
13574buffer of high-resolution images during preview and reprocess image(s) from that buffer
13575into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
13576noise reduction to low-resolution streams (below maximum recording resolution) to maximize
13577preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
13578those will be reprocessed later if necessary.<wbr/></p>
13579<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
13580will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
13581may adjust the noise reduction parameters for best image quality based on the
13582<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
13583            </td>
13584          </tr>
13585
13586          <tr class="entries_header">
13587            <th class="th_details" colspan="5">HAL Implementation Details</th>
13588          </tr>
13589          <tr class="entry_cont">
13590            <td class="entry_details" colspan="5">
13591              <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
13592adjust the internal noise reduction parameters appropriately to get the best quality
13593images.<wbr/></p>
13594            </td>
13595          </tr>
13596
13597          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13598           <!-- end of entry -->
13599        
13600                
13601          <tr class="entry" id="controls_android.noiseReduction.strength">
13602            <td class="entry_name
13603             " rowspan="1">
13604              android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
13605            </td>
13606            <td class="entry_type">
13607                <span class="entry_type_name">byte</span>
13608
13609              <span class="entry_type_visibility"> [system]</span>
13610
13611
13612
13613
13614
13615
13616            </td> <!-- entry_type -->
13617
13618            <td class="entry_description">
13619              <p>Control the amount of noise reduction
13620applied to the images</p>
13621            </td>
13622
13623            <td class="entry_units">
13624              1-10; 10 is max noise reduction
13625            </td>
13626
13627            <td class="entry_range">
13628              <p>1 - 10</p>
13629            </td>
13630
13631            <td class="entry_tags">
13632              <ul class="entry_tags">
13633                  <li><a href="#tag_FUTURE">FUTURE</a></li>
13634              </ul>
13635            </td>
13636
13637          </tr>
13638
13639
13640          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13641           <!-- end of entry -->
13642        
13643        
13644
13645      <!-- end of kind -->
13646      </tbody>
13647      <tr><td colspan="6" class="kind">static</td></tr>
13648
13649      <thead class="entries_header">
13650        <tr>
13651          <th class="th_name">Property Name</th>
13652          <th class="th_type">Type</th>
13653          <th class="th_description">Description</th>
13654          <th class="th_units">Units</th>
13655          <th class="th_range">Range</th>
13656          <th class="th_tags">Tags</th>
13657        </tr>
13658      </thead>
13659
13660      <tbody>
13661
13662        
13663
13664        
13665
13666        
13667
13668        
13669
13670                
13671          <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
13672            <td class="entry_name
13673             " rowspan="5">
13674              android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
13675            </td>
13676            <td class="entry_type">
13677                <span class="entry_type_name">byte</span>
13678                <span class="entry_type_container">x</span>
13679
13680                <span class="entry_type_array">
13681                  n
13682                </span>
13683              <span class="entry_type_visibility"> [public as enumList]</span>
13684
13685
13686              <span class="entry_type_hwlevel">[limited] </span>
13687
13688
13689                <div class="entry_type_notes">list of enums</div>
13690
13691
13692            </td> <!-- entry_type -->
13693
13694            <td class="entry_description">
13695              <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
13696by this camera device.<wbr/></p>
13697            </td>
13698
13699            <td class="entry_units">
13700            </td>
13701
13702            <td class="entry_range">
13703              <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
13704            </td>
13705
13706            <td class="entry_tags">
13707              <ul class="entry_tags">
13708                  <li><a href="#tag_V1">V1</a></li>
13709                  <li><a href="#tag_REPROC">REPROC</a></li>
13710              </ul>
13711            </td>
13712
13713          </tr>
13714          <tr class="entries_header">
13715            <th class="th_details" colspan="5">Details</th>
13716          </tr>
13717          <tr class="entry_cont">
13718            <td class="entry_details" colspan="5">
13719              <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
13720<p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support
13721ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p>
13722<p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
13723            </td>
13724          </tr>
13725
13726          <tr class="entries_header">
13727            <th class="th_details" colspan="5">HAL Implementation Details</th>
13728          </tr>
13729          <tr class="entry_cont">
13730            <td class="entry_details" colspan="5">
13731              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
13732on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
13733That is,<wbr/> if the highest quality implementation on the camera device does not slow down
13734capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
13735            </td>
13736          </tr>
13737
13738          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13739           <!-- end of entry -->
13740        
13741        
13742
13743      <!-- end of kind -->
13744      </tbody>
13745      <tr><td colspan="6" class="kind">dynamic</td></tr>
13746
13747      <thead class="entries_header">
13748        <tr>
13749          <th class="th_name">Property Name</th>
13750          <th class="th_type">Type</th>
13751          <th class="th_description">Description</th>
13752          <th class="th_units">Units</th>
13753          <th class="th_range">Range</th>
13754          <th class="th_tags">Tags</th>
13755        </tr>
13756      </thead>
13757
13758      <tbody>
13759
13760        
13761
13762        
13763
13764        
13765
13766        
13767
13768                
13769          <tr class="entry" id="dynamic_android.noiseReduction.mode">
13770            <td class="entry_name
13771             " rowspan="5">
13772              android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
13773            </td>
13774            <td class="entry_type">
13775                <span class="entry_type_name entry_type_name_enum">byte</span>
13776
13777              <span class="entry_type_visibility"> [public]</span>
13778
13779
13780              <span class="entry_type_hwlevel">[full] </span>
13781
13782
13783
13784                <ul class="entry_type_enum">
13785                  <li>
13786                    <span class="entry_type_enum_name">OFF</span>
13787                    <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
13788                  </li>
13789                  <li>
13790                    <span class="entry_type_enum_name">FAST</span>
13791                    <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
13792output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
13793relative to sensor.<wbr/></p></span>
13794                  </li>
13795                  <li>
13796                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
13797                    <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
13798rate relative to sensor output.<wbr/></p></span>
13799                  </li>
13800                  <li>
13801                    <span class="entry_type_enum_name">MINIMAL</span>
13802                    <span class="entry_type_enum_optional">[optional]</span>
13803                    <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
13804sensor output.<wbr/> </p></span>
13805                  </li>
13806                  <li>
13807                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
13808                    <span class="entry_type_enum_optional">[optional]</span>
13809                    <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
13810based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have noise
13811reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no
13812noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction
13813for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality
13814is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/>
13815quality may improve from FAST).<wbr/></p>
13816<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
13817with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
13818high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
13819produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
13820high-resolution buffers must not have noise reduction applied to maximize efficiency of
13821preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
13822low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
13823applied for reasonable preview quality.<wbr/></p>
13824<p>This mode is guaranteed to be supported by devices that support either the
13825YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
13826(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
13827be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
13828                  </li>
13829                </ul>
13830
13831            </td> <!-- entry_type -->
13832
13833            <td class="entry_description">
13834              <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
13835            </td>
13836
13837            <td class="entry_units">
13838            </td>
13839
13840            <td class="entry_range">
13841              <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
13842            </td>
13843
13844            <td class="entry_tags">
13845              <ul class="entry_tags">
13846                  <li><a href="#tag_V1">V1</a></li>
13847                  <li><a href="#tag_REPROC">REPROC</a></li>
13848              </ul>
13849            </td>
13850
13851          </tr>
13852          <tr class="entries_header">
13853            <th class="th_details" colspan="5">Details</th>
13854          </tr>
13855          <tr class="entry_cont">
13856            <td class="entry_details" colspan="5">
13857              <p>The noise reduction algorithm attempts to improve image quality by removing
13858excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
13859<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
13860YUV domain.<wbr/></p>
13861<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
13862demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
13863This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
13864<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>
13865<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
13866will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
13867will use the highest-quality noise filtering algorithms,<wbr/>
13868even if it slows down capture rate.<wbr/> FAST means the camera device will not
13869slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
13870MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
13871Every output stream will have a similar amount of enhancement applied.<wbr/></p>
13872<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
13873buffer of high-resolution images during preview and reprocess image(s) from that buffer
13874into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
13875noise reduction to low-resolution streams (below maximum recording resolution) to maximize
13876preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
13877those will be reprocessed later if necessary.<wbr/></p>
13878<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
13879will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
13880may adjust the noise reduction parameters for best image quality based on the
13881<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
13882            </td>
13883          </tr>
13884
13885          <tr class="entries_header">
13886            <th class="th_details" colspan="5">HAL Implementation Details</th>
13887          </tr>
13888          <tr class="entry_cont">
13889            <td class="entry_details" colspan="5">
13890              <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
13891adjust the internal noise reduction parameters appropriately to get the best quality
13892images.<wbr/></p>
13893            </td>
13894          </tr>
13895
13896          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13897           <!-- end of entry -->
13898        
13899        
13900
13901      <!-- end of kind -->
13902      </tbody>
13903
13904  <!-- end of section -->
13905  <tr><td colspan="6" id="section_quirks" class="section">quirks</td></tr>
13906
13907
13908      <tr><td colspan="6" class="kind">static</td></tr>
13909
13910      <thead class="entries_header">
13911        <tr>
13912          <th class="th_name">Property Name</th>
13913          <th class="th_type">Type</th>
13914          <th class="th_description">Description</th>
13915          <th class="th_units">Units</th>
13916          <th class="th_range">Range</th>
13917          <th class="th_tags">Tags</th>
13918        </tr>
13919      </thead>
13920
13921      <tbody>
13922
13923        
13924
13925        
13926
13927        
13928
13929        
13930
13931                
13932          <tr class="entry" id="static_android.quirks.meteringCropRegion">
13933            <td class="entry_name
13934                entry_name_deprecated
13935             " rowspan="3">
13936              android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
13937            </td>
13938            <td class="entry_type">
13939                <span class="entry_type_name">byte</span>
13940
13941              <span class="entry_type_visibility"> [system]</span>
13942
13943
13944
13945              <span class="entry_type_deprecated">[deprecated] </span>
13946
13947
13948
13949            </td> <!-- entry_type -->
13950
13951            <td class="entry_description">
13952              <p>If set to 1,<wbr/> the camera service does not
13953scale 'normalized' coordinates with respect to the crop
13954region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
13955and output (face rectangles).<wbr/></p>
13956            </td>
13957
13958            <td class="entry_units">
13959            </td>
13960
13961            <td class="entry_range">
13962              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13963            </td>
13964
13965            <td class="entry_tags">
13966            </td>
13967
13968          </tr>
13969          <tr class="entries_header">
13970            <th class="th_details" colspan="5">Details</th>
13971          </tr>
13972          <tr class="entry_cont">
13973            <td class="entry_details" colspan="5">
13974              <p>Normalized coordinates refer to those in the
13975(-1000,<wbr/>1000) range mentioned in the
13976android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
13977<p>HAL implementations should instead always use and emit
13978sensor array-relative coordinates for all region data.<wbr/> Does
13979not need to be listed in static metadata.<wbr/> Support will be
13980removed in future versions of camera service.<wbr/></p>
13981            </td>
13982          </tr>
13983
13984
13985          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13986           <!-- end of entry -->
13987        
13988                
13989          <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
13990            <td class="entry_name
13991                entry_name_deprecated
13992             " rowspan="3">
13993              android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
13994            </td>
13995            <td class="entry_type">
13996                <span class="entry_type_name">byte</span>
13997
13998              <span class="entry_type_visibility"> [system]</span>
13999
14000
14001
14002              <span class="entry_type_deprecated">[deprecated] </span>
14003
14004
14005
14006            </td> <!-- entry_type -->
14007
14008            <td class="entry_description">
14009              <p>If set to 1,<wbr/> then the camera service always
14010switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
14011trigger.<wbr/></p>
14012            </td>
14013
14014            <td class="entry_units">
14015            </td>
14016
14017            <td class="entry_range">
14018              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14019            </td>
14020
14021            <td class="entry_tags">
14022            </td>
14023
14024          </tr>
14025          <tr class="entries_header">
14026            <th class="th_details" colspan="5">Details</th>
14027          </tr>
14028          <tr class="entry_cont">
14029            <td class="entry_details" colspan="5">
14030              <p>HAL implementations should implement AF trigger
14031modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
14032CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
14033not need to be listed in static metadata.<wbr/> Support will be
14034removed in future versions of camera service</p>
14035            </td>
14036          </tr>
14037
14038
14039          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14040           <!-- end of entry -->
14041        
14042                
14043          <tr class="entry" id="static_android.quirks.useZslFormat">
14044            <td class="entry_name
14045                entry_name_deprecated
14046             " rowspan="3">
14047              android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
14048            </td>
14049            <td class="entry_type">
14050                <span class="entry_type_name">byte</span>
14051
14052              <span class="entry_type_visibility"> [system]</span>
14053
14054
14055
14056              <span class="entry_type_deprecated">[deprecated] </span>
14057
14058
14059
14060            </td> <!-- entry_type -->
14061
14062            <td class="entry_description">
14063              <p>If set to 1,<wbr/> the camera service uses
14064CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
14065HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
14066shutter lag stream</p>
14067            </td>
14068
14069            <td class="entry_units">
14070            </td>
14071
14072            <td class="entry_range">
14073              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14074            </td>
14075
14076            <td class="entry_tags">
14077            </td>
14078
14079          </tr>
14080          <tr class="entries_header">
14081            <th class="th_details" colspan="5">Details</th>
14082          </tr>
14083          <tr class="entry_cont">
14084            <td class="entry_details" colspan="5">
14085              <p>HAL implementations should use gralloc usage flags
14086to determine that a stream will be used for
14087zero-shutter-lag,<wbr/> instead of relying on an explicit
14088format setting.<wbr/> Does not need to be listed in static
14089metadata.<wbr/> Support will be removed in future versions of
14090camera service.<wbr/></p>
14091            </td>
14092          </tr>
14093
14094
14095          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14096           <!-- end of entry -->
14097        
14098                
14099          <tr class="entry" id="static_android.quirks.usePartialResult">
14100            <td class="entry_name
14101                entry_name_deprecated
14102             " rowspan="5">
14103              android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
14104            </td>
14105            <td class="entry_type">
14106                <span class="entry_type_name">byte</span>
14107
14108              <span class="entry_type_visibility"> [hidden]</span>
14109
14110
14111
14112              <span class="entry_type_deprecated">[deprecated] </span>
14113
14114
14115
14116            </td> <!-- entry_type -->
14117
14118            <td class="entry_description">
14119              <p>If set to 1,<wbr/> the HAL will always split result
14120metadata for a single capture into multiple buffers,<wbr/>
14121returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
14122            </td>
14123
14124            <td class="entry_units">
14125            </td>
14126
14127            <td class="entry_range">
14128              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14129            </td>
14130
14131            <td class="entry_tags">
14132            </td>
14133
14134          </tr>
14135          <tr class="entries_header">
14136            <th class="th_details" colspan="5">Details</th>
14137          </tr>
14138          <tr class="entry_cont">
14139            <td class="entry_details" colspan="5">
14140              <p>Does not need to be listed in static
14141metadata.<wbr/> Support for partial results will be reworked in
14142future versions of camera service.<wbr/> This quirk will stop
14143working at that point; DO NOT USE without careful
14144consideration of future support.<wbr/></p>
14145            </td>
14146          </tr>
14147
14148          <tr class="entries_header">
14149            <th class="th_details" colspan="5">HAL Implementation Details</th>
14150          </tr>
14151          <tr class="entry_cont">
14152            <td class="entry_details" colspan="5">
14153              <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
14154for information on how to implement partial results.<wbr/></p>
14155            </td>
14156          </tr>
14157
14158          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14159           <!-- end of entry -->
14160        
14161        
14162
14163      <!-- end of kind -->
14164      </tbody>
14165      <tr><td colspan="6" class="kind">dynamic</td></tr>
14166
14167      <thead class="entries_header">
14168        <tr>
14169          <th class="th_name">Property Name</th>
14170          <th class="th_type">Type</th>
14171          <th class="th_description">Description</th>
14172          <th class="th_units">Units</th>
14173          <th class="th_range">Range</th>
14174          <th class="th_tags">Tags</th>
14175        </tr>
14176      </thead>
14177
14178      <tbody>
14179
14180        
14181
14182        
14183
14184        
14185
14186        
14187
14188                
14189          <tr class="entry" id="dynamic_android.quirks.partialResult">
14190            <td class="entry_name
14191                entry_name_deprecated
14192             " rowspan="5">
14193              android.<wbr/>quirks.<wbr/>partial<wbr/>Result
14194            </td>
14195            <td class="entry_type">
14196                <span class="entry_type_name entry_type_name_enum">byte</span>
14197
14198              <span class="entry_type_visibility"> [hidden as boolean]</span>
14199
14200
14201
14202              <span class="entry_type_deprecated">[deprecated] </span>
14203
14204
14205                <ul class="entry_type_enum">
14206                  <li>
14207                    <span class="entry_type_enum_name">FINAL</span>
14208                    <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
14209for this capture.<wbr/></p></span>
14210                  </li>
14211                  <li>
14212                    <span class="entry_type_enum_name">PARTIAL</span>
14213                    <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
14214capture.<wbr/> More result buffers for this capture will be sent
14215by the camera device,<wbr/> the last of which will be marked
14216FINAL.<wbr/></p></span>
14217                  </li>
14218                </ul>
14219
14220            </td> <!-- entry_type -->
14221
14222            <td class="entry_description">
14223              <p>Whether a result given to the framework is the
14224final one for the capture,<wbr/> or only a partial that contains a
14225subset of the full set of dynamic metadata
14226values.<wbr/></p>
14227            </td>
14228
14229            <td class="entry_units">
14230            </td>
14231
14232            <td class="entry_range">
14233              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14234              <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
14235            </td>
14236
14237            <td class="entry_tags">
14238            </td>
14239
14240          </tr>
14241          <tr class="entries_header">
14242            <th class="th_details" colspan="5">Details</th>
14243          </tr>
14244          <tr class="entry_cont">
14245            <td class="entry_details" colspan="5">
14246              <p>The entries in the result metadata buffers for a
14247single capture may not overlap,<wbr/> except for this entry.<wbr/> The
14248FINAL buffers must retain FIFO ordering relative to the
14249requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
14250always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
14251before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
14252in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
14253capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
14254only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
14255            </td>
14256          </tr>
14257
14258          <tr class="entries_header">
14259            <th class="th_details" colspan="5">HAL Implementation Details</th>
14260          </tr>
14261          <tr class="entry_cont">
14262            <td class="entry_details" colspan="5">
14263              <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
14264for information on how to implement partial results.<wbr/></p>
14265            </td>
14266          </tr>
14267
14268          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14269           <!-- end of entry -->
14270        
14271        
14272
14273      <!-- end of kind -->
14274      </tbody>
14275
14276  <!-- end of section -->
14277  <tr><td colspan="6" id="section_request" class="section">request</td></tr>
14278
14279
14280      <tr><td colspan="6" class="kind">controls</td></tr>
14281
14282      <thead class="entries_header">
14283        <tr>
14284          <th class="th_name">Property Name</th>
14285          <th class="th_type">Type</th>
14286          <th class="th_description">Description</th>
14287          <th class="th_units">Units</th>
14288          <th class="th_range">Range</th>
14289          <th class="th_tags">Tags</th>
14290        </tr>
14291      </thead>
14292
14293      <tbody>
14294
14295        
14296
14297        
14298
14299        
14300
14301        
14302
14303                
14304          <tr class="entry" id="controls_android.request.frameCount">
14305            <td class="entry_name
14306                entry_name_deprecated
14307             " rowspan="1">
14308              android.<wbr/>request.<wbr/>frame<wbr/>Count
14309            </td>
14310            <td class="entry_type">
14311                <span class="entry_type_name">int32</span>
14312
14313              <span class="entry_type_visibility"> [system]</span>
14314
14315
14316
14317              <span class="entry_type_deprecated">[deprecated] </span>
14318
14319
14320
14321            </td> <!-- entry_type -->
14322
14323            <td class="entry_description">
14324              <p>A frame counter set by the framework.<wbr/> Must
14325be maintained unchanged in output frame.<wbr/> This value monotonically
14326increases with every new result (that is,<wbr/> each new result has a unique
14327frameCount value).<wbr/></p>
14328            </td>
14329
14330            <td class="entry_units">
14331              incrementing integer
14332            </td>
14333
14334            <td class="entry_range">
14335              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14336              <p>Any int.<wbr/></p>
14337            </td>
14338
14339            <td class="entry_tags">
14340            </td>
14341
14342          </tr>
14343
14344
14345          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14346           <!-- end of entry -->
14347        
14348                
14349          <tr class="entry" id="controls_android.request.id">
14350            <td class="entry_name
14351             " rowspan="1">
14352              android.<wbr/>request.<wbr/>id
14353            </td>
14354            <td class="entry_type">
14355                <span class="entry_type_name">int32</span>
14356
14357              <span class="entry_type_visibility"> [hidden]</span>
14358
14359
14360
14361
14362
14363
14364            </td> <!-- entry_type -->
14365
14366            <td class="entry_description">
14367              <p>An application-specified ID for the current
14368request.<wbr/> Must be maintained unchanged in output
14369frame</p>
14370            </td>
14371
14372            <td class="entry_units">
14373              arbitrary integer assigned by application
14374            </td>
14375
14376            <td class="entry_range">
14377              <p>Any int</p>
14378            </td>
14379
14380            <td class="entry_tags">
14381              <ul class="entry_tags">
14382                  <li><a href="#tag_V1">V1</a></li>
14383              </ul>
14384            </td>
14385
14386          </tr>
14387
14388
14389          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14390           <!-- end of entry -->
14391        
14392                
14393          <tr class="entry" id="controls_android.request.inputStreams">
14394            <td class="entry_name
14395                entry_name_deprecated
14396             " rowspan="3">
14397              android.<wbr/>request.<wbr/>input<wbr/>Streams
14398            </td>
14399            <td class="entry_type">
14400                <span class="entry_type_name">int32</span>
14401                <span class="entry_type_container">x</span>
14402
14403                <span class="entry_type_array">
14404                  n
14405                </span>
14406              <span class="entry_type_visibility"> [system]</span>
14407
14408
14409
14410              <span class="entry_type_deprecated">[deprecated] </span>
14411
14412
14413
14414            </td> <!-- entry_type -->
14415
14416            <td class="entry_description">
14417              <p>List which camera reprocess stream is used
14418for the source of reprocessing data.<wbr/></p>
14419            </td>
14420
14421            <td class="entry_units">
14422              List of camera reprocess stream IDs
14423            </td>
14424
14425            <td class="entry_range">
14426              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14427              <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
14428            </td>
14429
14430            <td class="entry_tags">
14431              <ul class="entry_tags">
14432                  <li><a href="#tag_HAL2">HAL2</a></li>
14433              </ul>
14434            </td>
14435
14436          </tr>
14437          <tr class="entries_header">
14438            <th class="th_details" colspan="5">Details</th>
14439          </tr>
14440          <tr class="entry_cont">
14441            <td class="entry_details" colspan="5">
14442              <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
14443REPROCESS.<wbr/> Ignored otherwise</p>
14444            </td>
14445          </tr>
14446
14447
14448          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14449           <!-- end of entry -->
14450        
14451                
14452          <tr class="entry" id="controls_android.request.metadataMode">
14453            <td class="entry_name
14454             " rowspan="1">
14455              android.<wbr/>request.<wbr/>metadata<wbr/>Mode
14456            </td>
14457            <td class="entry_type">
14458                <span class="entry_type_name entry_type_name_enum">byte</span>
14459
14460              <span class="entry_type_visibility"> [system]</span>
14461
14462
14463
14464
14465
14466                <ul class="entry_type_enum">
14467                  <li>
14468                    <span class="entry_type_enum_name">NONE</span>
14469                    <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
14470for application-bound buffer data.<wbr/> If no
14471application-bound streams exist,<wbr/> no frame should be
14472placed in the output frame queue.<wbr/> If such streams
14473exist,<wbr/> a frame should be placed on the output queue
14474with null metadata but with the necessary output buffer
14475information.<wbr/> Timestamp information should still be
14476included with any output stream buffers</p></span>
14477                  </li>
14478                  <li>
14479                    <span class="entry_type_enum_name">FULL</span>
14480                    <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
14481only be produced if they are separately
14482enabled</p></span>
14483                  </li>
14484                </ul>
14485
14486            </td> <!-- entry_type -->
14487
14488            <td class="entry_description">
14489              <p>How much metadata to produce on
14490output</p>
14491            </td>
14492
14493            <td class="entry_units">
14494            </td>
14495
14496            <td class="entry_range">
14497            </td>
14498
14499            <td class="entry_tags">
14500              <ul class="entry_tags">
14501                  <li><a href="#tag_FUTURE">FUTURE</a></li>
14502              </ul>
14503            </td>
14504
14505          </tr>
14506
14507
14508          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14509           <!-- end of entry -->
14510        
14511                
14512          <tr class="entry" id="controls_android.request.outputStreams">
14513            <td class="entry_name
14514                entry_name_deprecated
14515             " rowspan="3">
14516              android.<wbr/>request.<wbr/>output<wbr/>Streams
14517            </td>
14518            <td class="entry_type">
14519                <span class="entry_type_name">int32</span>
14520                <span class="entry_type_container">x</span>
14521
14522                <span class="entry_type_array">
14523                  n
14524                </span>
14525              <span class="entry_type_visibility"> [system]</span>
14526
14527
14528
14529              <span class="entry_type_deprecated">[deprecated] </span>
14530
14531
14532
14533            </td> <!-- entry_type -->
14534
14535            <td class="entry_description">
14536              <p>Lists which camera output streams image data
14537from this capture must be sent to</p>
14538            </td>
14539
14540            <td class="entry_units">
14541              List of camera stream IDs
14542            </td>
14543
14544            <td class="entry_range">
14545              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14546              <p>List must only include streams that have been
14547created</p>
14548            </td>
14549
14550            <td class="entry_tags">
14551              <ul class="entry_tags">
14552                  <li><a href="#tag_HAL2">HAL2</a></li>
14553              </ul>
14554            </td>
14555
14556          </tr>
14557          <tr class="entries_header">
14558            <th class="th_details" colspan="5">Details</th>
14559          </tr>
14560          <tr class="entry_cont">
14561            <td class="entry_details" colspan="5">
14562              <p>If no output streams are listed,<wbr/> then the image
14563data should simply be discarded.<wbr/> The image data must
14564still be captured for metadata and statistics production,<wbr/>
14565and the lens and flash must operate as requested.<wbr/></p>
14566            </td>
14567          </tr>
14568
14569
14570          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14571           <!-- end of entry -->
14572        
14573                
14574          <tr class="entry" id="controls_android.request.type">
14575            <td class="entry_name
14576                entry_name_deprecated
14577             " rowspan="1">
14578              android.<wbr/>request.<wbr/>type
14579            </td>
14580            <td class="entry_type">
14581                <span class="entry_type_name entry_type_name_enum">byte</span>
14582
14583              <span class="entry_type_visibility"> [system]</span>
14584
14585
14586
14587              <span class="entry_type_deprecated">[deprecated] </span>
14588
14589
14590                <ul class="entry_type_enum">
14591                  <li>
14592                    <span class="entry_type_enum_name">CAPTURE</span>
14593                    <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
14594and process it according to the
14595settings</p></span>
14596                  </li>
14597                  <li>
14598                    <span class="entry_type_enum_name">REPROCESS</span>
14599                    <span class="entry_type_enum_notes"><p>Process previously captured data; the
14600<a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
14601source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
14602needed for reprocessing with [RP]</p></span>
14603                  </li>
14604                </ul>
14605
14606            </td> <!-- entry_type -->
14607
14608            <td class="entry_description">
14609              <p>The type of the request; either CAPTURE or
14610REPROCESS.<wbr/> For HAL3,<wbr/> this tag is redundant.<wbr/></p>
14611            </td>
14612
14613            <td class="entry_units">
14614            </td>
14615
14616            <td class="entry_range">
14617              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14618            </td>
14619
14620            <td class="entry_tags">
14621              <ul class="entry_tags">
14622                  <li><a href="#tag_HAL2">HAL2</a></li>
14623              </ul>
14624            </td>
14625
14626          </tr>
14627
14628
14629          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14630           <!-- end of entry -->
14631        
14632        
14633
14634      <!-- end of kind -->
14635      </tbody>
14636      <tr><td colspan="6" class="kind">static</td></tr>
14637
14638      <thead class="entries_header">
14639        <tr>
14640          <th class="th_name">Property Name</th>
14641          <th class="th_type">Type</th>
14642          <th class="th_description">Description</th>
14643          <th class="th_units">Units</th>
14644          <th class="th_range">Range</th>
14645          <th class="th_tags">Tags</th>
14646        </tr>
14647      </thead>
14648
14649      <tbody>
14650
14651        
14652
14653        
14654
14655        
14656
14657        
14658
14659                
14660          <tr class="entry" id="static_android.request.maxNumOutputStreams">
14661            <td class="entry_name
14662             " rowspan="3">
14663              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
14664            </td>
14665            <td class="entry_type">
14666                <span class="entry_type_name">int32</span>
14667                <span class="entry_type_container">x</span>
14668
14669                <span class="entry_type_array">
14670                  3
14671                </span>
14672              <span class="entry_type_visibility"> [hidden]</span>
14673
14674
14675              <span class="entry_type_hwlevel">[legacy] </span>
14676
14677
14678
14679
14680            </td> <!-- entry_type -->
14681
14682            <td class="entry_description">
14683              <p>The maximum numbers of different types of output streams
14684that can be configured and used simultaneously by a camera device.<wbr/></p>
14685            </td>
14686
14687            <td class="entry_units">
14688            </td>
14689
14690            <td class="entry_range">
14691              <p>For processed (and stalling) format streams,<wbr/> &gt;= 1.<wbr/></p>
14692<p>For Raw format (either stalling or non-stalling) streams,<wbr/> &gt;= 0.<wbr/></p>
14693<p>For processed (but not stalling) format streams,<wbr/> &gt;= 3
14694for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
14695&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>
14696            </td>
14697
14698            <td class="entry_tags">
14699              <ul class="entry_tags">
14700                  <li><a href="#tag_BC">BC</a></li>
14701              </ul>
14702            </td>
14703
14704          </tr>
14705          <tr class="entries_header">
14706            <th class="th_details" colspan="5">Details</th>
14707          </tr>
14708          <tr class="entry_cont">
14709            <td class="entry_details" colspan="5">
14710              <p>This is a 3 element tuple that contains the max number of output simultaneous
14711streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
14712formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
14713stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
14714number 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>
14715<p>This lists the upper bound of the number of output streams supported by
14716the camera device.<wbr/> Using more streams simultaneously may require more hardware and
14717CPU resources that will consume more power.<wbr/> The image format for an output stream can
14718be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
14719The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
14720into the 3 stream types as below:</p>
14721<ul>
14722<li>Processed (but stalling): any non-RAW format with a stallDurations &gt; 0.<wbr/>
14723  Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
14724<li>Raw formats: <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a>,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a>,<wbr/> or <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li>
14725<li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/>
14726  Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
14727  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a>,<wbr/> or
14728  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a>.<wbr/></li>
14729</ul>
14730            </td>
14731          </tr>
14732
14733
14734          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14735           <!-- end of entry -->
14736        
14737                
14738          <tr class="entry" id="static_android.request.maxNumOutputRaw">
14739            <td class="entry_name
14740             " rowspan="3">
14741              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
14742            </td>
14743            <td class="entry_type">
14744                <span class="entry_type_name">int32</span>
14745
14746              <span class="entry_type_visibility"> [public]</span>
14747
14748              <span class="entry_type_synthetic">[synthetic] </span>
14749
14750              <span class="entry_type_hwlevel">[legacy] </span>
14751
14752
14753
14754
14755            </td> <!-- entry_type -->
14756
14757            <td class="entry_description">
14758              <p>The maximum numbers of different types of output streams
14759that can be configured and used simultaneously by a camera device
14760for any <code>RAW</code> formats.<wbr/></p>
14761            </td>
14762
14763            <td class="entry_units">
14764            </td>
14765
14766            <td class="entry_range">
14767              <p>&gt;= 0</p>
14768            </td>
14769
14770            <td class="entry_tags">
14771            </td>
14772
14773          </tr>
14774          <tr class="entries_header">
14775            <th class="th_details" colspan="5">Details</th>
14776          </tr>
14777          <tr class="entry_cont">
14778            <td class="entry_details" colspan="5">
14779              <p>This value contains the max number of output simultaneous
14780streams from the raw sensor.<wbr/></p>
14781<p>This lists the upper bound of the number of output streams supported by
14782the camera device.<wbr/> Using more streams simultaneously may require more hardware and
14783CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
14784be 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>
14785<p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
14786<ul>
14787<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
14788<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
14789<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
14790</ul>
14791<p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
14792never support raw streams.<wbr/></p>
14793            </td>
14794          </tr>
14795
14796
14797          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14798           <!-- end of entry -->
14799        
14800                
14801          <tr class="entry" id="static_android.request.maxNumOutputProc">
14802            <td class="entry_name
14803             " rowspan="3">
14804              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
14805            </td>
14806            <td class="entry_type">
14807                <span class="entry_type_name">int32</span>
14808
14809              <span class="entry_type_visibility"> [public]</span>
14810
14811              <span class="entry_type_synthetic">[synthetic] </span>
14812
14813              <span class="entry_type_hwlevel">[legacy] </span>
14814
14815
14816
14817
14818            </td> <!-- entry_type -->
14819
14820            <td class="entry_description">
14821              <p>The maximum numbers of different types of output streams
14822that can be configured and used simultaneously by a camera device
14823for any processed (but not-stalling) formats.<wbr/></p>
14824            </td>
14825
14826            <td class="entry_units">
14827            </td>
14828
14829            <td class="entry_range">
14830              <p>&gt;= 3
14831for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
14832&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>
14833            </td>
14834
14835            <td class="entry_tags">
14836            </td>
14837
14838          </tr>
14839          <tr class="entries_header">
14840            <th class="th_details" colspan="5">Details</th>
14841          </tr>
14842          <tr class="entry_cont">
14843            <td class="entry_details" colspan="5">
14844              <p>This value contains the max number of output simultaneous
14845streams for any processed (but not-stalling) formats.<wbr/></p>
14846<p>This lists the upper bound of the number of output streams supported by
14847the camera device.<wbr/> Using more streams simultaneously may require more hardware and
14848CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
14849be 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>
14850<p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
14851Typically:</p>
14852<ul>
14853<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li>
14854<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li>
14855<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li>
14856<li>Implementation-defined formats,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#isOutputSupportedFor(Class)">StreamConfigurationMap#isOutputSupportedFor(Class)</a></li>
14857</ul>
14858<p>For full guarantees,<wbr/> query <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> with a
14859processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
14860<p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
14861            </td>
14862          </tr>
14863
14864
14865          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14866           <!-- end of entry -->
14867        
14868                
14869          <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
14870            <td class="entry_name
14871             " rowspan="3">
14872              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
14873            </td>
14874            <td class="entry_type">
14875                <span class="entry_type_name">int32</span>
14876
14877              <span class="entry_type_visibility"> [public]</span>
14878
14879              <span class="entry_type_synthetic">[synthetic] </span>
14880
14881              <span class="entry_type_hwlevel">[legacy] </span>
14882
14883
14884
14885
14886            </td> <!-- entry_type -->
14887
14888            <td class="entry_description">
14889              <p>The maximum numbers of different types of output streams
14890that can be configured and used simultaneously by a camera device
14891for any processed (and stalling) formats.<wbr/></p>
14892            </td>
14893
14894            <td class="entry_units">
14895            </td>
14896
14897            <td class="entry_range">
14898              <p>&gt;= 1</p>
14899            </td>
14900
14901            <td class="entry_tags">
14902            </td>
14903
14904          </tr>
14905          <tr class="entries_header">
14906            <th class="th_details" colspan="5">Details</th>
14907          </tr>
14908          <tr class="entry_cont">
14909            <td class="entry_details" colspan="5">
14910              <p>This value contains the max number of output simultaneous
14911streams for any processed (but not-stalling) formats.<wbr/></p>
14912<p>This lists the upper bound of the number of output streams supported by
14913the camera device.<wbr/> Using more streams simultaneously may require more hardware and
14914CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
14915be 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>
14916<p>A processed and stalling format is defined as any non-RAW format with a stallDurations
14917&gt; 0.<wbr/>  Typically only the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a> is a
14918stalling format.<wbr/></p>
14919<p>For full guarantees,<wbr/> query <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> with a
14920processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
14921<p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
14922            </td>
14923          </tr>
14924
14925
14926          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14927           <!-- end of entry -->
14928        
14929                
14930          <tr class="entry" id="static_android.request.maxNumReprocessStreams">
14931            <td class="entry_name
14932                entry_name_deprecated
14933             " rowspan="3">
14934              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
14935            </td>
14936            <td class="entry_type">
14937                <span class="entry_type_name">int32</span>
14938                <span class="entry_type_container">x</span>
14939
14940                <span class="entry_type_array">
14941                  1
14942                </span>
14943              <span class="entry_type_visibility"> [system]</span>
14944
14945
14946
14947              <span class="entry_type_deprecated">[deprecated] </span>
14948
14949
14950
14951            </td> <!-- entry_type -->
14952
14953            <td class="entry_description">
14954              <p>How many reprocessing streams of any type
14955can be allocated at the same time.<wbr/></p>
14956            </td>
14957
14958            <td class="entry_units">
14959            </td>
14960
14961            <td class="entry_range">
14962              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14963              <p>&gt;= 0</p>
14964            </td>
14965
14966            <td class="entry_tags">
14967              <ul class="entry_tags">
14968                  <li><a href="#tag_HAL2">HAL2</a></li>
14969              </ul>
14970            </td>
14971
14972          </tr>
14973          <tr class="entries_header">
14974            <th class="th_details" colspan="5">Details</th>
14975          </tr>
14976          <tr class="entry_cont">
14977            <td class="entry_details" colspan="5">
14978              <p>Only used by HAL2.<wbr/>x.<wbr/></p>
14979<p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
14980            </td>
14981          </tr>
14982
14983
14984          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14985           <!-- end of entry -->
14986        
14987                
14988          <tr class="entry" id="static_android.request.maxNumInputStreams">
14989            <td class="entry_name
14990             " rowspan="5">
14991              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
14992            </td>
14993            <td class="entry_type">
14994                <span class="entry_type_name">int32</span>
14995
14996              <span class="entry_type_visibility"> [public]</span>
14997
14998
14999              <span class="entry_type_hwlevel">[full] </span>
15000
15001
15002
15003
15004            </td> <!-- entry_type -->
15005
15006            <td class="entry_description">
15007              <p>The maximum numbers of any type of input streams
15008that can be configured and used simultaneously by a camera device.<wbr/></p>
15009            </td>
15010
15011            <td class="entry_units">
15012            </td>
15013
15014            <td class="entry_range">
15015              <p>0 or 1.<wbr/></p>
15016            </td>
15017
15018            <td class="entry_tags">
15019              <ul class="entry_tags">
15020                  <li><a href="#tag_REPROC">REPROC</a></li>
15021              </ul>
15022            </td>
15023
15024          </tr>
15025          <tr class="entries_header">
15026            <th class="th_details" colspan="5">Details</th>
15027          </tr>
15028          <tr class="entry_cont">
15029            <td class="entry_details" colspan="5">
15030              <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
15031<p>The image format for a input stream can be any supported format returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a>.<wbr/> When using an
15032input stream,<wbr/> there must be at least one output stream configured to to receive the
15033reprocessed images.<wbr/></p>
15034<p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
15035only the input buffer will be used to produce these output stream buffers,<wbr/> and a
15036new sensor image will not be captured.<wbr/></p>
15037<p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
15038stream image format will be PRIVATE,<wbr/> the associated output stream image format
15039should be JPEG.<wbr/></p>
15040            </td>
15041          </tr>
15042
15043          <tr class="entries_header">
15044            <th class="th_details" colspan="5">HAL Implementation Details</th>
15045          </tr>
15046          <tr class="entry_cont">
15047            <td class="entry_details" colspan="5">
15048              <p>For the reprocessing flow and controls,<wbr/> see
15049hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
15050            </td>
15051          </tr>
15052
15053          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15054           <!-- end of entry -->
15055        
15056                
15057          <tr class="entry" id="static_android.request.pipelineMaxDepth">
15058            <td class="entry_name
15059             " rowspan="5">
15060              android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
15061            </td>
15062            <td class="entry_type">
15063                <span class="entry_type_name">byte</span>
15064
15065              <span class="entry_type_visibility"> [public]</span>
15066
15067
15068              <span class="entry_type_hwlevel">[legacy] </span>
15069
15070
15071
15072
15073            </td> <!-- entry_type -->
15074
15075            <td class="entry_description">
15076              <p>Specifies the number of maximum pipeline stages a frame
15077has to go through from when it's exposed to when it's available
15078to the framework.<wbr/></p>
15079            </td>
15080
15081            <td class="entry_units">
15082            </td>
15083
15084            <td class="entry_range">
15085            </td>
15086
15087            <td class="entry_tags">
15088            </td>
15089
15090          </tr>
15091          <tr class="entries_header">
15092            <th class="th_details" colspan="5">Details</th>
15093          </tr>
15094          <tr class="entry_cont">
15095            <td class="entry_details" colspan="5">
15096              <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
15097one stage to readout) from the sensor.<wbr/> The ISP then usually adds
15098its own stages to do custom HW processing.<wbr/> Further stages may be
15099added by SW processing.<wbr/></p>
15100<p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
15101processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
15102depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
15103the max pipeline depth.<wbr/></p>
15104<p>A pipeline depth of X stages is equivalent to a pipeline latency of
15105X frame intervals.<wbr/></p>
15106<p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/>
15107the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p>
15108            </td>
15109          </tr>
15110
15111          <tr class="entries_header">
15112            <th class="th_details" colspan="5">HAL Implementation Details</th>
15113          </tr>
15114          <tr class="entry_cont">
15115            <td class="entry_details" colspan="5">
15116              <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the
15117max batch sizes may be larger than 1.<wbr/></p>
15118            </td>
15119          </tr>
15120
15121          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15122           <!-- end of entry -->
15123        
15124                
15125          <tr class="entry" id="static_android.request.partialResultCount">
15126            <td class="entry_name
15127             " rowspan="3">
15128              android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
15129            </td>
15130            <td class="entry_type">
15131                <span class="entry_type_name">int32</span>
15132
15133              <span class="entry_type_visibility"> [public]</span>
15134
15135
15136
15137
15138
15139
15140            </td> <!-- entry_type -->
15141
15142            <td class="entry_description">
15143              <p>Defines how many sub-components
15144a result will be composed of.<wbr/></p>
15145            </td>
15146
15147            <td class="entry_units">
15148            </td>
15149
15150            <td class="entry_range">
15151              <p>&gt;= 1</p>
15152            </td>
15153
15154            <td class="entry_tags">
15155            </td>
15156
15157          </tr>
15158          <tr class="entries_header">
15159            <th class="th_details" colspan="5">Details</th>
15160          </tr>
15161          <tr class="entry_cont">
15162            <td class="entry_details" colspan="5">
15163              <p>In order to combat the pipeline latency,<wbr/> partial results
15164may be delivered to the application layer from the camera device as
15165soon as they are available.<wbr/></p>
15166<p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
15167results are not supported,<wbr/> and only the final TotalCaptureResult will
15168be produced by the camera device.<wbr/></p>
15169<p>A typical use case for this might be: after requesting an
15170auto-focus (AF) lock the new AF state might be available 50%
15171of the way through the pipeline.<wbr/>  The camera device could
15172then immediately dispatch this state via a partial result to
15173the application,<wbr/> and the rest of the metadata via later
15174partial results.<wbr/></p>
15175            </td>
15176          </tr>
15177
15178
15179          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15180           <!-- end of entry -->
15181        
15182                
15183          <tr class="entry" id="static_android.request.availableCapabilities">
15184            <td class="entry_name
15185             " rowspan="5">
15186              android.<wbr/>request.<wbr/>available<wbr/>Capabilities
15187            </td>
15188            <td class="entry_type">
15189                <span class="entry_type_name entry_type_name_enum">byte</span>
15190                <span class="entry_type_container">x</span>
15191
15192                <span class="entry_type_array">
15193                  n
15194                </span>
15195              <span class="entry_type_visibility"> [public]</span>
15196
15197
15198              <span class="entry_type_hwlevel">[legacy] </span>
15199
15200
15201
15202                <ul class="entry_type_enum">
15203                  <li>
15204                    <span class="entry_type_enum_name">BACKWARD_COMPATIBLE</span>
15205                    <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
15206device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
15207supports.<wbr/></p>
15208<p>This capability is listed by all normal devices,<wbr/> and
15209indicates that the camera device has a feature set
15210that's comparable to the baseline requirements for the
15211older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
15212<p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this
15213capability,<wbr/> indicating that they support only depth measurement,<wbr/>
15214not standard color output.<wbr/></p></span>
15215                  </li>
15216                  <li>
15217                    <span class="entry_type_enum_name">MANUAL_SENSOR</span>
15218                    <span class="entry_type_enum_optional">[optional]</span>
15219                    <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
15220as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
15221The camera device supports basic manual control of the sensor image
15222acquisition related stages.<wbr/> This means the following controls are
15223guaranteed to be supported:</p>
15224<ul>
15225<li>Manual frame duration control<ul>
15226<li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
15227<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
15228</ul>
15229</li>
15230<li>Manual exposure control<ul>
15231<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
15232<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
15233</ul>
15234</li>
15235<li>Manual sensitivity control<ul>
15236<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
15237<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
15238</ul>
15239</li>
15240<li>Manual lens control (if the lens is adjustable)<ul>
15241<li>android.<wbr/>lens.<wbr/>*</li>
15242</ul>
15243</li>
15244<li>Manual flash control (if a flash unit is present)<ul>
15245<li>android.<wbr/>flash.<wbr/>*</li>
15246</ul>
15247</li>
15248<li>Manual black level locking<ul>
15249<li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
15250</ul>
15251</li>
15252<li>Auto exposure lock<ul>
15253<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
15254</ul>
15255</li>
15256</ul>
15257<p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
15258device will accurately report the values applied by 3A in the
15259result.<wbr/></p>
15260<p>A given camera device may also support additional manual sensor controls,<wbr/>
15261but this capability only covers the above list of controls.<wbr/></p>
15262<p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
15263additionally return a min frame duration that is greater than
15264zero for each supported size-format combination.<wbr/></p></span>
15265                  </li>
15266                  <li>
15267                    <span class="entry_type_enum_name">MANUAL_POST_PROCESSING</span>
15268                    <span class="entry_type_enum_optional">[optional]</span>
15269                    <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
15270The camera device supports basic manual control of the image post-processing
15271stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
15272<ul>
15273<li>
15274<p>Manual tonemap control</p>
15275<ul>
15276<li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
15277<li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
15278<li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
15279<li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
15280<li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
15281</ul>
15282</li>
15283<li>
15284<p>Manual white balance control</p>
15285<ul>
15286<li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
15287<li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
15288</ul>
15289</li>
15290<li>Manual lens shading map control<ul>
15291<li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
15292<li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
15293<li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
15294<li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
15295</ul>
15296</li>
15297<li>Manual aberration correction control (if aberration correction is supported)<ul>
15298<li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
15299<li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
15300</ul>
15301</li>
15302<li>Auto white balance lock<ul>
15303<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
15304</ul>
15305</li>
15306</ul>
15307<p>If auto white balance is enabled,<wbr/> then the camera device
15308will accurately report the values applied by AWB in the result.<wbr/></p>
15309<p>A given camera device may also support additional post-processing
15310controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span>
15311                  </li>
15312                  <li>
15313                    <span class="entry_type_enum_name">RAW</span>
15314                    <span class="entry_type_enum_optional">[optional]</span>
15315                    <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
15316metadata for interpreting them.<wbr/></p>
15317<p>Devices supporting the RAW capability allow both for
15318saving DNG files,<wbr/> and for direct application processing of
15319raw sensor images.<wbr/></p>
15320<ul>
15321<li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
15322<li>The maximum available resolution for RAW_<wbr/>SENSOR streams
15323  will match either the value in
15324  <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
15325  <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
15326<li>All DNG-related optional metadata entries are provided
15327  by the camera device.<wbr/></li>
15328</ul></span>
15329                  </li>
15330                  <li>
15331                    <span class="entry_type_enum_name">PRIVATE_REPROCESSING</span>
15332                    <span class="entry_type_enum_optional">[optional]</span>
15333                    <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
15334<ul>
15335<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>
15336<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is supported as an output/<wbr/>input format,<wbr/>
15337  that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of
15338  formats returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a> and <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputFormats">StreamConfigurationMap#getOutputFormats</a>.<wbr/></li>
15339<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
15340  returns non empty int[] for each supported input format returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a>.<wbr/></li>
15341<li>Each size returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputSizes">getInputSizes(ImageFormat.<wbr/>PRIVATE)</a> is also included in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">getOutputSizes(ImageFormat.<wbr/>PRIVATE)</a></li>
15342<li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop
15343  relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
15344<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both
15345  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and
15346  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
15347<li>The maximum available resolution for PRIVATE streams
15348  (both input/<wbr/>output) will match the maximum available
15349  resolution of JPEG streams.<wbr/></li>
15350<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
15351<li>Only below controls are effective for reprocessing requests and
15352  will be present in capture results,<wbr/> other controls in reprocess
15353  requests will be ignored by the camera device.<wbr/><ul>
15354<li>android.<wbr/>jpeg.<wbr/>*</li>
15355<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
15356<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
15357</ul>
15358</li>
15359<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
15360  <a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a> will both list ZERO_<wbr/>SHUTTER_<wbr/>LAG as a supported mode.<wbr/></li>
15361</ul></span>
15362                  </li>
15363                  <li>
15364                    <span class="entry_type_enum_name">READ_SENSOR_SETTINGS</span>
15365                    <span class="entry_type_enum_optional">[optional]</span>
15366                    <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
15367the sensor controls while the built-in 3A algorithm is running.<wbr/>  This allows
15368reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
15369<p>The values reported for the following controls are guaranteed to be available
15370in the CaptureResult,<wbr/> including when 3A is enabled:</p>
15371<ul>
15372<li>Exposure control<ul>
15373<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
15374</ul>
15375</li>
15376<li>Sensitivity control<ul>
15377<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
15378</ul>
15379</li>
15380<li>Lens controls (if the lens is adjustable)<ul>
15381<li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
15382<li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
15383</ul>
15384</li>
15385</ul>
15386<p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
15387always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
15388                  </li>
15389                  <li>
15390                    <span class="entry_type_enum_name">BURST_CAPTURE</span>
15391                    <span class="entry_type_enum_optional">[optional]</span>
15392                    <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at &gt;= 20 frames per
15393second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set
15394to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at &gt;= 10 frames
15395per second.<wbr/>  Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum
15396resolution of the device,<wbr/> whichever is smaller.<wbr/></p>
15397<p>More specifically,<wbr/> this means that a size matching the camera device's active array
15398size is listed as a supported size for the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> format in either <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> or <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighResolutionOutputSizes">StreamConfigurationMap#getHighResolutionOutputSizes</a>,<wbr/>
15399with a minimum frame duration for that format and size of either &lt;= 1/<wbr/>20 s,<wbr/> or
15400&lt;= 1/<wbr/>10 s,<wbr/> respectively; and the <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a> entry
15401lists at least one FPS range where the minimum FPS is &gt;= 1 /<wbr/> minimumFrameDuration
15402for the maximum-size YUV_<wbr/>420_<wbr/>888 format.<wbr/>  If that maximum size is listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighResolutionOutputSizes">StreamConfigurationMap#getHighResolutionOutputSizes</a>,<wbr/>
15403then the list of resolutions for YUV_<wbr/>420_<wbr/>888 from <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> contains at
15404least one resolution &gt;= 8 megapixels,<wbr/> with a minimum frame duration of &lt;= 1/<wbr/>20
15405s.<wbr/></p>
15406<p>If the device supports the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a>,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a>,<wbr/> then those can also be captured at the same rate
15407as the maximum-size YUV_<wbr/>420_<wbr/>888 resolution is.<wbr/></p>
15408<p>If the device supports the PRIVATE_<wbr/>REPROCESSING capability,<wbr/> then the same guarantees
15409as for the YUV_<wbr/>420_<wbr/>888 format also apply to the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> format.<wbr/></p>
15410<p>In addition,<wbr/> the <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> field is guaranted to have a value between 0
15411and 4,<wbr/> inclusive.<wbr/> <a href="#static_android.control.aeLockAvailable">android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available</a> and <a href="#static_android.control.awbLockAvailable">android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available</a>
15412are also guaranteed to be <code>true</code> so burst capture with these two locks ON yields
15413consistent image output.<wbr/></p></span>
15414                  </li>
15415                  <li>
15416                    <span class="entry_type_enum_name">YUV_REPROCESSING</span>
15417                    <span class="entry_type_enum_optional">[optional]</span>
15418                    <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
15419PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
15420following:</p>
15421<ul>
15422<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>
15423<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> is supported as an output/<wbr/>input format,<wbr/> that is,<wbr/>
15424  YUV_<wbr/>420_<wbr/>888 is included in the lists of formats returned by
15425  <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a> and
15426  <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputFormats">StreamConfigurationMap#getOutputFormats</a>.<wbr/></li>
15427<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
15428  returns non-empty int[] for each supported input format returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a>.<wbr/></li>
15429<li>Each size returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputSizes">get<wbr/>Input<wbr/>Sizes(YUV_<wbr/>420_<wbr/>888)</a> is also included in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">get<wbr/>Output<wbr/>Sizes(YUV_<wbr/>420_<wbr/>888)</a></li>
15430<li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> does not cause a frame rate drop
15431  relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
15432<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> will be reprocessable into both
15433  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
15434<li>The maximum available resolution for <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> streams (both input/<wbr/>output) will match the
15435  maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
15436<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
15437<li>Only the below controls are effective for reprocessing requests and will be present
15438  in capture results.<wbr/> The reprocess requests are from the original capture results that
15439  are associated with the intermediate <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a>
15440  output buffers.<wbr/>  All other controls in the reprocess requests will be ignored by the
15441  camera device.<wbr/><ul>
15442<li>android.<wbr/>jpeg.<wbr/>*</li>
15443<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
15444<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
15445<li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
15446</ul>
15447</li>
15448<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
15449  <a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a> will both list ZERO_<wbr/>SHUTTER_<wbr/>LAG as a supported mode.<wbr/></li>
15450</ul></span>
15451                  </li>
15452                  <li>
15453                    <span class="entry_type_enum_name">DEPTH_OUTPUT</span>
15454                    <span class="entry_type_enum_optional">[optional]</span>
15455                    <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
15456<p>This capability requires the camera device to support the following:</p>
15457<ul>
15458<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as an output format.<wbr/></li>
15459<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH_POINT_CLOUD">Image<wbr/>Format#DEPTH_<wbr/>POINT_<wbr/>CLOUD</a> is optionally supported as an
15460  output format.<wbr/></li>
15461<li>This camera device,<wbr/> and all camera devices with the same <a href="#static_android.lens.facing">android.<wbr/>lens.<wbr/>facing</a>,<wbr/>
15462  will list the following calibration entries in both
15463  <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> and
15464  <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
15465<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
15466<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
15467<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
15468<li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li>
15469</ul>
15470</li>
15471<li>The <a href="#static_android.depth.depthIsExclusive">android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive</a> entry is listed by this device.<wbr/></li>
15472<li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
15473  normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16
15474  format.<wbr/></li>
15475</ul>
15476<p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
15477so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
15478should be accounted for (see
15479<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
15480On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
15481using a repeating burst is recommended,<wbr/> where a depth-output target is only included
15482once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
15483rate,<wbr/> including depth stall time.<wbr/></p></span>
15484                  </li>
15485                  <li>
15486                    <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO</span>
15487                    <span class="entry_type_enum_optional">[optional]</span>
15488                    <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate &gt;=120fps)
15489use case.<wbr/> The camera device will support high speed capture session created by
15490<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>,<wbr/> which
15491only accepts high speed request lists created by
15492<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/></p>
15493<p>A camera device can still support high speed video streaming by advertising the high speed
15494FPS ranges in <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a>.<wbr/> For this case,<wbr/> all normal
15495capture request per frame control and synchronization requirements will apply to
15496the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability describes
15497the capability of a specialized operating mode with many limitations (see below),<wbr/> which
15498is only targeted at high speed video recording.<wbr/></p>
15499<p>The supported high speed video sizes and fps ranges are specified in
15500<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/>
15501To get desired output frame rates,<wbr/> the application is only allowed to select video size
15502and FPS range combinations provided by
15503<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/>
15504The fps range can be controlled via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
15505<p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
15506ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
15507controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
15508and post-processing parameters is possible.<wbr/> All other controls operate the
15509same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
15510android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
15511<ul>
15512<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
15513<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
15514<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
15515<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
15516<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
15517<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
15518<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
15519<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
15520<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
15521<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
15522</ul>
15523<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
15524<ul>
15525<li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not
15526work since aeMode is ON)</li>
15527<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
15528<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
15529<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li>
15530</ul>
15531<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
15532be lower than what camera can output,<wbr/> depending on the destination Surfaces for
15533the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
15534the application need check if the video encoder is capable of supporting the
15535high frame rate for a given video size,<wbr/> or it will end up with lower recording
15536frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame
15537rate will be bounded by the screen refresh rate.<wbr/></p>
15538<p>The camera device will only support up to 2 high speed simultaneous output surfaces
15539(preview and recording surfaces)
15540in this mode.<wbr/> Above controls will be effective only if all of below conditions are true:</p>
15541<ul>
15542<li>The application creates a camera capture session with no more than 2 surfaces via
15543<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The
15544targeted surfaces must be preview surface (either from
15545<a href="https://developer.android.com/reference/android/view/SurfaceView.html">SurfaceView</a> or <a href="https://developer.android.com/reference/android/graphics/SurfaceTexture.html">SurfaceTexture</a>) or
15546recording surface(either from <a href="https://developer.android.com/reference/android/media/MediaRecorder.html#getSurface">MediaRecorder#getSurface</a> or
15547<a href="https://developer.android.com/reference/android/media/MediaCodec.html#createInputSurface">MediaCodec#createInputSurface</a>).<wbr/></li>
15548<li>The stream sizes are selected from the sizes reported by
15549<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li>
15550<li>The FPS ranges are selected from
15551<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/></li>
15552</ul>
15553<p>When above conditions are NOT satistied,<wbr/>
15554<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
15555will fail.<wbr/></p>
15556<p>Switching to a FPS range that has different maximum FPS may trigger some camera device
15557reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
15558the application avoids unnecessary maximum target FPS changes as much as possible
15559during high speed streaming.<wbr/></p></span>
15560                  </li>
15561                </ul>
15562
15563            </td> <!-- entry_type -->
15564
15565            <td class="entry_description">
15566              <p>List of capabilities that this camera device
15567advertises as fully supporting.<wbr/></p>
15568            </td>
15569
15570            <td class="entry_units">
15571            </td>
15572
15573            <td class="entry_range">
15574            </td>
15575
15576            <td class="entry_tags">
15577            </td>
15578
15579          </tr>
15580          <tr class="entries_header">
15581            <th class="th_details" colspan="5">Details</th>
15582          </tr>
15583          <tr class="entry_cont">
15584            <td class="entry_details" colspan="5">
15585              <p>A capability is a contract that the camera device makes in order
15586to be able to satisfy one or more use cases.<wbr/></p>
15587<p>Listing a capability guarantees that the whole set of features
15588required to support a common use will all be available.<wbr/></p>
15589<p>Using a subset of the functionality provided by an unsupported
15590capability may be possible on a specific camera device implementation;
15591to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
15592<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
15593<a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
15594<p>The following capabilities are guaranteed to be available on
15595<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
15596<ul>
15597<li>MANUAL_<wbr/>SENSOR</li>
15598<li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
15599</ul>
15600<p>Other capabilities may be available on either FULL or LIMITED
15601devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
15602            </td>
15603          </tr>
15604
15605          <tr class="entries_header">
15606            <th class="th_details" colspan="5">HAL Implementation Details</th>
15607          </tr>
15608          <tr class="entry_cont">
15609            <td class="entry_details" colspan="5">
15610              <p>Additional constraint details per-capability will be available
15611in the Compatibility Test Suite.<wbr/></p>
15612<p>Minimum baseline requirements required for the
15613BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
15614Instead refer to "BC" tags and the camera CTS tests in the
15615android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
15616<p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
15617<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
15618request and the result in order to be considered to be
15619capability-compliant.<wbr/></p>
15620<p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
15621then exposure time must be configurable via the request <em>and</em>
15622the actual exposure applied must be available via
15623the result.<wbr/></p>
15624<p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
15625<a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
15626<p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
15627hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
15628<p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
15629CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
15630<p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
15631YUV_<wbr/>REPROCESSING capability must support the
15632CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
15633<p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
15634<a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
15635<a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
15636<a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
15637addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
15638enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
15639if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
15640DEPTH).<wbr/></p>
15641            </td>
15642          </tr>
15643
15644          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15645           <!-- end of entry -->
15646        
15647                
15648          <tr class="entry" id="static_android.request.availableRequestKeys">
15649            <td class="entry_name
15650             " rowspan="5">
15651              android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
15652            </td>
15653            <td class="entry_type">
15654                <span class="entry_type_name">int32</span>
15655                <span class="entry_type_container">x</span>
15656
15657                <span class="entry_type_array">
15658                  n
15659                </span>
15660              <span class="entry_type_visibility"> [hidden]</span>
15661
15662
15663              <span class="entry_type_hwlevel">[legacy] </span>
15664
15665
15666
15667
15668            </td> <!-- entry_type -->
15669
15670            <td class="entry_description">
15671              <p>A list of all keys that the camera device has available
15672to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
15673            </td>
15674
15675            <td class="entry_units">
15676            </td>
15677
15678            <td class="entry_range">
15679            </td>
15680
15681            <td class="entry_tags">
15682            </td>
15683
15684          </tr>
15685          <tr class="entries_header">
15686            <th class="th_details" colspan="5">Details</th>
15687          </tr>
15688          <tr class="entry_cont">
15689            <td class="entry_details" colspan="5">
15690              <p>Attempting to set a key into a CaptureRequest that is not
15691listed here will result in an invalid request and will be rejected
15692by the camera device.<wbr/></p>
15693<p>This field can be used to query the feature set of a camera device
15694at a more granular level than capabilities.<wbr/> This is especially
15695important for optional keys that are not listed under any capability
15696in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
15697            </td>
15698          </tr>
15699
15700          <tr class="entries_header">
15701            <th class="th_details" colspan="5">HAL Implementation Details</th>
15702          </tr>
15703          <tr class="entry_cont">
15704            <td class="entry_details" colspan="5">
15705              <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
15706extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
15707<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
15708vendor extensions API and not against this field.<wbr/></p>
15709<p>The HAL must not consume any request tags that are not listed either
15710here or in the vendor tag list.<wbr/></p>
15711<p>The public camera2 API will always make the vendor tags visible
15712via
15713<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
15714            </td>
15715          </tr>
15716
15717          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15718           <!-- end of entry -->
15719        
15720                
15721          <tr class="entry" id="static_android.request.availableResultKeys">
15722            <td class="entry_name
15723             " rowspan="5">
15724              android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
15725            </td>
15726            <td class="entry_type">
15727                <span class="entry_type_name">int32</span>
15728                <span class="entry_type_container">x</span>
15729
15730                <span class="entry_type_array">
15731                  n
15732                </span>
15733              <span class="entry_type_visibility"> [hidden]</span>
15734
15735
15736              <span class="entry_type_hwlevel">[legacy] </span>
15737
15738
15739
15740
15741            </td> <!-- entry_type -->
15742
15743            <td class="entry_description">
15744              <p>A list of all keys that the camera device has available
15745to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>.<wbr/></p>
15746            </td>
15747
15748            <td class="entry_units">
15749            </td>
15750
15751            <td class="entry_range">
15752            </td>
15753
15754            <td class="entry_tags">
15755            </td>
15756
15757          </tr>
15758          <tr class="entries_header">
15759            <th class="th_details" colspan="5">Details</th>
15760          </tr>
15761          <tr class="entry_cont">
15762            <td class="entry_details" colspan="5">
15763              <p>Attempting to get a key from a CaptureResult that is not
15764listed here will always return a <code>null</code> value.<wbr/> Getting a key from
15765a CaptureResult that is listed here will generally never return a <code>null</code>
15766value.<wbr/></p>
15767<p>The following keys may return <code>null</code> unless they are enabled:</p>
15768<ul>
15769<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>
15770</ul>
15771<p>(Those sometimes-null keys will nevertheless be listed here
15772if they are available.<wbr/>)</p>
15773<p>This field can be used to query the feature set of a camera device
15774at a more granular level than capabilities.<wbr/> This is especially
15775important for optional keys that are not listed under any capability
15776in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
15777            </td>
15778          </tr>
15779
15780          <tr class="entries_header">
15781            <th class="th_details" colspan="5">HAL Implementation Details</th>
15782          </tr>
15783          <tr class="entry_cont">
15784            <td class="entry_details" colspan="5">
15785              <p>Tags listed here must always have an entry in the result metadata,<wbr/>
15786even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
15787matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
15788<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
15789extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
15790<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
15791vendor extensions API and not against this field.<wbr/></p>
15792<p>The HAL must not produce any result tags that are not listed either
15793here or in the vendor tag list.<wbr/></p>
15794<p>The public camera2 API will always make the vendor tags visible via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
15795            </td>
15796          </tr>
15797
15798          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15799           <!-- end of entry -->
15800        
15801                
15802          <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
15803            <td class="entry_name
15804             " rowspan="5">
15805              android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
15806            </td>
15807            <td class="entry_type">
15808                <span class="entry_type_name">int32</span>
15809                <span class="entry_type_container">x</span>
15810
15811                <span class="entry_type_array">
15812                  n
15813                </span>
15814              <span class="entry_type_visibility"> [hidden]</span>
15815
15816
15817              <span class="entry_type_hwlevel">[legacy] </span>
15818
15819
15820
15821
15822            </td> <!-- entry_type -->
15823
15824            <td class="entry_description">
15825              <p>A list of all keys that the camera device has available
15826to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
15827            </td>
15828
15829            <td class="entry_units">
15830            </td>
15831
15832            <td class="entry_range">
15833            </td>
15834
15835            <td class="entry_tags">
15836            </td>
15837
15838          </tr>
15839          <tr class="entries_header">
15840            <th class="th_details" colspan="5">Details</th>
15841          </tr>
15842          <tr class="entry_cont">
15843            <td class="entry_details" colspan="5">
15844              <p>This entry follows the same rules as
15845<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
15846CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
15847details.<wbr/></p>
15848            </td>
15849          </tr>
15850
15851          <tr class="entries_header">
15852            <th class="th_details" colspan="5">HAL Implementation Details</th>
15853          </tr>
15854          <tr class="entry_cont">
15855            <td class="entry_details" colspan="5">
15856              <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
15857even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
15858matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
15859<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
15860extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
15861<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
15862vendor extensions API and not against this field.<wbr/></p>
15863<p>The HAL must not have any tags in its static info that are not listed
15864either here or in the vendor tag list.<wbr/></p>
15865<p>The public camera2 API will always make the vendor tags visible
15866via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
15867            </td>
15868          </tr>
15869
15870          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15871           <!-- end of entry -->
15872        
15873        
15874
15875      <!-- end of kind -->
15876      </tbody>
15877      <tr><td colspan="6" class="kind">dynamic</td></tr>
15878
15879      <thead class="entries_header">
15880        <tr>
15881          <th class="th_name">Property Name</th>
15882          <th class="th_type">Type</th>
15883          <th class="th_description">Description</th>
15884          <th class="th_units">Units</th>
15885          <th class="th_range">Range</th>
15886          <th class="th_tags">Tags</th>
15887        </tr>
15888      </thead>
15889
15890      <tbody>
15891
15892        
15893
15894        
15895
15896        
15897
15898        
15899
15900                
15901          <tr class="entry" id="dynamic_android.request.frameCount">
15902            <td class="entry_name
15903                entry_name_deprecated
15904             " rowspan="3">
15905              android.<wbr/>request.<wbr/>frame<wbr/>Count
15906            </td>
15907            <td class="entry_type">
15908                <span class="entry_type_name">int32</span>
15909
15910              <span class="entry_type_visibility"> [hidden]</span>
15911
15912
15913
15914              <span class="entry_type_deprecated">[deprecated] </span>
15915
15916
15917
15918            </td> <!-- entry_type -->
15919
15920            <td class="entry_description">
15921              <p>A frame counter set by the framework.<wbr/> This value monotonically
15922increases with every new result (that is,<wbr/> each new result has a unique
15923frameCount value).<wbr/></p>
15924            </td>
15925
15926            <td class="entry_units">
15927              count of frames
15928            </td>
15929
15930            <td class="entry_range">
15931              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15932              <p>&gt; 0</p>
15933            </td>
15934
15935            <td class="entry_tags">
15936            </td>
15937
15938          </tr>
15939          <tr class="entries_header">
15940            <th class="th_details" colspan="5">Details</th>
15941          </tr>
15942          <tr class="entry_cont">
15943            <td class="entry_details" colspan="5">
15944              <p>Reset on release()</p>
15945            </td>
15946          </tr>
15947
15948
15949          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15950           <!-- end of entry -->
15951        
15952                
15953          <tr class="entry" id="dynamic_android.request.id">
15954            <td class="entry_name
15955             " rowspan="1">
15956              android.<wbr/>request.<wbr/>id
15957            </td>
15958            <td class="entry_type">
15959                <span class="entry_type_name">int32</span>
15960
15961              <span class="entry_type_visibility"> [hidden]</span>
15962
15963
15964
15965
15966
15967
15968            </td> <!-- entry_type -->
15969
15970            <td class="entry_description">
15971              <p>An application-specified ID for the current
15972request.<wbr/> Must be maintained unchanged in output
15973frame</p>
15974            </td>
15975
15976            <td class="entry_units">
15977              arbitrary integer assigned by application
15978            </td>
15979
15980            <td class="entry_range">
15981              <p>Any int</p>
15982            </td>
15983
15984            <td class="entry_tags">
15985              <ul class="entry_tags">
15986                  <li><a href="#tag_V1">V1</a></li>
15987              </ul>
15988            </td>
15989
15990          </tr>
15991
15992
15993          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15994           <!-- end of entry -->
15995        
15996                
15997          <tr class="entry" id="dynamic_android.request.metadataMode">
15998            <td class="entry_name
15999             " rowspan="1">
16000              android.<wbr/>request.<wbr/>metadata<wbr/>Mode
16001            </td>
16002            <td class="entry_type">
16003                <span class="entry_type_name entry_type_name_enum">byte</span>
16004
16005              <span class="entry_type_visibility"> [system]</span>
16006
16007
16008
16009
16010
16011                <ul class="entry_type_enum">
16012                  <li>
16013                    <span class="entry_type_enum_name">NONE</span>
16014                    <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
16015for application-bound buffer data.<wbr/> If no
16016application-bound streams exist,<wbr/> no frame should be
16017placed in the output frame queue.<wbr/> If such streams
16018exist,<wbr/> a frame should be placed on the output queue
16019with null metadata but with the necessary output buffer
16020information.<wbr/> Timestamp information should still be
16021included with any output stream buffers</p></span>
16022                  </li>
16023                  <li>
16024                    <span class="entry_type_enum_name">FULL</span>
16025                    <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
16026only be produced if they are separately
16027enabled</p></span>
16028                  </li>
16029                </ul>
16030
16031            </td> <!-- entry_type -->
16032
16033            <td class="entry_description">
16034              <p>How much metadata to produce on
16035output</p>
16036            </td>
16037
16038            <td class="entry_units">
16039            </td>
16040
16041            <td class="entry_range">
16042            </td>
16043
16044            <td class="entry_tags">
16045              <ul class="entry_tags">
16046                  <li><a href="#tag_FUTURE">FUTURE</a></li>
16047              </ul>
16048            </td>
16049
16050          </tr>
16051
16052
16053          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16054           <!-- end of entry -->
16055        
16056                
16057          <tr class="entry" id="dynamic_android.request.outputStreams">
16058            <td class="entry_name
16059                entry_name_deprecated
16060             " rowspan="3">
16061              android.<wbr/>request.<wbr/>output<wbr/>Streams
16062            </td>
16063            <td class="entry_type">
16064                <span class="entry_type_name">int32</span>
16065                <span class="entry_type_container">x</span>
16066
16067                <span class="entry_type_array">
16068                  n
16069                </span>
16070              <span class="entry_type_visibility"> [system]</span>
16071
16072
16073
16074              <span class="entry_type_deprecated">[deprecated] </span>
16075
16076
16077
16078            </td> <!-- entry_type -->
16079
16080            <td class="entry_description">
16081              <p>Lists which camera output streams image data
16082from this capture must be sent to</p>
16083            </td>
16084
16085            <td class="entry_units">
16086              List of camera stream IDs
16087            </td>
16088
16089            <td class="entry_range">
16090              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16091              <p>List must only include streams that have been
16092created</p>
16093            </td>
16094
16095            <td class="entry_tags">
16096              <ul class="entry_tags">
16097                  <li><a href="#tag_HAL2">HAL2</a></li>
16098              </ul>
16099            </td>
16100
16101          </tr>
16102          <tr class="entries_header">
16103            <th class="th_details" colspan="5">Details</th>
16104          </tr>
16105          <tr class="entry_cont">
16106            <td class="entry_details" colspan="5">
16107              <p>If no output streams are listed,<wbr/> then the image
16108data should simply be discarded.<wbr/> The image data must
16109still be captured for metadata and statistics production,<wbr/>
16110and the lens and flash must operate as requested.<wbr/></p>
16111            </td>
16112          </tr>
16113
16114
16115          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16116           <!-- end of entry -->
16117        
16118                
16119          <tr class="entry" id="dynamic_android.request.pipelineDepth">
16120            <td class="entry_name
16121             " rowspan="5">
16122              android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
16123            </td>
16124            <td class="entry_type">
16125                <span class="entry_type_name">byte</span>
16126
16127              <span class="entry_type_visibility"> [public]</span>
16128
16129
16130              <span class="entry_type_hwlevel">[legacy] </span>
16131
16132
16133
16134
16135            </td> <!-- entry_type -->
16136
16137            <td class="entry_description">
16138              <p>Specifies the number of pipeline stages the frame went
16139through from when it was exposed to when the final completed result
16140was available to the framework.<wbr/></p>
16141            </td>
16142
16143            <td class="entry_units">
16144            </td>
16145
16146            <td class="entry_range">
16147              <p>&lt;= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
16148            </td>
16149
16150            <td class="entry_tags">
16151            </td>
16152
16153          </tr>
16154          <tr class="entries_header">
16155            <th class="th_details" colspan="5">Details</th>
16156          </tr>
16157          <tr class="entry_cont">
16158            <td class="entry_details" colspan="5">
16159              <p>Depending on what settings are used in the request,<wbr/> and
16160what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
16161and some pipeline stages skipped.<wbr/></p>
16162<p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
16163            </td>
16164          </tr>
16165
16166          <tr class="entries_header">
16167            <th class="th_details" colspan="5">HAL Implementation Details</th>
16168          </tr>
16169          <tr class="entry_cont">
16170            <td class="entry_details" colspan="5">
16171              <p>This value must always represent the accurate count of how many
16172pipeline stages were actually used.<wbr/></p>
16173            </td>
16174          </tr>
16175
16176          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16177           <!-- end of entry -->
16178        
16179        
16180
16181      <!-- end of kind -->
16182      </tbody>
16183
16184  <!-- end of section -->
16185  <tr><td colspan="6" id="section_scaler" class="section">scaler</td></tr>
16186
16187
16188      <tr><td colspan="6" class="kind">controls</td></tr>
16189
16190      <thead class="entries_header">
16191        <tr>
16192          <th class="th_name">Property Name</th>
16193          <th class="th_type">Type</th>
16194          <th class="th_description">Description</th>
16195          <th class="th_units">Units</th>
16196          <th class="th_range">Range</th>
16197          <th class="th_tags">Tags</th>
16198        </tr>
16199      </thead>
16200
16201      <tbody>
16202
16203        
16204
16205        
16206
16207        
16208
16209        
16210
16211                
16212          <tr class="entry" id="controls_android.scaler.cropRegion">
16213            <td class="entry_name
16214             " rowspan="5">
16215              android.<wbr/>scaler.<wbr/>crop<wbr/>Region
16216            </td>
16217            <td class="entry_type">
16218                <span class="entry_type_name">int32</span>
16219                <span class="entry_type_container">x</span>
16220
16221                <span class="entry_type_array">
16222                  4
16223                </span>
16224              <span class="entry_type_visibility"> [public as rectangle]</span>
16225
16226
16227              <span class="entry_type_hwlevel">[legacy] </span>
16228
16229
16230
16231
16232            </td> <!-- entry_type -->
16233
16234            <td class="entry_description">
16235              <p>The desired region of the sensor to read out for this capture.<wbr/></p>
16236            </td>
16237
16238            <td class="entry_units">
16239              Pixel coordinates relative to
16240          android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
16241            </td>
16242
16243            <td class="entry_range">
16244            </td>
16245
16246            <td class="entry_tags">
16247              <ul class="entry_tags">
16248                  <li><a href="#tag_BC">BC</a></li>
16249              </ul>
16250            </td>
16251
16252          </tr>
16253          <tr class="entries_header">
16254            <th class="th_details" colspan="5">Details</th>
16255          </tr>
16256          <tr class="entry_cont">
16257            <td class="entry_details" colspan="5">
16258              <p>This control can be used to implement digital zoom.<wbr/></p>
16259<p>The crop region coordinate system is based off
16260<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
16261top-left corner of the sensor active array.<wbr/></p>
16262<p>Output streams use this rectangle to produce their output,<wbr/>
16263cropping to a smaller region if necessary to maintain the
16264stream's aspect ratio,<wbr/> then scaling the sensor input to
16265match the output's configured resolution.<wbr/></p>
16266<p>The crop region is applied after the RAW to other color
16267space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
16268(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
16269croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
16270<p>For non-raw streams,<wbr/> any additional per-stream cropping will
16271be done to maximize the final pixel area of the stream.<wbr/></p>
16272<p>For example,<wbr/> if the crop region is set to a 4:3 aspect
16273ratio,<wbr/> then 4:3 streams will use the exact crop
16274region.<wbr/> 16:9 streams will further crop vertically
16275(letterbox).<wbr/></p>
16276<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
16277outputs will crop horizontally (pillarbox),<wbr/> and 16:9
16278streams will match exactly.<wbr/> These additional crops will
16279be centered within the crop region.<wbr/></p>
16280<p>The width and height of the crop region cannot
16281be set to be smaller than
16282<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
16283<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>
16284<p>The camera device may adjust the crop region to account
16285for rounding and other hardware requirements; the final
16286crop region used will be included in the output capture
16287result.<wbr/></p>
16288            </td>
16289          </tr>
16290
16291          <tr class="entries_header">
16292            <th class="th_details" colspan="5">HAL Implementation Details</th>
16293          </tr>
16294          <tr class="entry_cont">
16295            <td class="entry_details" colspan="5">
16296              <p>The output streams must maintain square pixels at all
16297times,<wbr/> no matter what the relative aspect ratios of the
16298crop region and the stream are.<wbr/>  Negative values for
16299corner are allowed for raw output if full pixel array is
16300larger than active pixel array.<wbr/> Width and height may be
16301rounded to nearest larger supportable width,<wbr/> especially
16302for raw output,<wbr/> where only a few fixed scales may be
16303possible.<wbr/></p>
16304<p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
16305size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
16306<ul>
16307<li>
16308<p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
16309array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
16310<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> to the sensor cropped pixel area size in this way:</p>
16311<ol>
16312<li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
16313cropped pixel area by (tx,<wbr/> ty),<wbr/>
16314where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
16315and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
16316(sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
16317<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
16318<li>Scale the width and height of requested cropRegion with scaling factor of
16319sensor<wbr/>Crop.<wbr/>width/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>width and sensor<wbr/>Crop.<wbr/>height/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>height
16320respectively.<wbr/>
16321Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
16322with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
16323follow the general cropping rule for this new cropRegion and effective active
16324array size.<wbr/></li>
16325</ol>
16326</li>
16327<li>
16328<p>The HAL must report the cropRegion with regard to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>
16329The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
16330The reported cropRegion may be slightly different with the requested cropRegion since
16331the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
16332hardware limitations.<wbr/></p>
16333</li>
16334</ul>
16335<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
16336            </td>
16337          </tr>
16338
16339          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16340           <!-- end of entry -->
16341        
16342        
16343
16344      <!-- end of kind -->
16345      </tbody>
16346      <tr><td colspan="6" class="kind">static</td></tr>
16347
16348      <thead class="entries_header">
16349        <tr>
16350          <th class="th_name">Property Name</th>
16351          <th class="th_type">Type</th>
16352          <th class="th_description">Description</th>
16353          <th class="th_units">Units</th>
16354          <th class="th_range">Range</th>
16355          <th class="th_tags">Tags</th>
16356        </tr>
16357      </thead>
16358
16359      <tbody>
16360
16361        
16362
16363        
16364
16365        
16366
16367        
16368
16369                
16370          <tr class="entry" id="static_android.scaler.availableFormats">
16371            <td class="entry_name
16372                entry_name_deprecated
16373             " rowspan="5">
16374              android.<wbr/>scaler.<wbr/>available<wbr/>Formats
16375            </td>
16376            <td class="entry_type">
16377                <span class="entry_type_name entry_type_name_enum">int32</span>
16378                <span class="entry_type_container">x</span>
16379
16380                <span class="entry_type_array">
16381                  n
16382                </span>
16383              <span class="entry_type_visibility"> [hidden as imageFormat]</span>
16384
16385
16386
16387              <span class="entry_type_deprecated">[deprecated] </span>
16388
16389
16390                <ul class="entry_type_enum">
16391                  <li>
16392                    <span class="entry_type_enum_name">RAW16</span>
16393                    <span class="entry_type_enum_optional">[optional]</span>
16394                    <span class="entry_type_enum_value">0x20</span>
16395                    <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
16396buffers with 16-bit pixels.<wbr/></p>
16397<p>Buffers of this format are typically expected to have a
16398Bayer Color Filter Array (CFA) layout,<wbr/> which is given in
16399<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
16400CFAs that are not representable by a format in
16401<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
16402use this format.<wbr/></p>
16403<p>Buffers of this format will also follow the constraints given for
16404RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
16405<p>This format is intended to give users access to the full contents
16406of the buffers coming directly from the image sensor prior to any
16407cropping or scaling operations,<wbr/> and all coordinate systems for
16408metadata used for this format are relative to the size of the
16409active region of the image sensor before any geometric distortion
16410correction has been applied (i.<wbr/>e.<wbr/>
16411<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>).<wbr/> Supported
16412dimensions for this format are limited to the full dimensions of
16413the sensor (e.<wbr/>g.<wbr/> either <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
16414<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> will be the
16415only supported output size).<wbr/></p>
16416<p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
16417the full set of performance guarantees.<wbr/></p></span>
16418                  </li>
16419                  <li>
16420                    <span class="entry_type_enum_name">RAW_OPAQUE</span>
16421                    <span class="entry_type_enum_optional">[optional]</span>
16422                    <span class="entry_type_enum_value">0x24</span>
16423                    <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or
16424<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a>
16425as referred in public API) is a format for raw image buffers
16426coming from an image sensor.<wbr/></p>
16427<p>The actual structure of buffers of this format is
16428platform-specific,<wbr/> but must follow several constraints:</p>
16429<ol>
16430<li>No image post-processing operations may have been applied to
16431buffers of this type.<wbr/> These buffers contain raw image data coming
16432directly from the image sensor.<wbr/></li>
16433<li>If a buffer of this format is passed to the camera device for
16434reprocessing,<wbr/> the resulting images will be identical to the images
16435produced if the buffer had come directly from the sensor and was
16436processed with the same settings.<wbr/></li>
16437</ol>
16438<p>The intended use for this format is to allow access to the native
16439raw format buffers coming directly from the camera sensor without
16440any additional conversions or decrease in framerate.<wbr/></p>
16441<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
16442performance guarantees.<wbr/></p></span>
16443                  </li>
16444                  <li>
16445                    <span class="entry_type_enum_name">YV12</span>
16446                    <span class="entry_type_enum_optional">[optional]</span>
16447                    <span class="entry_type_enum_value">0x32315659</span>
16448                    <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
16449                  </li>
16450                  <li>
16451                    <span class="entry_type_enum_name">YCrCb_420_SP</span>
16452                    <span class="entry_type_enum_optional">[optional]</span>
16453                    <span class="entry_type_enum_value">0x11</span>
16454                    <span class="entry_type_enum_notes"><p>NV21</p></span>
16455                  </li>
16456                  <li>
16457                    <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span>
16458                    <span class="entry_type_enum_value">0x22</span>
16459                    <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
16460                  </li>
16461                  <li>
16462                    <span class="entry_type_enum_name">YCbCr_420_888</span>
16463                    <span class="entry_type_enum_value">0x23</span>
16464                    <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
16465                  </li>
16466                  <li>
16467                    <span class="entry_type_enum_name">BLOB</span>
16468                    <span class="entry_type_enum_value">0x21</span>
16469                    <span class="entry_type_enum_notes"><p>JPEG format</p></span>
16470                  </li>
16471                </ul>
16472
16473            </td> <!-- entry_type -->
16474
16475            <td class="entry_description">
16476              <p>The list of image formats that are supported by this
16477camera device for output streams.<wbr/></p>
16478            </td>
16479
16480            <td class="entry_units">
16481            </td>
16482
16483            <td class="entry_range">
16484              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16485            </td>
16486
16487            <td class="entry_tags">
16488              <ul class="entry_tags">
16489                  <li><a href="#tag_BC">BC</a></li>
16490              </ul>
16491            </td>
16492
16493          </tr>
16494          <tr class="entries_header">
16495            <th class="th_details" colspan="5">Details</th>
16496          </tr>
16497          <tr class="entry_cont">
16498            <td class="entry_details" colspan="5">
16499              <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
16500<p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
16501            </td>
16502          </tr>
16503
16504          <tr class="entries_header">
16505            <th class="th_details" colspan="5">HAL Implementation Details</th>
16506          </tr>
16507          <tr class="entry_cont">
16508            <td class="entry_details" colspan="5">
16509              <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
16510system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
16511<p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
16512gralloc module will select a format based on the usage flags provided
16513by the camera HAL device and the other endpoint of the stream.<wbr/> It is
16514usually used by preview and recording streams,<wbr/> where the application doesn't
16515need access the image data.<wbr/></p>
16516<p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
16517needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
16518<p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
16519<p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
16520recommended that any information used by the camera device when
16521processing images is fully expressed by the result metadata
16522for that image buffer.<wbr/></p>
16523            </td>
16524          </tr>
16525
16526          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16527           <!-- end of entry -->
16528        
16529                
16530          <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
16531            <td class="entry_name
16532                entry_name_deprecated
16533             " rowspan="3">
16534              android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
16535            </td>
16536            <td class="entry_type">
16537                <span class="entry_type_name">int64</span>
16538                <span class="entry_type_container">x</span>
16539
16540                <span class="entry_type_array">
16541                  n
16542                </span>
16543              <span class="entry_type_visibility"> [hidden]</span>
16544
16545
16546
16547              <span class="entry_type_deprecated">[deprecated] </span>
16548
16549
16550
16551            </td> <!-- entry_type -->
16552
16553            <td class="entry_description">
16554              <p>The minimum frame duration that is supported
16555for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
16556            </td>
16557
16558            <td class="entry_units">
16559              Nanoseconds
16560            </td>
16561
16562            <td class="entry_range">
16563              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16564              <p>TODO: Remove property.<wbr/></p>
16565            </td>
16566
16567            <td class="entry_tags">
16568              <ul class="entry_tags">
16569                  <li><a href="#tag_BC">BC</a></li>
16570              </ul>
16571            </td>
16572
16573          </tr>
16574          <tr class="entries_header">
16575            <th class="th_details" colspan="5">Details</th>
16576          </tr>
16577          <tr class="entry_cont">
16578            <td class="entry_details" colspan="5">
16579              <p>This corresponds to the minimum steady-state frame duration when only
16580that JPEG stream is active and captured in a burst,<wbr/> with all
16581processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
16582<p>When multiple streams are configured,<wbr/> the minimum
16583frame duration will be &gt;= max(individual stream min
16584durations)</p>
16585            </td>
16586          </tr>
16587
16588
16589          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16590           <!-- end of entry -->
16591        
16592                
16593          <tr class="entry" id="static_android.scaler.availableJpegSizes">
16594            <td class="entry_name
16595                entry_name_deprecated
16596             " rowspan="5">
16597              android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
16598            </td>
16599            <td class="entry_type">
16600                <span class="entry_type_name">int32</span>
16601                <span class="entry_type_container">x</span>
16602
16603                <span class="entry_type_array">
16604                  n x 2
16605                </span>
16606              <span class="entry_type_visibility"> [hidden as size]</span>
16607
16608
16609
16610              <span class="entry_type_deprecated">[deprecated] </span>
16611
16612
16613
16614            </td> <!-- entry_type -->
16615
16616            <td class="entry_description">
16617              <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
16618            </td>
16619
16620            <td class="entry_units">
16621            </td>
16622
16623            <td class="entry_range">
16624              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16625              <p>TODO: Remove property.<wbr/></p>
16626            </td>
16627
16628            <td class="entry_tags">
16629              <ul class="entry_tags">
16630                  <li><a href="#tag_BC">BC</a></li>
16631              </ul>
16632            </td>
16633
16634          </tr>
16635          <tr class="entries_header">
16636            <th class="th_details" colspan="5">Details</th>
16637          </tr>
16638          <tr class="entry_cont">
16639            <td class="entry_details" colspan="5">
16640              <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
16641sensor 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>
16642            </td>
16643          </tr>
16644
16645          <tr class="entries_header">
16646            <th class="th_details" colspan="5">HAL Implementation Details</th>
16647          </tr>
16648          <tr class="entry_cont">
16649            <td class="entry_details" colspan="5">
16650              <p>The HAL must include sensor maximum resolution
16651(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
16652and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
16653            </td>
16654          </tr>
16655
16656          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16657           <!-- end of entry -->
16658        
16659                
16660          <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
16661            <td class="entry_name
16662             " rowspan="3">
16663              android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
16664            </td>
16665            <td class="entry_type">
16666                <span class="entry_type_name">float</span>
16667
16668              <span class="entry_type_visibility"> [public]</span>
16669
16670
16671              <span class="entry_type_hwlevel">[legacy] </span>
16672
16673
16674
16675
16676            </td> <!-- entry_type -->
16677
16678            <td class="entry_description">
16679              <p>The maximum ratio between both active area width
16680and crop region width,<wbr/> and active area height and
16681crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
16682            </td>
16683
16684            <td class="entry_units">
16685              Zoom scale factor
16686            </td>
16687
16688            <td class="entry_range">
16689              <p>&gt;=1</p>
16690            </td>
16691
16692            <td class="entry_tags">
16693              <ul class="entry_tags">
16694                  <li><a href="#tag_BC">BC</a></li>
16695              </ul>
16696            </td>
16697
16698          </tr>
16699          <tr class="entries_header">
16700            <th class="th_details" colspan="5">Details</th>
16701          </tr>
16702          <tr class="entry_cont">
16703            <td class="entry_details" colspan="5">
16704              <p>This represents the maximum amount of zooming possible by
16705the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
16706window size.<wbr/></p>
16707<p>Crop regions that have a width or height that is smaller
16708than this ratio allows will be rounded up to the minimum
16709allowed size by the camera device.<wbr/></p>
16710            </td>
16711          </tr>
16712
16713
16714          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16715           <!-- end of entry -->
16716        
16717                
16718          <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
16719            <td class="entry_name
16720                entry_name_deprecated
16721             " rowspan="3">
16722              android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
16723            </td>
16724            <td class="entry_type">
16725                <span class="entry_type_name">int64</span>
16726                <span class="entry_type_container">x</span>
16727
16728                <span class="entry_type_array">
16729                  n
16730                </span>
16731              <span class="entry_type_visibility"> [hidden]</span>
16732
16733
16734
16735              <span class="entry_type_deprecated">[deprecated] </span>
16736
16737
16738
16739            </td> <!-- entry_type -->
16740
16741            <td class="entry_description">
16742              <p>For each available processed output size (defined in
16743<a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
16744minimum supportable frame duration for that size.<wbr/></p>
16745            </td>
16746
16747            <td class="entry_units">
16748              Nanoseconds
16749            </td>
16750
16751            <td class="entry_range">
16752              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16753            </td>
16754
16755            <td class="entry_tags">
16756              <ul class="entry_tags">
16757                  <li><a href="#tag_BC">BC</a></li>
16758              </ul>
16759            </td>
16760
16761          </tr>
16762          <tr class="entries_header">
16763            <th class="th_details" colspan="5">Details</th>
16764          </tr>
16765          <tr class="entry_cont">
16766            <td class="entry_details" colspan="5">
16767              <p>This should correspond to the frame duration when only that processed
16768stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
16769set to FAST.<wbr/></p>
16770<p>When multiple streams are configured,<wbr/> the minimum frame duration will
16771be &gt;= max(individual stream min durations).<wbr/></p>
16772            </td>
16773          </tr>
16774
16775
16776          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16777           <!-- end of entry -->
16778        
16779                
16780          <tr class="entry" id="static_android.scaler.availableProcessedSizes">
16781            <td class="entry_name
16782                entry_name_deprecated
16783             " rowspan="5">
16784              android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
16785            </td>
16786            <td class="entry_type">
16787                <span class="entry_type_name">int32</span>
16788                <span class="entry_type_container">x</span>
16789
16790                <span class="entry_type_array">
16791                  n x 2
16792                </span>
16793              <span class="entry_type_visibility"> [hidden as size]</span>
16794
16795
16796
16797              <span class="entry_type_deprecated">[deprecated] </span>
16798
16799
16800
16801            </td> <!-- entry_type -->
16802
16803            <td class="entry_description">
16804              <p>The resolutions available for use with
16805processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
16806platform opaque YUV/<wbr/>RGB streams to the GPU or video
16807encoders.<wbr/></p>
16808            </td>
16809
16810            <td class="entry_units">
16811            </td>
16812
16813            <td class="entry_range">
16814              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16815            </td>
16816
16817            <td class="entry_tags">
16818              <ul class="entry_tags">
16819                  <li><a href="#tag_BC">BC</a></li>
16820              </ul>
16821            </td>
16822
16823          </tr>
16824          <tr class="entries_header">
16825            <th class="th_details" colspan="5">Details</th>
16826          </tr>
16827          <tr class="entry_cont">
16828            <td class="entry_details" colspan="5">
16829              <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
16830<p>For a given use case,<wbr/> the actual maximum supported resolution
16831may be lower than what is listed here,<wbr/> depending on the destination
16832Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
16833the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
16834smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
16835can provide.<wbr/></p>
16836<p>Please reference the documentation for the image data destination to
16837check if it limits the maximum size for image data.<wbr/></p>
16838            </td>
16839          </tr>
16840
16841          <tr class="entries_header">
16842            <th class="th_details" colspan="5">HAL Implementation Details</th>
16843          </tr>
16844          <tr class="entry_cont">
16845            <td class="entry_details" colspan="5">
16846              <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/>
16847the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>
16848and each below resolution if it is smaller than or equal to the sensor
16849maximum resolution (if they are not listed in JPEG sizes already):</p>
16850<ul>
16851<li>240p (320 x 240)</li>
16852<li>480p (640 x 480)</li>
16853<li>720p (1280 x 720)</li>
16854<li>1080p (1920 x 1080)</li>
16855</ul>
16856<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/>
16857the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
16858            </td>
16859          </tr>
16860
16861          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16862           <!-- end of entry -->
16863        
16864                
16865          <tr class="entry" id="static_android.scaler.availableRawMinDurations">
16866            <td class="entry_name
16867                entry_name_deprecated
16868             " rowspan="3">
16869              android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
16870            </td>
16871            <td class="entry_type">
16872                <span class="entry_type_name">int64</span>
16873                <span class="entry_type_container">x</span>
16874
16875                <span class="entry_type_array">
16876                  n
16877                </span>
16878              <span class="entry_type_visibility"> [system]</span>
16879
16880
16881
16882              <span class="entry_type_deprecated">[deprecated] </span>
16883
16884
16885
16886            </td> <!-- entry_type -->
16887
16888            <td class="entry_description">
16889              <p>For each available raw output size (defined in
16890<a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
16891supportable frame duration for that size.<wbr/></p>
16892            </td>
16893
16894            <td class="entry_units">
16895              Nanoseconds
16896            </td>
16897
16898            <td class="entry_range">
16899              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16900            </td>
16901
16902            <td class="entry_tags">
16903              <ul class="entry_tags">
16904                  <li><a href="#tag_BC">BC</a></li>
16905              </ul>
16906            </td>
16907
16908          </tr>
16909          <tr class="entries_header">
16910            <th class="th_details" colspan="5">Details</th>
16911          </tr>
16912          <tr class="entry_cont">
16913            <td class="entry_details" colspan="5">
16914              <p>Should correspond to the frame duration when only the raw stream is
16915active.<wbr/></p>
16916<p>When multiple streams are configured,<wbr/> the minimum
16917frame duration will be &gt;= max(individual stream min
16918durations)</p>
16919            </td>
16920          </tr>
16921
16922
16923          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16924           <!-- end of entry -->
16925        
16926                
16927          <tr class="entry" id="static_android.scaler.availableRawSizes">
16928            <td class="entry_name
16929                entry_name_deprecated
16930             " rowspan="1">
16931              android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
16932            </td>
16933            <td class="entry_type">
16934                <span class="entry_type_name">int32</span>
16935                <span class="entry_type_container">x</span>
16936
16937                <span class="entry_type_array">
16938                  n x 2
16939                </span>
16940              <span class="entry_type_visibility"> [system as size]</span>
16941
16942
16943
16944              <span class="entry_type_deprecated">[deprecated] </span>
16945
16946
16947
16948            </td> <!-- entry_type -->
16949
16950            <td class="entry_description">
16951              <p>The resolutions available for use with raw
16952sensor output streams,<wbr/> listed as width,<wbr/>
16953height</p>
16954            </td>
16955
16956            <td class="entry_units">
16957            </td>
16958
16959            <td class="entry_range">
16960              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16961            </td>
16962
16963            <td class="entry_tags">
16964            </td>
16965
16966          </tr>
16967
16968
16969          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16970           <!-- end of entry -->
16971        
16972                
16973          <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
16974            <td class="entry_name
16975             " rowspan="5">
16976              android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
16977            </td>
16978            <td class="entry_type">
16979                <span class="entry_type_name">int32</span>
16980
16981              <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
16982
16983
16984
16985
16986
16987
16988            </td> <!-- entry_type -->
16989
16990            <td class="entry_description">
16991              <p>The mapping of image formats that are supported by this
16992camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
16993            </td>
16994
16995            <td class="entry_units">
16996            </td>
16997
16998            <td class="entry_range">
16999            </td>
17000
17001            <td class="entry_tags">
17002              <ul class="entry_tags">
17003                  <li><a href="#tag_REPROC">REPROC</a></li>
17004              </ul>
17005            </td>
17006
17007          </tr>
17008          <tr class="entries_header">
17009            <th class="th_details" colspan="5">Details</th>
17010          </tr>
17011          <tr class="entry_cont">
17012            <td class="entry_details" colspan="5">
17013              <p>All camera devices with at least 1
17014<a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
17015available input format.<wbr/></p>
17016<p>The camera device will support the following map of formats,<wbr/>
17017if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
17018<table>
17019<thead>
17020<tr>
17021<th align="left">Input Format</th>
17022<th align="left">Output Format</th>
17023<th align="left">Capability</th>
17024</tr>
17025</thead>
17026<tbody>
17027<tr>
17028<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
17029<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17030<td align="left">PRIVATE_<wbr/>REPROCESSING</td>
17031</tr>
17032<tr>
17033<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
17034<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
17035<td align="left">PRIVATE_<wbr/>REPROCESSING</td>
17036</tr>
17037<tr>
17038<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
17039<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17040<td align="left">YUV_<wbr/>REPROCESSING</td>
17041</tr>
17042<tr>
17043<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
17044<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
17045<td align="left">YUV_<wbr/>REPROCESSING</td>
17046</tr>
17047</tbody>
17048</table>
17049<p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/>  A
17050PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
17051with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
17052<p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
17053or output will never hurt maximum frame rate (i.<wbr/>e.<wbr/>  <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">getOutputStallDuration(ImageFormat.<wbr/>PRIVATE,<wbr/> size)</a> is always 0),<wbr/></p>
17054<p>Attempting to configure an input stream with output streams not
17055listed as available in this map is not valid.<wbr/></p>
17056            </td>
17057          </tr>
17058
17059          <tr class="entries_header">
17060            <th class="th_details" colspan="5">HAL Implementation Details</th>
17061          </tr>
17062          <tr class="entry_cont">
17063            <td class="entry_details" colspan="5">
17064              <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
17065of the image format enumerations.<wbr/> The PRIVATE format refers to the
17066HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
17067the actual format by using the gralloc usage flags.<wbr/>
17068For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
17069processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
17070See camera3.<wbr/>h for more details.<wbr/></p>
17071<p>This value is encoded as a variable-size array-of-arrays.<wbr/>
17072The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
17073<code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
17074inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
17075<p>A code sample to read/<wbr/>write this encoding (with a device that
17076supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
17077and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
17078<pre><code>//<wbr/> reading
17079int32_<wbr/>t* contents = &amp;entry.<wbr/>i32[0];
17080for (size_<wbr/>t i = 0; i &lt; entry.<wbr/>count; ) {
17081    int32_<wbr/>t format = contents[i++];
17082    int32_<wbr/>t length = contents[i++];
17083    int32_<wbr/>t output_<wbr/>formats[length];
17084    memcpy(&amp;output_<wbr/>formats[0],<wbr/> &amp;contents[i],<wbr/>
17085           length * sizeof(int32_<wbr/>t));
17086    i += length;
17087}
17088
17089//<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
17090int32_<wbr/>t[] contents = {
17091  IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
17092  YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
17093};
17094update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &amp;contents[0],<wbr/>
17095      sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &amp;updated_<wbr/>entry);
17096</code></pre>
17097<p>If the HAL claims to support any of the capabilities listed in the
17098above details,<wbr/> then it must also support all the input-output
17099combinations listed for that capability.<wbr/> It can optionally support
17100additional formats if it so chooses.<wbr/></p>
17101            </td>
17102          </tr>
17103
17104          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17105           <!-- end of entry -->
17106        
17107                
17108          <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
17109            <td class="entry_name
17110             " rowspan="5">
17111              android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
17112            </td>
17113            <td class="entry_type">
17114                <span class="entry_type_name entry_type_name_enum">int32</span>
17115                <span class="entry_type_container">x</span>
17116
17117                <span class="entry_type_array">
17118                  n x 4
17119                </span>
17120              <span class="entry_type_visibility"> [hidden as streamConfiguration]</span>
17121
17122
17123              <span class="entry_type_hwlevel">[legacy] </span>
17124
17125
17126
17127                <ul class="entry_type_enum">
17128                  <li>
17129                    <span class="entry_type_enum_name">OUTPUT</span>
17130                  </li>
17131                  <li>
17132                    <span class="entry_type_enum_name">INPUT</span>
17133                  </li>
17134                </ul>
17135
17136            </td> <!-- entry_type -->
17137
17138            <td class="entry_description">
17139              <p>The available stream configurations that this
17140camera device supports
17141(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
17142            </td>
17143
17144            <td class="entry_units">
17145            </td>
17146
17147            <td class="entry_range">
17148            </td>
17149
17150            <td class="entry_tags">
17151            </td>
17152
17153          </tr>
17154          <tr class="entries_header">
17155            <th class="th_details" colspan="5">Details</th>
17156          </tr>
17157          <tr class="entry_cont">
17158            <td class="entry_details" colspan="5">
17159              <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
17160tuples.<wbr/></p>
17161<p>For a given use case,<wbr/> the actual maximum supported resolution
17162may be lower than what is listed here,<wbr/> depending on the destination
17163Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
17164the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
17165smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
17166can provide.<wbr/></p>
17167<p>Please reference the documentation for the image data destination to
17168check if it limits the maximum size for image data.<wbr/></p>
17169<p>Not all output formats may be supported in a configuration with
17170an input stream of a particular format.<wbr/> For more details,<wbr/> see
17171<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
17172<p>The following table describes the minimum required output stream
17173configurations based on the hardware level
17174(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
17175<table>
17176<thead>
17177<tr>
17178<th align="center">Format</th>
17179<th align="center">Size</th>
17180<th align="center">Hardware Level</th>
17181<th align="center">Notes</th>
17182</tr>
17183</thead>
17184<tbody>
17185<tr>
17186<td align="center">JPEG</td>
17187<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
17188<td align="center">Any</td>
17189<td align="center"></td>
17190</tr>
17191<tr>
17192<td align="center">JPEG</td>
17193<td align="center">1920x1080 (1080p)</td>
17194<td align="center">Any</td>
17195<td align="center">if 1080p &lt;= activeArraySize</td>
17196</tr>
17197<tr>
17198<td align="center">JPEG</td>
17199<td align="center">1280x720 (720)</td>
17200<td align="center">Any</td>
17201<td align="center">if 720p &lt;= activeArraySize</td>
17202</tr>
17203<tr>
17204<td align="center">JPEG</td>
17205<td align="center">640x480 (480p)</td>
17206<td align="center">Any</td>
17207<td align="center">if 480p &lt;= activeArraySize</td>
17208</tr>
17209<tr>
17210<td align="center">JPEG</td>
17211<td align="center">320x240 (240p)</td>
17212<td align="center">Any</td>
17213<td align="center">if 240p &lt;= activeArraySize</td>
17214</tr>
17215<tr>
17216<td align="center">YUV_<wbr/>420_<wbr/>888</td>
17217<td align="center">all output sizes available for JPEG</td>
17218<td align="center">FULL</td>
17219<td align="center"></td>
17220</tr>
17221<tr>
17222<td align="center">YUV_<wbr/>420_<wbr/>888</td>
17223<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
17224<td align="center">LIMITED</td>
17225<td align="center"></td>
17226</tr>
17227<tr>
17228<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
17229<td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
17230<td align="center">Any</td>
17231<td align="center"></td>
17232</tr>
17233</tbody>
17234</table>
17235<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
17236mandatory stream configurations on a per-capability basis.<wbr/></p>
17237            </td>
17238          </tr>
17239
17240          <tr class="entries_header">
17241            <th class="th_details" colspan="5">HAL Implementation Details</th>
17242          </tr>
17243          <tr class="entry_cont">
17244            <td class="entry_details" colspan="5">
17245              <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
17246of sensor maximum resolution for JPEG formats (regardless of hardware
17247level).<wbr/></p>
17248<p>(The following is a rewording of the above required table):</p>
17249<p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
17250<ul>
17251<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
17252(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
17253(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/>
17254it does not have to be included in the supported JPEG sizes.<wbr/></li>
17255<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
17256the dimensions being a multiple of 16.<wbr/></li>
17257</ul>
17258<p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
17259However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
17260resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
17261additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
17262if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
17263ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
172643264x2448.<wbr/></p>
17265<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/>
17266the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
17267here as output streams.<wbr/></p>
17268<p>It must also include each below resolution if it is smaller than or
17269equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
17270formats),<wbr/> as output streams:</p>
17271<ul>
17272<li>240p (320 x 240)</li>
17273<li>480p (640 x 480)</li>
17274<li>720p (1280 x 720)</li>
17275<li>1080p (1920 x 1080)</li>
17276</ul>
17277<p>For LIMITED capability devices
17278(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
17279the HAL only has to list up to the maximum video size
17280supported by the device.<wbr/></p>
17281<p>Regardless of hardware level,<wbr/> every output resolution available for
17282YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
17283<p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
17284<ul>
17285<li>availableFormats</li>
17286<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
17287</ul>
17288            </td>
17289          </tr>
17290
17291          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17292           <!-- end of entry -->
17293        
17294                
17295          <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
17296            <td class="entry_name
17297             " rowspan="3">
17298              android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
17299            </td>
17300            <td class="entry_type">
17301                <span class="entry_type_name">int64</span>
17302                <span class="entry_type_container">x</span>
17303
17304                <span class="entry_type_array">
17305                  4 x n
17306                </span>
17307              <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
17308
17309
17310              <span class="entry_type_hwlevel">[legacy] </span>
17311
17312
17313
17314
17315            </td> <!-- entry_type -->
17316
17317            <td class="entry_description">
17318              <p>This lists the minimum frame duration for each
17319format/<wbr/>size combination.<wbr/></p>
17320            </td>
17321
17322            <td class="entry_units">
17323              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
17324            </td>
17325
17326            <td class="entry_range">
17327            </td>
17328
17329            <td class="entry_tags">
17330              <ul class="entry_tags">
17331                  <li><a href="#tag_V1">V1</a></li>
17332              </ul>
17333            </td>
17334
17335          </tr>
17336          <tr class="entries_header">
17337            <th class="th_details" colspan="5">Details</th>
17338          </tr>
17339          <tr class="entry_cont">
17340            <td class="entry_details" colspan="5">
17341              <p>This should correspond to the frame duration when only that
17342stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
17343set to either OFF or FAST.<wbr/></p>
17344<p>When multiple streams are used in a request,<wbr/> the minimum frame
17345duration will be max(individual stream min durations).<wbr/></p>
17346<p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
17347is the same regardless of whether the stream is input or output.<wbr/></p>
17348<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
17349<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
17350calculating the max frame rate.<wbr/></p>
17351<p>(Keep in sync with
17352<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p>
17353            </td>
17354          </tr>
17355
17356
17357          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17358           <!-- end of entry -->
17359        
17360                
17361          <tr class="entry" id="static_android.scaler.availableStallDurations">
17362            <td class="entry_name
17363             " rowspan="5">
17364              android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
17365            </td>
17366            <td class="entry_type">
17367                <span class="entry_type_name">int64</span>
17368                <span class="entry_type_container">x</span>
17369
17370                <span class="entry_type_array">
17371                  4 x n
17372                </span>
17373              <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
17374
17375
17376              <span class="entry_type_hwlevel">[legacy] </span>
17377
17378
17379
17380
17381            </td> <!-- entry_type -->
17382
17383            <td class="entry_description">
17384              <p>This lists the maximum stall duration for each
17385output format/<wbr/>size combination.<wbr/></p>
17386            </td>
17387
17388            <td class="entry_units">
17389              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
17390            </td>
17391
17392            <td class="entry_range">
17393            </td>
17394
17395            <td class="entry_tags">
17396              <ul class="entry_tags">
17397                  <li><a href="#tag_V1">V1</a></li>
17398              </ul>
17399            </td>
17400
17401          </tr>
17402          <tr class="entries_header">
17403            <th class="th_details" colspan="5">Details</th>
17404          </tr>
17405          <tr class="entry_cont">
17406            <td class="entry_details" colspan="5">
17407              <p>A stall duration is how much extra time would get added
17408to the normal minimum frame duration for a repeating request
17409that has streams with non-zero stall.<wbr/></p>
17410<p>For example,<wbr/> consider JPEG captures which have the following
17411characteristics:</p>
17412<ul>
17413<li>JPEG streams act like processed YUV streams in requests for which
17414they are not included; in requests in which they are directly
17415referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
17416JPEG stream requires the underlying YUV data to always be ready for
17417use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
17418frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
17419<li>The JPEG processor can run concurrently to the rest of the camera
17420pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
17421</ul>
17422<p>In other words,<wbr/> using a repeating YUV request would result
17423in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
17424JPEG request is submitted periodically,<wbr/> the frame rate will stay
17425at 30 FPS (as long as we wait for the previous JPEG to return each
17426time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
17427the frame rate will drop from 30 FPS.<wbr/></p>
17428<p>In general,<wbr/> submitting a new request with a non-0 stall time
17429stream will <em>not</em> cause a frame rate drop unless there are still
17430outstanding buffers for that stream from previous requests.<wbr/></p>
17431<p>Submitting a repeating request with streams (call this <code>S</code>)
17432is the same as setting the minimum frame duration from
17433the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
17434the maximum stall duration for <code>S</code>.<wbr/></p>
17435<p>If interleaving requests with and without a stall duration,<wbr/>
17436a request will stall by the maximum of the remaining times
17437for each can-stall stream with outstanding buffers.<wbr/></p>
17438<p>This means that a stalling request will not have an exposure start
17439until the stall has completed.<wbr/></p>
17440<p>This should correspond to the stall duration when only that stream is
17441active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
17442or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
17443effectively results in an indeterminate stall duration for all
17444streams in a request (the regular stall calculation rules are
17445ignored).<wbr/></p>
17446<p>The following formats may always have a stall duration:</p>
17447<ul>
17448<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
17449<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
17450</ul>
17451<p>The following formats will never have a stall duration:</p>
17452<ul>
17453<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></li>
17454<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
17455</ul>
17456<p>All other formats may or may not have an allowed stall duration on
17457a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
17458for more details.<wbr/></p>
17459<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
17460calculating the max frame rate (absent stalls).<wbr/></p>
17461<p>(Keep up to date with
17462<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> )</p>
17463            </td>
17464          </tr>
17465
17466          <tr class="entries_header">
17467            <th class="th_details" colspan="5">HAL Implementation Details</th>
17468          </tr>
17469          <tr class="entry_cont">
17470            <td class="entry_details" colspan="5">
17471              <p>If possible,<wbr/> it is recommended that all non-JPEG formats
17472(such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
17473and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
17474            </td>
17475          </tr>
17476
17477          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17478           <!-- end of entry -->
17479        
17480                
17481          <tr class="entry" id="static_android.scaler.streamConfigurationMap">
17482            <td class="entry_name
17483             " rowspan="5">
17484              android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
17485            </td>
17486            <td class="entry_type">
17487                <span class="entry_type_name">int32</span>
17488
17489              <span class="entry_type_visibility"> [public as streamConfigurationMap]</span>
17490
17491              <span class="entry_type_synthetic">[synthetic] </span>
17492
17493              <span class="entry_type_hwlevel">[legacy] </span>
17494
17495
17496
17497
17498            </td> <!-- entry_type -->
17499
17500            <td class="entry_description">
17501              <p>The available stream configurations that this
17502camera device supports; also includes the minimum frame durations
17503and the stall durations for each format/<wbr/>size combination.<wbr/></p>
17504            </td>
17505
17506            <td class="entry_units">
17507            </td>
17508
17509            <td class="entry_range">
17510            </td>
17511
17512            <td class="entry_tags">
17513            </td>
17514
17515          </tr>
17516          <tr class="entries_header">
17517            <th class="th_details" colspan="5">Details</th>
17518          </tr>
17519          <tr class="entry_cont">
17520            <td class="entry_details" colspan="5">
17521              <p>All camera devices will support sensor maximum resolution (defined by
17522<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>
17523<p>For a given use case,<wbr/> the actual maximum supported resolution
17524may be lower than what is listed here,<wbr/> depending on the destination
17525Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
17526the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
17527smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
17528can provide.<wbr/></p>
17529<p>Please reference the documentation for the image data destination to
17530check if it limits the maximum size for image data.<wbr/></p>
17531<p>The following table describes the minimum required output stream
17532configurations based on the hardware level
17533(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
17534<table>
17535<thead>
17536<tr>
17537<th align="center">Format</th>
17538<th align="center">Size</th>
17539<th align="center">Hardware Level</th>
17540<th align="center">Notes</th>
17541</tr>
17542</thead>
17543<tbody>
17544<tr>
17545<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17546<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
17547<td align="center">Any</td>
17548<td align="center"></td>
17549</tr>
17550<tr>
17551<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17552<td align="center">1920x1080 (1080p)</td>
17553<td align="center">Any</td>
17554<td align="center">if 1080p &lt;= activeArraySize</td>
17555</tr>
17556<tr>
17557<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17558<td align="center">1280x720 (720p)</td>
17559<td align="center">Any</td>
17560<td align="center">if 720p &lt;= activeArraySize</td>
17561</tr>
17562<tr>
17563<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17564<td align="center">640x480 (480p)</td>
17565<td align="center">Any</td>
17566<td align="center">if 480p &lt;= activeArraySize</td>
17567</tr>
17568<tr>
17569<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17570<td align="center">320x240 (240p)</td>
17571<td align="center">Any</td>
17572<td align="center">if 240p &lt;= activeArraySize</td>
17573</tr>
17574<tr>
17575<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
17576<td align="center">all output sizes available for JPEG</td>
17577<td align="center">FULL</td>
17578<td align="center"></td>
17579</tr>
17580<tr>
17581<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
17582<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
17583<td align="center">LIMITED</td>
17584<td align="center"></td>
17585</tr>
17586<tr>
17587<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
17588<td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
17589<td align="center">Any</td>
17590<td align="center"></td>
17591</tr>
17592</tbody>
17593</table>
17594<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a> for additional mandatory
17595stream configurations on a per-capability basis.<wbr/></p>
17596<p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
17597<ul>
17598<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
17599(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
17600(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/>
17601it does not have to be included in the supported JPEG sizes.<wbr/></li>
17602<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
17603the dimensions being a multiple of 16.<wbr/>
17604Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
17605However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
17606resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
17607additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
17608if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
17609ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
176103264x2448.<wbr/></li>
17611</ul>
17612            </td>
17613          </tr>
17614
17615          <tr class="entries_header">
17616            <th class="th_details" colspan="5">HAL Implementation Details</th>
17617          </tr>
17618          <tr class="entry_cont">
17619            <td class="entry_details" colspan="5">
17620              <p>Do not set this property directly
17621(it is synthetic and will not be available at the HAL layer);
17622set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
17623<p>Not all output formats may be supported in a configuration with
17624an input stream of a particular format.<wbr/> For more details,<wbr/> see
17625<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
17626<p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
17627of sensor maximum resolution for JPEG formats (regardless of hardware
17628level).<wbr/></p>
17629<p>(The following is a rewording of the above required table):</p>
17630<p>The HAL must include sensor maximum resolution (defined by
17631<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
17632<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/>
17633the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
17634here as output streams.<wbr/></p>
17635<p>It must also include each below resolution if it is smaller than or
17636equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
17637formats),<wbr/> as output streams:</p>
17638<ul>
17639<li>240p (320 x 240)</li>
17640<li>480p (640 x 480)</li>
17641<li>720p (1280 x 720)</li>
17642<li>1080p (1920 x 1080)</li>
17643</ul>
17644<p>For LIMITED capability devices
17645(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
17646the HAL only has to list up to the maximum video size
17647supported by the device.<wbr/></p>
17648<p>Regardless of hardware level,<wbr/> every output resolution available for
17649YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
17650<p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
17651<ul>
17652<li>availableFormats</li>
17653<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
17654</ul>
17655            </td>
17656          </tr>
17657
17658          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17659           <!-- end of entry -->
17660        
17661                
17662          <tr class="entry" id="static_android.scaler.croppingType">
17663            <td class="entry_name
17664             " rowspan="3">
17665              android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
17666            </td>
17667            <td class="entry_type">
17668                <span class="entry_type_name entry_type_name_enum">byte</span>
17669
17670              <span class="entry_type_visibility"> [public]</span>
17671
17672
17673              <span class="entry_type_hwlevel">[legacy] </span>
17674
17675
17676
17677                <ul class="entry_type_enum">
17678                  <li>
17679                    <span class="entry_type_enum_name">CENTER_ONLY</span>
17680                    <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
17681                  </li>
17682                  <li>
17683                    <span class="entry_type_enum_name">FREEFORM</span>
17684                    <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
17685                  </li>
17686                </ul>
17687
17688            </td> <!-- entry_type -->
17689
17690            <td class="entry_description">
17691              <p>The crop type that this camera device supports.<wbr/></p>
17692            </td>
17693
17694            <td class="entry_units">
17695            </td>
17696
17697            <td class="entry_range">
17698            </td>
17699
17700            <td class="entry_tags">
17701            </td>
17702
17703          </tr>
17704          <tr class="entries_header">
17705            <th class="th_details" colspan="5">Details</th>
17706          </tr>
17707          <tr class="entry_cont">
17708            <td class="entry_details" colspan="5">
17709              <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
17710device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
17711crop 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>)
17712and keep the crop region width and height unchanged.<wbr/> The camera device will return the
17713final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
17714<p>Camera devices that support FREEFORM cropping will support any crop region that
17715is inside of the active array.<wbr/> The camera device will apply the same crop region and
17716return 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>
17717<p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
17718            </td>
17719          </tr>
17720
17721
17722          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17723           <!-- end of entry -->
17724        
17725        
17726
17727      <!-- end of kind -->
17728      </tbody>
17729      <tr><td colspan="6" class="kind">dynamic</td></tr>
17730
17731      <thead class="entries_header">
17732        <tr>
17733          <th class="th_name">Property Name</th>
17734          <th class="th_type">Type</th>
17735          <th class="th_description">Description</th>
17736          <th class="th_units">Units</th>
17737          <th class="th_range">Range</th>
17738          <th class="th_tags">Tags</th>
17739        </tr>
17740      </thead>
17741
17742      <tbody>
17743
17744        
17745
17746        
17747
17748        
17749
17750        
17751
17752                
17753          <tr class="entry" id="dynamic_android.scaler.cropRegion">
17754            <td class="entry_name
17755             " rowspan="5">
17756              android.<wbr/>scaler.<wbr/>crop<wbr/>Region
17757            </td>
17758            <td class="entry_type">
17759                <span class="entry_type_name">int32</span>
17760                <span class="entry_type_container">x</span>
17761
17762                <span class="entry_type_array">
17763                  4
17764                </span>
17765              <span class="entry_type_visibility"> [public as rectangle]</span>
17766
17767
17768              <span class="entry_type_hwlevel">[legacy] </span>
17769
17770
17771
17772
17773            </td> <!-- entry_type -->
17774
17775            <td class="entry_description">
17776              <p>The desired region of the sensor to read out for this capture.<wbr/></p>
17777            </td>
17778
17779            <td class="entry_units">
17780              Pixel coordinates relative to
17781          android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
17782            </td>
17783
17784            <td class="entry_range">
17785            </td>
17786
17787            <td class="entry_tags">
17788              <ul class="entry_tags">
17789                  <li><a href="#tag_BC">BC</a></li>
17790              </ul>
17791            </td>
17792
17793          </tr>
17794          <tr class="entries_header">
17795            <th class="th_details" colspan="5">Details</th>
17796          </tr>
17797          <tr class="entry_cont">
17798            <td class="entry_details" colspan="5">
17799              <p>This control can be used to implement digital zoom.<wbr/></p>
17800<p>The crop region coordinate system is based off
17801<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
17802top-left corner of the sensor active array.<wbr/></p>
17803<p>Output streams use this rectangle to produce their output,<wbr/>
17804cropping to a smaller region if necessary to maintain the
17805stream's aspect ratio,<wbr/> then scaling the sensor input to
17806match the output's configured resolution.<wbr/></p>
17807<p>The crop region is applied after the RAW to other color
17808space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
17809(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
17810croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
17811<p>For non-raw streams,<wbr/> any additional per-stream cropping will
17812be done to maximize the final pixel area of the stream.<wbr/></p>
17813<p>For example,<wbr/> if the crop region is set to a 4:3 aspect
17814ratio,<wbr/> then 4:3 streams will use the exact crop
17815region.<wbr/> 16:9 streams will further crop vertically
17816(letterbox).<wbr/></p>
17817<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
17818outputs will crop horizontally (pillarbox),<wbr/> and 16:9
17819streams will match exactly.<wbr/> These additional crops will
17820be centered within the crop region.<wbr/></p>
17821<p>The width and height of the crop region cannot
17822be set to be smaller than
17823<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
17824<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>
17825<p>The camera device may adjust the crop region to account
17826for rounding and other hardware requirements; the final
17827crop region used will be included in the output capture
17828result.<wbr/></p>
17829            </td>
17830          </tr>
17831
17832          <tr class="entries_header">
17833            <th class="th_details" colspan="5">HAL Implementation Details</th>
17834          </tr>
17835          <tr class="entry_cont">
17836            <td class="entry_details" colspan="5">
17837              <p>The output streams must maintain square pixels at all
17838times,<wbr/> no matter what the relative aspect ratios of the
17839crop region and the stream are.<wbr/>  Negative values for
17840corner are allowed for raw output if full pixel array is
17841larger than active pixel array.<wbr/> Width and height may be
17842rounded to nearest larger supportable width,<wbr/> especially
17843for raw output,<wbr/> where only a few fixed scales may be
17844possible.<wbr/></p>
17845<p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
17846size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
17847<ul>
17848<li>
17849<p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
17850array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
17851<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> to the sensor cropped pixel area size in this way:</p>
17852<ol>
17853<li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
17854cropped pixel area by (tx,<wbr/> ty),<wbr/>
17855where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
17856and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
17857(sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
17858<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
17859<li>Scale the width and height of requested cropRegion with scaling factor of
17860sensor<wbr/>Crop.<wbr/>width/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>width and sensor<wbr/>Crop.<wbr/>height/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>height
17861respectively.<wbr/>
17862Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
17863with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
17864follow the general cropping rule for this new cropRegion and effective active
17865array size.<wbr/></li>
17866</ol>
17867</li>
17868<li>
17869<p>The HAL must report the cropRegion with regard to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>
17870The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
17871The reported cropRegion may be slightly different with the requested cropRegion since
17872the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
17873hardware limitations.<wbr/></p>
17874</li>
17875</ul>
17876<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
17877            </td>
17878          </tr>
17879
17880          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17881           <!-- end of entry -->
17882        
17883        
17884
17885      <!-- end of kind -->
17886      </tbody>
17887
17888  <!-- end of section -->
17889  <tr><td colspan="6" id="section_sensor" class="section">sensor</td></tr>
17890
17891
17892      <tr><td colspan="6" class="kind">controls</td></tr>
17893
17894      <thead class="entries_header">
17895        <tr>
17896          <th class="th_name">Property Name</th>
17897          <th class="th_type">Type</th>
17898          <th class="th_description">Description</th>
17899          <th class="th_units">Units</th>
17900          <th class="th_range">Range</th>
17901          <th class="th_tags">Tags</th>
17902        </tr>
17903      </thead>
17904
17905      <tbody>
17906
17907        
17908
17909        
17910
17911        
17912
17913        
17914
17915                
17916          <tr class="entry" id="controls_android.sensor.exposureTime">
17917            <td class="entry_name
17918             " rowspan="3">
17919              android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
17920            </td>
17921            <td class="entry_type">
17922                <span class="entry_type_name">int64</span>
17923
17924              <span class="entry_type_visibility"> [public]</span>
17925
17926
17927              <span class="entry_type_hwlevel">[full] </span>
17928
17929
17930
17931
17932            </td> <!-- entry_type -->
17933
17934            <td class="entry_description">
17935              <p>Duration each pixel is exposed to
17936light.<wbr/></p>
17937            </td>
17938
17939            <td class="entry_units">
17940              Nanoseconds
17941            </td>
17942
17943            <td class="entry_range">
17944              <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
17945            </td>
17946
17947            <td class="entry_tags">
17948              <ul class="entry_tags">
17949                  <li><a href="#tag_V1">V1</a></li>
17950              </ul>
17951            </td>
17952
17953          </tr>
17954          <tr class="entries_header">
17955            <th class="th_details" colspan="5">Details</th>
17956          </tr>
17957          <tr class="entry_cont">
17958            <td class="entry_details" colspan="5">
17959              <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
17960duration exposed to the nearest possible value (rather than expose longer).<wbr/>
17961The final exposure time used will be available in the output capture result.<wbr/></p>
17962<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
17963OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
17964            </td>
17965          </tr>
17966
17967
17968          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17969           <!-- end of entry -->
17970        
17971                
17972          <tr class="entry" id="controls_android.sensor.frameDuration">
17973            <td class="entry_name
17974             " rowspan="5">
17975              android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
17976            </td>
17977            <td class="entry_type">
17978                <span class="entry_type_name">int64</span>
17979
17980              <span class="entry_type_visibility"> [public]</span>
17981
17982
17983              <span class="entry_type_hwlevel">[full] </span>
17984
17985
17986
17987
17988            </td> <!-- entry_type -->
17989
17990            <td class="entry_description">
17991              <p>Duration from start of frame exposure to
17992start of next frame exposure.<wbr/></p>
17993            </td>
17994
17995            <td class="entry_units">
17996              Nanoseconds
17997            </td>
17998
17999            <td class="entry_range">
18000              <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
18001<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
18002is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
18003            </td>
18004
18005            <td class="entry_tags">
18006              <ul class="entry_tags">
18007                  <li><a href="#tag_V1">V1</a></li>
18008              </ul>
18009            </td>
18010
18011          </tr>
18012          <tr class="entries_header">
18013            <th class="th_details" colspan="5">Details</th>
18014          </tr>
18015          <tr class="entry_cont">
18016            <td class="entry_details" colspan="5">
18017              <p>The maximum frame rate that can be supported by a camera subsystem is
18018a function of many factors:</p>
18019<ul>
18020<li>Requested resolutions of output image streams</li>
18021<li>Availability of binning /<wbr/> skipping modes on the imager</li>
18022<li>The bandwidth of the imager interface</li>
18023<li>The bandwidth of the various ISP processing blocks</li>
18024</ul>
18025<p>Since these factors can vary greatly between different ISPs and
18026sensors,<wbr/> the camera abstraction tries to represent the bandwidth
18027restrictions with as simple a model as possible.<wbr/></p>
18028<p>The model presented has the following characteristics:</p>
18029<ul>
18030<li>The image sensor is always configured to output the smallest
18031resolution possible given the application's requested output stream
18032sizes.<wbr/>  The smallest resolution is defined as being at least as large
18033as the largest requested output stream size; the camera pipeline must
18034never digitally upsample sensor data when the crop region covers the
18035whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
18036resolutions are configured,<wbr/> the sensor can provide a higher frame
18037rate.<wbr/></li>
18038<li>Since any request may use any or all the currently configured
18039output streams,<wbr/> the sensor and ISP must be configured to support
18040scaling a single capture to all the streams at the same time.<wbr/>  This
18041means the camera pipeline must be ready to produce the largest
18042requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
18043frame rate of a given configured stream set is governed only by the
18044largest requested stream resolution.<wbr/></li>
18045<li>Using more than one output stream in a request does not affect the
18046frame duration.<wbr/></li>
18047<li>Certain format-streams may need to do additional background processing
18048before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
18049can run concurrently to the rest of the camera pipeline,<wbr/> but
18050cannot process more than 1 capture at a time.<wbr/></li>
18051</ul>
18052<p>The necessary information for the application,<wbr/> given the model above,<wbr/>
18053is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using
18054<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
18055These are used to determine the maximum frame rate /<wbr/> minimum frame
18056duration that is possible for a given stream configuration.<wbr/></p>
18057<p>Specifically,<wbr/> the application can use the following rules to
18058determine the minimum frame duration it can request from the camera
18059device:</p>
18060<ol>
18061<li>Let the set of currently configured input/<wbr/>output streams
18062be called <code>S</code>.<wbr/></li>
18063<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking
18064it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
18065(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be
18066called <code>F</code>.<wbr/></li>
18067<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
18068for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
18069used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
18070</ol>
18071<p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>
18072using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code>
18073determines the steady state frame rate that the application will get
18074if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of
18075request be called <code>Rsimple</code>.<wbr/></p>
18076<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
18077by a single capture of a new request <code>Rstall</code> (which has at least
18078one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
18079same minimum frame duration this will not cause a frame rate loss
18080if all buffers from the previous <code>Rstall</code> have already been
18081delivered.<wbr/></p>
18082<p>For more details about stalling,<wbr/> see
18083<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
18084<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
18085OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
18086            </td>
18087          </tr>
18088
18089          <tr class="entries_header">
18090            <th class="th_details" colspan="5">HAL Implementation Details</th>
18091          </tr>
18092          <tr class="entry_cont">
18093            <td class="entry_details" colspan="5">
18094              <p>For more details about stalling,<wbr/> see
18095<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
18096            </td>
18097          </tr>
18098
18099          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18100           <!-- end of entry -->
18101        
18102                
18103          <tr class="entry" id="controls_android.sensor.sensitivity">
18104            <td class="entry_name
18105             " rowspan="5">
18106              android.<wbr/>sensor.<wbr/>sensitivity
18107            </td>
18108            <td class="entry_type">
18109                <span class="entry_type_name">int32</span>
18110
18111              <span class="entry_type_visibility"> [public]</span>
18112
18113
18114              <span class="entry_type_hwlevel">[full] </span>
18115
18116
18117
18118
18119            </td> <!-- entry_type -->
18120
18121            <td class="entry_description">
18122              <p>The amount of gain applied to sensor data
18123before processing.<wbr/></p>
18124            </td>
18125
18126            <td class="entry_units">
18127              ISO arithmetic units
18128            </td>
18129
18130            <td class="entry_range">
18131              <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
18132            </td>
18133
18134            <td class="entry_tags">
18135              <ul class="entry_tags">
18136                  <li><a href="#tag_V1">V1</a></li>
18137              </ul>
18138            </td>
18139
18140          </tr>
18141          <tr class="entries_header">
18142            <th class="th_details" colspan="5">Details</th>
18143          </tr>
18144          <tr class="entry_cont">
18145            <td class="entry_details" colspan="5">
18146              <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
18147as defined in ISO 12232:2006.<wbr/></p>
18148<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
18149if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
18150is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
18151<p>If the camera device cannot apply the exact sensitivity
18152requested,<wbr/> it will reduce the gain to the nearest supported
18153value.<wbr/> The final sensitivity used will be available in the
18154output capture result.<wbr/></p>
18155            </td>
18156          </tr>
18157
18158          <tr class="entries_header">
18159            <th class="th_details" colspan="5">HAL Implementation Details</th>
18160          </tr>
18161          <tr class="entry_cont">
18162            <td class="entry_details" colspan="5">
18163              <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
18164            </td>
18165          </tr>
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="controls_android.sensor.testPatternData">
18172            <td class="entry_name
18173             " rowspan="5">
18174              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
18175            </td>
18176            <td class="entry_type">
18177                <span class="entry_type_name">int32</span>
18178                <span class="entry_type_container">x</span>
18179
18180                <span class="entry_type_array">
18181                  4
18182                </span>
18183              <span class="entry_type_visibility"> [public]</span>
18184
18185
18186
18187
18188
18189
18190            </td> <!-- entry_type -->
18191
18192            <td class="entry_description">
18193              <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
18194when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
18195            </td>
18196
18197            <td class="entry_units">
18198            </td>
18199
18200            <td class="entry_range">
18201            </td>
18202
18203            <td class="entry_tags">
18204            </td>
18205
18206          </tr>
18207          <tr class="entries_header">
18208            <th class="th_details" colspan="5">Details</th>
18209          </tr>
18210          <tr class="entry_cont">
18211            <td class="entry_details" colspan="5">
18212              <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
18213The camera device then uses the most significant X bits
18214that correspond to how many bits are in its Bayer raw sensor
18215output.<wbr/></p>
18216<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
1821710 most significant bits from each color channel.<wbr/></p>
18218            </td>
18219          </tr>
18220
18221          <tr class="entries_header">
18222            <th class="th_details" colspan="5">HAL Implementation Details</th>
18223          </tr>
18224          <tr class="entry_cont">
18225            <td class="entry_details" colspan="5">
18226              
18227            </td>
18228          </tr>
18229
18230          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18231           <!-- end of entry -->
18232        
18233                
18234          <tr class="entry" id="controls_android.sensor.testPatternMode">
18235            <td class="entry_name
18236             " rowspan="5">
18237              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
18238            </td>
18239            <td class="entry_type">
18240                <span class="entry_type_name entry_type_name_enum">int32</span>
18241
18242              <span class="entry_type_visibility"> [public]</span>
18243
18244
18245
18246
18247
18248                <ul class="entry_type_enum">
18249                  <li>
18250                    <span class="entry_type_enum_name">OFF</span>
18251                    <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
18252device returns captures from the image sensor.<wbr/></p>
18253<p>This is the default if the key is not set.<wbr/></p></span>
18254                  </li>
18255                  <li>
18256                    <span class="entry_type_enum_name">SOLID_COLOR</span>
18257                    <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
18258respective color channel provided in
18259<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
18260<p>For example:</p>
18261<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
18262</code></pre>
18263<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
18264<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
18265</code></pre>
18266<p>All red pixels are 100% red.<wbr/> Only the odd green pixels
18267are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
18268                  </li>
18269                  <li>
18270                    <span class="entry_type_enum_name">COLOR_BARS</span>
18271                    <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
18272<p>The vertical bars (left-to-right) are as follows:</p>
18273<ul>
18274<li>100% white</li>
18275<li>yellow</li>
18276<li>cyan</li>
18277<li>green</li>
18278<li>magenta</li>
18279<li>red</li>
18280<li>blue</li>
18281<li>black</li>
18282</ul>
18283<p>In general the image would look like the following:</p>
18284<pre><code>W Y C G M R B K
18285W Y C G M R B K
18286W Y C G M R B K
18287W Y C G M R B K
18288W Y C G M R B K
18289.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
18290.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
18291.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
18292
18293(B = Blue,<wbr/> K = Black)
18294</code></pre>
18295<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
18296When this is not possible,<wbr/> the bar size should be rounded
18297down to the nearest integer and the pattern can repeat
18298on the right side.<wbr/></p>
18299<p>Each bar's height must always take up the full sensor
18300pixel array height.<wbr/></p>
18301<p>Each pixel in this test pattern must be set to either
183020% intensity or 100% intensity.<wbr/></p></span>
18303                  </li>
18304                  <li>
18305                    <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
18306                    <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
18307each bar should start at its specified color at the top,<wbr/>
18308and fade to gray at the bottom.<wbr/></p>
18309<p>Furthermore each bar is further subdivided into a left and
18310right half.<wbr/> The left half should have a smooth gradient,<wbr/>
18311and the right half should have a quantized gradient.<wbr/></p>
18312<p>In particular,<wbr/> the right half's should consist of blocks of the
18313same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
18314<p>The least significant bits in the quantized gradient should
18315be copied from the most significant bits of the smooth gradient.<wbr/></p>
18316<p>The height of each bar should always be a multiple of 128.<wbr/>
18317When this is not the case,<wbr/> the pattern should repeat at the bottom
18318of the image.<wbr/></p></span>
18319                  </li>
18320                  <li>
18321                    <span class="entry_type_enum_name">PN9</span>
18322                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
18323generated from a PN9 512-bit sequence (typically implemented
18324in hardware with a linear feedback shift register).<wbr/></p>
18325<p>The generator should be reset at the beginning of each frame,<wbr/>
18326and thus each subsequent raw frame with this test pattern should
18327be exactly the same as the last.<wbr/></p></span>
18328                  </li>
18329                  <li>
18330                    <span class="entry_type_enum_name">CUSTOM1</span>
18331                    <span class="entry_type_enum_value">256</span>
18332                    <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
18333available only on this camera device are at least this numeric
18334value.<wbr/></p>
18335<p>All of the custom test patterns will be static
18336(that is the raw image must not vary from frame to frame).<wbr/></p></span>
18337                  </li>
18338                </ul>
18339
18340            </td> <!-- entry_type -->
18341
18342            <td class="entry_description">
18343              <p>When enabled,<wbr/> the sensor sends a test pattern instead of
18344doing a real exposure from the camera.<wbr/></p>
18345            </td>
18346
18347            <td class="entry_units">
18348            </td>
18349
18350            <td class="entry_range">
18351              <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
18352            </td>
18353
18354            <td class="entry_tags">
18355            </td>
18356
18357          </tr>
18358          <tr class="entries_header">
18359            <th class="th_details" colspan="5">Details</th>
18360          </tr>
18361          <tr class="entry_cont">
18362            <td class="entry_details" colspan="5">
18363              <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
18364by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
18365work as normal.<wbr/></p>
18366<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
18367occur (and that the test pattern remain unmodified,<wbr/> since the flash
18368would not actually affect it).<wbr/></p>
18369<p>Defaults to OFF.<wbr/></p>
18370            </td>
18371          </tr>
18372
18373          <tr class="entries_header">
18374            <th class="th_details" colspan="5">HAL Implementation Details</th>
18375          </tr>
18376          <tr class="entry_cont">
18377            <td class="entry_details" colspan="5">
18378              <p>All test patterns are specified in the Bayer domain.<wbr/></p>
18379<p>The HAL may choose to substitute test patterns from the sensor
18380with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
18381indistinguishable to the ISP whether the data came from the
18382sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
18383            </td>
18384          </tr>
18385
18386          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18387           <!-- end of entry -->
18388        
18389        
18390
18391      <!-- end of kind -->
18392      </tbody>
18393      <tr><td colspan="6" class="kind">static</td></tr>
18394
18395      <thead class="entries_header">
18396        <tr>
18397          <th class="th_name">Property Name</th>
18398          <th class="th_type">Type</th>
18399          <th class="th_description">Description</th>
18400          <th class="th_units">Units</th>
18401          <th class="th_range">Range</th>
18402          <th class="th_tags">Tags</th>
18403        </tr>
18404      </thead>
18405
18406      <tbody>
18407
18408        
18409
18410        
18411
18412        
18413
18414        
18415                
18416            
18417
18418                
18419          <tr class="entry" id="static_android.sensor.info.activeArraySize">
18420            <td class="entry_name
18421             " rowspan="5">
18422              android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
18423            </td>
18424            <td class="entry_type">
18425                <span class="entry_type_name">int32</span>
18426                <span class="entry_type_container">x</span>
18427
18428                <span class="entry_type_array">
18429                  4
18430                </span>
18431              <span class="entry_type_visibility"> [public as rectangle]</span>
18432
18433
18434              <span class="entry_type_hwlevel">[legacy] </span>
18435
18436
18437                <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
18438
18439
18440            </td> <!-- entry_type -->
18441
18442            <td class="entry_description">
18443              <p>The area of the image sensor which corresponds to active pixels after any geometric
18444distortion correction has been applied.<wbr/></p>
18445            </td>
18446
18447            <td class="entry_units">
18448              Pixel coordinates on the image sensor
18449            </td>
18450
18451            <td class="entry_range">
18452            </td>
18453
18454            <td class="entry_tags">
18455              <ul class="entry_tags">
18456                  <li><a href="#tag_RAW">RAW</a></li>
18457              </ul>
18458            </td>
18459
18460          </tr>
18461          <tr class="entries_header">
18462            <th class="th_details" colspan="5">Details</th>
18463          </tr>
18464          <tr class="entry_cont">
18465            <td class="entry_details" colspan="5">
18466              <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
18467the region that actually receives light from the scene) after any geometric correction
18468has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
18469image output formats aside from the raw formats.<wbr/></p>
18470<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
18471the full pixel array,<wbr/> and the size of the full pixel array is given by
18472<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
18473<p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
18474<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>,<wbr/> is defined relative to the active array rectangle given in
18475this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
18476<p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
18477include black calibration pixels or other inactive regions,<wbr/> and geometric correction
18478resulting in scaling or cropping may have been applied.<wbr/></p>
18479            </td>
18480          </tr>
18481
18482          <tr class="entries_header">
18483            <th class="th_details" colspan="5">HAL Implementation Details</th>
18484          </tr>
18485          <tr class="entry_cont">
18486            <td class="entry_details" colspan="5">
18487              <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
18488&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
18489The <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>
18490            </td>
18491          </tr>
18492
18493          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18494           <!-- end of entry -->
18495        
18496                
18497          <tr class="entry" id="static_android.sensor.info.sensitivityRange">
18498            <td class="entry_name
18499             " rowspan="3">
18500              android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
18501            </td>
18502            <td class="entry_type">
18503                <span class="entry_type_name">int32</span>
18504                <span class="entry_type_container">x</span>
18505
18506                <span class="entry_type_array">
18507                  2
18508                </span>
18509              <span class="entry_type_visibility"> [public as rangeInt]</span>
18510
18511
18512              <span class="entry_type_hwlevel">[full] </span>
18513
18514
18515                <div class="entry_type_notes">Range of supported sensitivities</div>
18516
18517
18518            </td> <!-- entry_type -->
18519
18520            <td class="entry_description">
18521              <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
18522camera device.<wbr/></p>
18523            </td>
18524
18525            <td class="entry_units">
18526            </td>
18527
18528            <td class="entry_range">
18529              <p>Min &lt;= 100,<wbr/> Max &gt;= 800</p>
18530            </td>
18531
18532            <td class="entry_tags">
18533              <ul class="entry_tags">
18534                  <li><a href="#tag_BC">BC</a></li>
18535                  <li><a href="#tag_V1">V1</a></li>
18536              </ul>
18537            </td>
18538
18539          </tr>
18540          <tr class="entries_header">
18541            <th class="th_details" colspan="5">Details</th>
18542          </tr>
18543          <tr class="entry_cont">
18544            <td class="entry_details" colspan="5">
18545              <p>The values are the standard ISO sensitivity values,<wbr/>
18546as defined in ISO 12232:2006.<wbr/></p>
18547            </td>
18548          </tr>
18549
18550
18551          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18552           <!-- end of entry -->
18553        
18554                
18555          <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
18556            <td class="entry_name
18557             " rowspan="1">
18558              android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
18559            </td>
18560            <td class="entry_type">
18561                <span class="entry_type_name entry_type_name_enum">byte</span>
18562
18563              <span class="entry_type_visibility"> [public]</span>
18564
18565
18566              <span class="entry_type_hwlevel">[full] </span>
18567
18568
18569
18570                <ul class="entry_type_enum">
18571                  <li>
18572                    <span class="entry_type_enum_name">RGGB</span>
18573                  </li>
18574                  <li>
18575                    <span class="entry_type_enum_name">GRBG</span>
18576                  </li>
18577                  <li>
18578                    <span class="entry_type_enum_name">GBRG</span>
18579                  </li>
18580                  <li>
18581                    <span class="entry_type_enum_name">BGGR</span>
18582                  </li>
18583                  <li>
18584                    <span class="entry_type_enum_name">RGB</span>
18585                    <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
18586values for each pixel,<wbr/> instead of just 1 16-bit value
18587per pixel.<wbr/></p></span>
18588                  </li>
18589                </ul>
18590
18591            </td> <!-- entry_type -->
18592
18593            <td class="entry_description">
18594              <p>The arrangement of color filters on sensor;
18595represents the colors in the top-left 2x2 section of
18596the sensor,<wbr/> in reading order.<wbr/></p>
18597            </td>
18598
18599            <td class="entry_units">
18600            </td>
18601
18602            <td class="entry_range">
18603            </td>
18604
18605            <td class="entry_tags">
18606              <ul class="entry_tags">
18607                  <li><a href="#tag_RAW">RAW</a></li>
18608              </ul>
18609            </td>
18610
18611          </tr>
18612
18613
18614          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18615           <!-- end of entry -->
18616        
18617                
18618          <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
18619            <td class="entry_name
18620             " rowspan="3">
18621              android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
18622            </td>
18623            <td class="entry_type">
18624                <span class="entry_type_name">int64</span>
18625                <span class="entry_type_container">x</span>
18626
18627                <span class="entry_type_array">
18628                  2
18629                </span>
18630              <span class="entry_type_visibility"> [public as rangeLong]</span>
18631
18632
18633              <span class="entry_type_hwlevel">[full] </span>
18634
18635
18636                <div class="entry_type_notes">nanoseconds</div>
18637
18638
18639            </td> <!-- entry_type -->
18640
18641            <td class="entry_description">
18642              <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
18643by this camera device.<wbr/></p>
18644            </td>
18645
18646            <td class="entry_units">
18647              Nanoseconds
18648            </td>
18649
18650            <td class="entry_range">
18651              <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
18652capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
18653the maximum exposure time will be greater than 100ms.<wbr/></p>
18654            </td>
18655
18656            <td class="entry_tags">
18657              <ul class="entry_tags">
18658                  <li><a href="#tag_V1">V1</a></li>
18659              </ul>
18660            </td>
18661
18662          </tr>
18663
18664          <tr class="entries_header">
18665            <th class="th_details" colspan="5">HAL Implementation Details</th>
18666          </tr>
18667          <tr class="entry_cont">
18668            <td class="entry_details" colspan="5">
18669              <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
18670The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
18671100ms.<wbr/></p>
18672            </td>
18673          </tr>
18674
18675          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18676           <!-- end of entry -->
18677        
18678                
18679          <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
18680            <td class="entry_name
18681             " rowspan="5">
18682              android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
18683            </td>
18684            <td class="entry_type">
18685                <span class="entry_type_name">int64</span>
18686
18687              <span class="entry_type_visibility"> [public]</span>
18688
18689
18690              <span class="entry_type_hwlevel">[full] </span>
18691
18692
18693
18694
18695            </td> <!-- entry_type -->
18696
18697            <td class="entry_description">
18698              <p>The maximum possible frame duration (minimum frame rate) for
18699<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
18700            </td>
18701
18702            <td class="entry_units">
18703              Nanoseconds
18704            </td>
18705
18706            <td class="entry_range">
18707              <p>For FULL capability devices
18708(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
18709            </td>
18710
18711            <td class="entry_tags">
18712              <ul class="entry_tags">
18713                  <li><a href="#tag_V1">V1</a></li>
18714              </ul>
18715            </td>
18716
18717          </tr>
18718          <tr class="entries_header">
18719            <th class="th_details" colspan="5">Details</th>
18720          </tr>
18721          <tr class="entry_cont">
18722            <td class="entry_details" colspan="5">
18723              <p>Attempting to use frame durations beyond the maximum will result in the frame
18724duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
18725durations.<wbr/></p>
18726<p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
18727for the minimum frame duration values.<wbr/></p>
18728            </td>
18729          </tr>
18730
18731          <tr class="entries_header">
18732            <th class="th_details" colspan="5">HAL Implementation Details</th>
18733          </tr>
18734          <tr class="entry_cont">
18735            <td class="entry_details" colspan="5">
18736              <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
18737The maximum of the range SHOULD be at least
187381 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
18739<p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
18740equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
18741value (since exposure time overrides frame duration).<wbr/></p>
18742<p>Available minimum frame durations for JPEG must be no greater
18743than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
18744minimum frame durations (for that respective size).<wbr/></p>
18745<p>Since JPEG processing is considered offline and can take longer than
18746a single uncompressed capture,<wbr/> refer to
18747<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
18748for details about encoding this scenario.<wbr/></p>
18749            </td>
18750          </tr>
18751
18752          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18753           <!-- end of entry -->
18754        
18755                
18756          <tr class="entry" id="static_android.sensor.info.physicalSize">
18757            <td class="entry_name
18758             " rowspan="5">
18759              android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
18760            </td>
18761            <td class="entry_type">
18762                <span class="entry_type_name">float</span>
18763                <span class="entry_type_container">x</span>
18764
18765                <span class="entry_type_array">
18766                  2
18767                </span>
18768              <span class="entry_type_visibility"> [public as sizeF]</span>
18769
18770
18771              <span class="entry_type_hwlevel">[legacy] </span>
18772
18773
18774                <div class="entry_type_notes">width x height</div>
18775
18776
18777            </td> <!-- entry_type -->
18778
18779            <td class="entry_description">
18780              <p>The physical dimensions of the full pixel
18781array.<wbr/></p>
18782            </td>
18783
18784            <td class="entry_units">
18785              Millimeters
18786            </td>
18787
18788            <td class="entry_range">
18789            </td>
18790
18791            <td class="entry_tags">
18792              <ul class="entry_tags">
18793                  <li><a href="#tag_V1">V1</a></li>
18794                  <li><a href="#tag_BC">BC</a></li>
18795              </ul>
18796            </td>
18797
18798          </tr>
18799          <tr class="entries_header">
18800            <th class="th_details" colspan="5">Details</th>
18801          </tr>
18802          <tr class="entry_cont">
18803            <td class="entry_details" colspan="5">
18804              <p>This is the physical size of the sensor pixel
18805array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
18806            </td>
18807          </tr>
18808
18809          <tr class="entries_header">
18810            <th class="th_details" colspan="5">HAL Implementation Details</th>
18811          </tr>
18812          <tr class="entry_cont">
18813            <td class="entry_details" colspan="5">
18814              <p>Needed for FOV calculation for old API</p>
18815            </td>
18816          </tr>
18817
18818          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18819           <!-- end of entry -->
18820        
18821                
18822          <tr class="entry" id="static_android.sensor.info.pixelArraySize">
18823            <td class="entry_name
18824             " rowspan="3">
18825              android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
18826            </td>
18827            <td class="entry_type">
18828                <span class="entry_type_name">int32</span>
18829                <span class="entry_type_container">x</span>
18830
18831                <span class="entry_type_array">
18832                  2
18833                </span>
18834              <span class="entry_type_visibility"> [public as size]</span>
18835
18836
18837              <span class="entry_type_hwlevel">[legacy] </span>
18838
18839
18840
18841
18842            </td> <!-- entry_type -->
18843
18844            <td class="entry_description">
18845              <p>Dimensions of the full pixel array,<wbr/> possibly
18846including black calibration pixels.<wbr/></p>
18847            </td>
18848
18849            <td class="entry_units">
18850              Pixels
18851            </td>
18852
18853            <td class="entry_range">
18854            </td>
18855
18856            <td class="entry_tags">
18857              <ul class="entry_tags">
18858                  <li><a href="#tag_RAW">RAW</a></li>
18859                  <li><a href="#tag_BC">BC</a></li>
18860              </ul>
18861            </td>
18862
18863          </tr>
18864          <tr class="entries_header">
18865            <th class="th_details" colspan="5">Details</th>
18866          </tr>
18867          <tr class="entry_cont">
18868            <td class="entry_details" colspan="5">
18869              <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
18870<a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a> area.<wbr/>  This represents the full pixel dimensions of
18871the raw buffers produced by this sensor.<wbr/></p>
18872<p>If a camera device supports raw sensor formats,<wbr/> either this or
18873<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> is the maximum dimensions for the raw
18874output formats listed in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> (this depends on
18875whether or not the image sensor returns buffers containing pixels that are not
18876part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
18877<p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
18878or be otherwise inactive.<wbr/>  The <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> key
18879defines the rectangle of active pixels that will be included in processed image
18880formats.<wbr/></p>
18881            </td>
18882          </tr>
18883
18884
18885          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18886           <!-- end of entry -->
18887        
18888                
18889          <tr class="entry" id="static_android.sensor.info.whiteLevel">
18890            <td class="entry_name
18891             " rowspan="5">
18892              android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
18893            </td>
18894            <td class="entry_type">
18895                <span class="entry_type_name">int32</span>
18896
18897              <span class="entry_type_visibility"> [public]</span>
18898
18899
18900
18901
18902
18903
18904            </td> <!-- entry_type -->
18905
18906            <td class="entry_description">
18907              <p>Maximum raw value output by sensor.<wbr/></p>
18908            </td>
18909
18910            <td class="entry_units">
18911            </td>
18912
18913            <td class="entry_range">
18914              <p>&gt; 255 (8-bit output)</p>
18915            </td>
18916
18917            <td class="entry_tags">
18918              <ul class="entry_tags">
18919                  <li><a href="#tag_RAW">RAW</a></li>
18920              </ul>
18921            </td>
18922
18923          </tr>
18924          <tr class="entries_header">
18925            <th class="th_details" colspan="5">Details</th>
18926          </tr>
18927          <tr class="entry_cont">
18928            <td class="entry_details" colspan="5">
18929              <p>This specifies the fully-saturated encoding level for the raw
18930sample values from the sensor.<wbr/>  This is typically caused by the
18931sensor becoming highly non-linear or clipping.<wbr/> The minimum for
18932each channel is specified by the offset in the
18933<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
18934<p>The white level is typically determined either by sensor bit depth
18935(8-14 bits is expected),<wbr/> or by the point where the sensor response
18936becomes too non-linear to be useful.<wbr/>  The default value for this is
18937maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
18938<p>The white level values of captured images may vary for different
18939capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
18940represents a coarse approximation for such case.<wbr/> It is recommended
18941to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported
18942by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p>
18943            </td>
18944          </tr>
18945
18946          <tr class="entries_header">
18947            <th class="th_details" colspan="5">HAL Implementation Details</th>
18948          </tr>
18949          <tr class="entry_cont">
18950            <td class="entry_details" colspan="5">
18951              <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
18952so the value for linear sensors should not be significantly lower
18953than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
18954            </td>
18955          </tr>
18956
18957          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18958           <!-- end of entry -->
18959        
18960                
18961          <tr class="entry" id="static_android.sensor.info.timestampSource">
18962            <td class="entry_name
18963             " rowspan="3">
18964              android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
18965            </td>
18966            <td class="entry_type">
18967                <span class="entry_type_name entry_type_name_enum">byte</span>
18968
18969              <span class="entry_type_visibility"> [public]</span>
18970
18971
18972              <span class="entry_type_hwlevel">[legacy] </span>
18973
18974
18975
18976                <ul class="entry_type_enum">
18977                  <li>
18978                    <span class="entry_type_enum_name">UNKNOWN</span>
18979                    <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/>
18980but can not be compared to timestamps from other subsystems
18981(e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
18982camera devices in the same system.<wbr/> Timestamps between streams and results for
18983a single camera instance are comparable,<wbr/> and the timestamps for all buffers
18984and the result metadata generated by a single capture are identical.<wbr/></p></span>
18985                  </li>
18986                  <li>
18987                    <span class="entry_type_enum_name">REALTIME</span>
18988                    <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
18989<a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
18990and they can be compared to other timestamps using that base.<wbr/></p></span>
18991                  </li>
18992                </ul>
18993
18994            </td> <!-- entry_type -->
18995
18996            <td class="entry_description">
18997              <p>The time base source for sensor capture start timestamps.<wbr/></p>
18998            </td>
18999
19000            <td class="entry_units">
19001            </td>
19002
19003            <td class="entry_range">
19004            </td>
19005
19006            <td class="entry_tags">
19007              <ul class="entry_tags">
19008                  <li><a href="#tag_V1">V1</a></li>
19009              </ul>
19010            </td>
19011
19012          </tr>
19013          <tr class="entries_header">
19014            <th class="th_details" colspan="5">Details</th>
19015          </tr>
19016          <tr class="entry_cont">
19017            <td class="entry_details" colspan="5">
19018              <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
19019may not based on a time source that can be compared to other system time sources.<wbr/></p>
19020<p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
19021can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
19022            </td>
19023          </tr>
19024
19025
19026          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19027           <!-- end of entry -->
19028        
19029                
19030          <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
19031            <td class="entry_name
19032             " rowspan="3">
19033              android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
19034            </td>
19035            <td class="entry_type">
19036                <span class="entry_type_name entry_type_name_enum">byte</span>
19037
19038              <span class="entry_type_visibility"> [public as boolean]</span>
19039
19040
19041
19042
19043
19044                <ul class="entry_type_enum">
19045                  <li>
19046                    <span class="entry_type_enum_name">FALSE</span>
19047                  </li>
19048                  <li>
19049                    <span class="entry_type_enum_name">TRUE</span>
19050                  </li>
19051                </ul>
19052
19053            </td> <!-- entry_type -->
19054
19055            <td class="entry_description">
19056              <p>Whether the RAW images output from this camera device are subject to
19057lens shading correction.<wbr/></p>
19058            </td>
19059
19060            <td class="entry_units">
19061            </td>
19062
19063            <td class="entry_range">
19064            </td>
19065
19066            <td class="entry_tags">
19067            </td>
19068
19069          </tr>
19070          <tr class="entries_header">
19071            <th class="th_details" colspan="5">Details</th>
19072          </tr>
19073          <tr class="entry_cont">
19074            <td class="entry_details" colspan="5">
19075              <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
19076have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
19077not be adjusted for lens shading correction.<wbr/>
19078See <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>
19079<p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
19080Devices with RAW capability will always report this information in this key.<wbr/></p>
19081            </td>
19082          </tr>
19083
19084
19085          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19086           <!-- end of entry -->
19087        
19088                
19089          <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
19090            <td class="entry_name
19091             " rowspan="5">
19092              android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
19093            </td>
19094            <td class="entry_type">
19095                <span class="entry_type_name">int32</span>
19096                <span class="entry_type_container">x</span>
19097
19098                <span class="entry_type_array">
19099                  4
19100                </span>
19101              <span class="entry_type_visibility"> [public as rectangle]</span>
19102
19103
19104              <span class="entry_type_hwlevel">[legacy] </span>
19105
19106
19107                <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
19108
19109
19110            </td> <!-- entry_type -->
19111
19112            <td class="entry_description">
19113              <p>The area of the image sensor which corresponds to active pixels prior to the
19114application of any geometric distortion correction.<wbr/></p>
19115            </td>
19116
19117            <td class="entry_units">
19118              Pixel coordinates on the image sensor
19119            </td>
19120
19121            <td class="entry_range">
19122            </td>
19123
19124            <td class="entry_tags">
19125              <ul class="entry_tags">
19126                  <li><a href="#tag_RAW">RAW</a></li>
19127              </ul>
19128            </td>
19129
19130          </tr>
19131          <tr class="entries_header">
19132            <th class="th_details" colspan="5">Details</th>
19133          </tr>
19134          <tr class="entry_cont">
19135            <td class="entry_details" colspan="5">
19136              <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
19137the region that actually receives light from the scene) before any geometric correction
19138has been applied,<wbr/> and should be treated as the active region rectangle for any of the
19139raw formats.<wbr/>  All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
19140correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
19141the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
19142<p>The size of this region determines the maximum field of view and the maximum number of
19143pixels that an image from this sensor can contain,<wbr/> prior to the application of
19144geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
19145post-distortion-corrected image is given by the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>
19146field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
19147can be calculated by applying the geometric distortion correction fields to this
19148rectangle,<wbr/> and cropping to the rectangle given in <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19149<p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
19150dimensions in <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> given the position of a pixel,<wbr/>
19151(x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in
19152<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
19153<ol>
19154<li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
19155<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> otherwise this pixel is considered
19156to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
19157<li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
19158(x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
19159buffers is defined relative to the top,<wbr/> left of the
19160<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> rectangle.<wbr/></li>
19161<li>If the resulting corrected pixel coordinate is within the region given in
19162<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> then the position of this pixel in the
19163processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
19164when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
19165</ol>
19166<p>Thus,<wbr/> for pixel x',<wbr/>y' = (25,<wbr/> 25) on a sensor where <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>
19167is (100,<wbr/>100),<wbr/> <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> is (10,<wbr/> 10,<wbr/> 100,<wbr/> 100),<wbr/>
19168<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> is (20,<wbr/> 20,<wbr/> 80,<wbr/> 80),<wbr/> and the geometric distortion
19169correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
19170pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
19171with dimensions given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>,<wbr/> and would be (5,<wbr/> 5)
19172relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
19173<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19174<p>The currently supported fields that correct for geometric distortion are:</p>
19175<ol>
19176<li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>.<wbr/></li>
19177</ol>
19178<p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same
19179as the post-distortion-corrected rectangle given in
19180<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19181<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
19182the full pixel array,<wbr/> and the size of the full pixel array is given by
19183<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19184<p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
19185full array may include black calibration pixels or other inactive regions.<wbr/></p>
19186            </td>
19187          </tr>
19188
19189          <tr class="entries_header">
19190            <th class="th_details" colspan="5">HAL Implementation Details</th>
19191          </tr>
19192          <tr class="entry_cont">
19193            <td class="entry_details" colspan="5">
19194              <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
19195&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
19196The <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>
19197<p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
19198the same as the post-correction active array region given in
19199<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19200            </td>
19201          </tr>
19202
19203          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19204           <!-- end of entry -->
19205        
19206        
19207        
19208
19209                
19210          <tr class="entry" id="static_android.sensor.referenceIlluminant1">
19211            <td class="entry_name
19212             " rowspan="5">
19213              android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
19214            </td>
19215            <td class="entry_type">
19216                <span class="entry_type_name entry_type_name_enum">byte</span>
19217
19218              <span class="entry_type_visibility"> [public]</span>
19219
19220
19221
19222
19223
19224                <ul class="entry_type_enum">
19225                  <li>
19226                    <span class="entry_type_enum_name">DAYLIGHT</span>
19227                    <span class="entry_type_enum_value">1</span>
19228                  </li>
19229                  <li>
19230                    <span class="entry_type_enum_name">FLUORESCENT</span>
19231                    <span class="entry_type_enum_value">2</span>
19232                  </li>
19233                  <li>
19234                    <span class="entry_type_enum_name">TUNGSTEN</span>
19235                    <span class="entry_type_enum_value">3</span>
19236                    <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
19237                  </li>
19238                  <li>
19239                    <span class="entry_type_enum_name">FLASH</span>
19240                    <span class="entry_type_enum_value">4</span>
19241                  </li>
19242                  <li>
19243                    <span class="entry_type_enum_name">FINE_WEATHER</span>
19244                    <span class="entry_type_enum_value">9</span>
19245                  </li>
19246                  <li>
19247                    <span class="entry_type_enum_name">CLOUDY_WEATHER</span>
19248                    <span class="entry_type_enum_value">10</span>
19249                  </li>
19250                  <li>
19251                    <span class="entry_type_enum_name">SHADE</span>
19252                    <span class="entry_type_enum_value">11</span>
19253                  </li>
19254                  <li>
19255                    <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span>
19256                    <span class="entry_type_enum_value">12</span>
19257                    <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
19258                  </li>
19259                  <li>
19260                    <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span>
19261                    <span class="entry_type_enum_value">13</span>
19262                    <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
19263                  </li>
19264                  <li>
19265                    <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span>
19266                    <span class="entry_type_enum_value">14</span>
19267                    <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
19268                  </li>
19269                  <li>
19270                    <span class="entry_type_enum_name">WHITE_FLUORESCENT</span>
19271                    <span class="entry_type_enum_value">15</span>
19272                    <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
19273                  </li>
19274                  <li>
19275                    <span class="entry_type_enum_name">STANDARD_A</span>
19276                    <span class="entry_type_enum_value">17</span>
19277                  </li>
19278                  <li>
19279                    <span class="entry_type_enum_name">STANDARD_B</span>
19280                    <span class="entry_type_enum_value">18</span>
19281                  </li>
19282                  <li>
19283                    <span class="entry_type_enum_name">STANDARD_C</span>
19284                    <span class="entry_type_enum_value">19</span>
19285                  </li>
19286                  <li>
19287                    <span class="entry_type_enum_name">D55</span>
19288                    <span class="entry_type_enum_value">20</span>
19289                  </li>
19290                  <li>
19291                    <span class="entry_type_enum_name">D65</span>
19292                    <span class="entry_type_enum_value">21</span>
19293                  </li>
19294                  <li>
19295                    <span class="entry_type_enum_name">D75</span>
19296                    <span class="entry_type_enum_value">22</span>
19297                  </li>
19298                  <li>
19299                    <span class="entry_type_enum_name">D50</span>
19300                    <span class="entry_type_enum_value">23</span>
19301                  </li>
19302                  <li>
19303                    <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span>
19304                    <span class="entry_type_enum_value">24</span>
19305                  </li>
19306                </ul>
19307
19308            </td> <!-- entry_type -->
19309
19310            <td class="entry_description">
19311              <p>The standard reference illuminant used as the scene light source when
19312calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
19313<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
19314<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
19315            </td>
19316
19317            <td class="entry_units">
19318            </td>
19319
19320            <td class="entry_range">
19321            </td>
19322
19323            <td class="entry_tags">
19324              <ul class="entry_tags">
19325                  <li><a href="#tag_RAW">RAW</a></li>
19326              </ul>
19327            </td>
19328
19329          </tr>
19330          <tr class="entries_header">
19331            <th class="th_details" colspan="5">Details</th>
19332          </tr>
19333          <tr class="entry_cont">
19334            <td class="entry_details" colspan="5">
19335              <p>The values in this key correspond to the values defined for the
19336EXIF LightSource tag.<wbr/> These illuminants are standard light sources
19337that are often used calibrating camera devices.<wbr/></p>
19338<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
19339<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
19340<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
19341<p>Some devices may choose to provide a second set of calibration
19342information for improved quality,<wbr/> including
19343<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
19344            </td>
19345          </tr>
19346
19347          <tr class="entries_header">
19348            <th class="th_details" colspan="5">HAL Implementation Details</th>
19349          </tr>
19350          <tr class="entry_cont">
19351            <td class="entry_details" colspan="5">
19352              <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
19353and corresponding matrices must be present to support the RAW capability
19354and DNG output.<wbr/></p>
19355<p>When producing raw images with a color profile that has only been
19356calibrated against a single light source,<wbr/> it is valid to omit
19357<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
19358<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/>
19359and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
19360<p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
19361chosen so that it is representative of typical scene lighting.<wbr/>  In
19362general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
19363<p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
19364<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
19365chosen to represent the typical range of scene lighting conditions.<wbr/>
19366In general,<wbr/> low color temperature illuminant such as Standard-A will
19367be chosen for the first reference illuminant and a higher color
19368temperature illuminant such as D65 will be chosen for the second
19369reference illuminant.<wbr/></p>
19370            </td>
19371          </tr>
19372
19373          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19374           <!-- end of entry -->
19375        
19376                
19377          <tr class="entry" id="static_android.sensor.referenceIlluminant2">
19378            <td class="entry_name
19379             " rowspan="3">
19380              android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
19381            </td>
19382            <td class="entry_type">
19383                <span class="entry_type_name">byte</span>
19384
19385              <span class="entry_type_visibility"> [public]</span>
19386
19387
19388
19389
19390
19391
19392            </td> <!-- entry_type -->
19393
19394            <td class="entry_description">
19395              <p>The standard reference illuminant used as the scene light source when
19396calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
19397<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
19398<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
19399            </td>
19400
19401            <td class="entry_units">
19402            </td>
19403
19404            <td class="entry_range">
19405              <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
19406            </td>
19407
19408            <td class="entry_tags">
19409              <ul class="entry_tags">
19410                  <li><a href="#tag_RAW">RAW</a></li>
19411              </ul>
19412            </td>
19413
19414          </tr>
19415          <tr class="entries_header">
19416            <th class="th_details" colspan="5">Details</th>
19417          </tr>
19418          <tr class="entry_cont">
19419            <td class="entry_details" colspan="5">
19420              <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
19421<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
19422<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
19423<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
19424            </td>
19425          </tr>
19426
19427
19428          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19429           <!-- end of entry -->
19430        
19431                
19432          <tr class="entry" id="static_android.sensor.calibrationTransform1">
19433            <td class="entry_name
19434             " rowspan="3">
19435              android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
19436            </td>
19437            <td class="entry_type">
19438                <span class="entry_type_name">rational</span>
19439                <span class="entry_type_container">x</span>
19440
19441                <span class="entry_type_array">
19442                  3 x 3
19443                </span>
19444              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19445
19446
19447
19448
19449                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19450
19451
19452            </td> <!-- entry_type -->
19453
19454            <td class="entry_description">
19455              <p>A per-device calibration transform matrix that maps from the
19456reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
19457            </td>
19458
19459            <td class="entry_units">
19460            </td>
19461
19462            <td class="entry_range">
19463            </td>
19464
19465            <td class="entry_tags">
19466              <ul class="entry_tags">
19467                  <li><a href="#tag_RAW">RAW</a></li>
19468              </ul>
19469            </td>
19470
19471          </tr>
19472          <tr class="entries_header">
19473            <th class="th_details" colspan="5">Details</th>
19474          </tr>
19475          <tr class="entry_cont">
19476            <td class="entry_details" colspan="5">
19477              <p>This matrix is used to correct for per-device variations in the
19478sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
19479<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
19480contains a per-device calibration transform that maps colors
19481from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
19482colorspace) into this camera device's native sensor color
19483space under the first reference illuminant
19484(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
19485            </td>
19486          </tr>
19487
19488
19489          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19490           <!-- end of entry -->
19491        
19492                
19493          <tr class="entry" id="static_android.sensor.calibrationTransform2">
19494            <td class="entry_name
19495             " rowspan="3">
19496              android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
19497            </td>
19498            <td class="entry_type">
19499                <span class="entry_type_name">rational</span>
19500                <span class="entry_type_container">x</span>
19501
19502                <span class="entry_type_array">
19503                  3 x 3
19504                </span>
19505              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19506
19507
19508
19509
19510                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19511
19512
19513            </td> <!-- entry_type -->
19514
19515            <td class="entry_description">
19516              <p>A per-device calibration transform matrix that maps from the
19517reference sensor colorspace to the actual device sensor colorspace
19518(this is the colorspace of the raw buffer data).<wbr/></p>
19519            </td>
19520
19521            <td class="entry_units">
19522            </td>
19523
19524            <td class="entry_range">
19525            </td>
19526
19527            <td class="entry_tags">
19528              <ul class="entry_tags">
19529                  <li><a href="#tag_RAW">RAW</a></li>
19530              </ul>
19531            </td>
19532
19533          </tr>
19534          <tr class="entries_header">
19535            <th class="th_details" colspan="5">Details</th>
19536          </tr>
19537          <tr class="entry_cont">
19538            <td class="entry_details" colspan="5">
19539              <p>This matrix is used to correct for per-device variations in the
19540sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
19541<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
19542contains a per-device calibration transform that maps colors
19543from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
19544colorspace) into this camera device's native sensor color
19545space under the second reference illuminant
19546(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
19547<p>This matrix will only be present if the second reference
19548illuminant is present.<wbr/></p>
19549            </td>
19550          </tr>
19551
19552
19553          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19554           <!-- end of entry -->
19555        
19556                
19557          <tr class="entry" id="static_android.sensor.colorTransform1">
19558            <td class="entry_name
19559             " rowspan="3">
19560              android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
19561            </td>
19562            <td class="entry_type">
19563                <span class="entry_type_name">rational</span>
19564                <span class="entry_type_container">x</span>
19565
19566                <span class="entry_type_array">
19567                  3 x 3
19568                </span>
19569              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19570
19571
19572
19573
19574                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19575
19576
19577            </td> <!-- entry_type -->
19578
19579            <td class="entry_description">
19580              <p>A matrix that transforms color values from CIE XYZ color space to
19581reference sensor color space.<wbr/></p>
19582            </td>
19583
19584            <td class="entry_units">
19585            </td>
19586
19587            <td class="entry_range">
19588            </td>
19589
19590            <td class="entry_tags">
19591              <ul class="entry_tags">
19592                  <li><a href="#tag_RAW">RAW</a></li>
19593              </ul>
19594            </td>
19595
19596          </tr>
19597          <tr class="entries_header">
19598            <th class="th_details" colspan="5">Details</th>
19599          </tr>
19600          <tr class="entry_cont">
19601            <td class="entry_details" colspan="5">
19602              <p>This matrix is used to convert from the standard CIE XYZ color
19603space to the reference sensor colorspace,<wbr/> and is used when processing
19604raw buffer data.<wbr/></p>
19605<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
19606contains a color transform matrix that maps colors from the CIE
19607XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
19608"golden module" colorspace) under the first reference illuminant
19609(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
19610<p>The white points chosen in both the reference sensor color space
19611and the CIE XYZ colorspace when calculating this transform will
19612match the standard white point for the first reference illuminant
19613(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
19614            </td>
19615          </tr>
19616
19617
19618          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19619           <!-- end of entry -->
19620        
19621                
19622          <tr class="entry" id="static_android.sensor.colorTransform2">
19623            <td class="entry_name
19624             " rowspan="3">
19625              android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
19626            </td>
19627            <td class="entry_type">
19628                <span class="entry_type_name">rational</span>
19629                <span class="entry_type_container">x</span>
19630
19631                <span class="entry_type_array">
19632                  3 x 3
19633                </span>
19634              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19635
19636
19637
19638
19639                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19640
19641
19642            </td> <!-- entry_type -->
19643
19644            <td class="entry_description">
19645              <p>A matrix that transforms color values from CIE XYZ color space to
19646reference sensor color space.<wbr/></p>
19647            </td>
19648
19649            <td class="entry_units">
19650            </td>
19651
19652            <td class="entry_range">
19653            </td>
19654
19655            <td class="entry_tags">
19656              <ul class="entry_tags">
19657                  <li><a href="#tag_RAW">RAW</a></li>
19658              </ul>
19659            </td>
19660
19661          </tr>
19662          <tr class="entries_header">
19663            <th class="th_details" colspan="5">Details</th>
19664          </tr>
19665          <tr class="entry_cont">
19666            <td class="entry_details" colspan="5">
19667              <p>This matrix is used to convert from the standard CIE XYZ color
19668space to the reference sensor colorspace,<wbr/> and is used when processing
19669raw buffer data.<wbr/></p>
19670<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
19671contains a color transform matrix that maps colors from the CIE
19672XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
19673"golden module" colorspace) under the second reference illuminant
19674(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
19675<p>The white points chosen in both the reference sensor color space
19676and the CIE XYZ colorspace when calculating this transform will
19677match the standard white point for the second reference illuminant
19678(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
19679<p>This matrix will only be present if the second reference
19680illuminant is present.<wbr/></p>
19681            </td>
19682          </tr>
19683
19684
19685          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19686           <!-- end of entry -->
19687        
19688                
19689          <tr class="entry" id="static_android.sensor.forwardMatrix1">
19690            <td class="entry_name
19691             " rowspan="3">
19692              android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
19693            </td>
19694            <td class="entry_type">
19695                <span class="entry_type_name">rational</span>
19696                <span class="entry_type_container">x</span>
19697
19698                <span class="entry_type_array">
19699                  3 x 3
19700                </span>
19701              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19702
19703
19704
19705
19706                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19707
19708
19709            </td> <!-- entry_type -->
19710
19711            <td class="entry_description">
19712              <p>A matrix that transforms white balanced camera colors from the reference
19713sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
19714            </td>
19715
19716            <td class="entry_units">
19717            </td>
19718
19719            <td class="entry_range">
19720            </td>
19721
19722            <td class="entry_tags">
19723              <ul class="entry_tags">
19724                  <li><a href="#tag_RAW">RAW</a></li>
19725              </ul>
19726            </td>
19727
19728          </tr>
19729          <tr class="entries_header">
19730            <th class="th_details" colspan="5">Details</th>
19731          </tr>
19732          <tr class="entry_cont">
19733            <td class="entry_details" colspan="5">
19734              <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
19735is used when processing raw buffer data.<wbr/></p>
19736<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
19737a color transform matrix that maps white balanced colors from the
19738reference sensor color space to the CIE XYZ color space with a D50 white
19739point.<wbr/></p>
19740<p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
19741this matrix is chosen so that the standard white point for this reference
19742illuminant in the reference sensor colorspace is mapped to D50 in the
19743CIE XYZ colorspace.<wbr/></p>
19744            </td>
19745          </tr>
19746
19747
19748          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19749           <!-- end of entry -->
19750        
19751                
19752          <tr class="entry" id="static_android.sensor.forwardMatrix2">
19753            <td class="entry_name
19754             " rowspan="3">
19755              android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
19756            </td>
19757            <td class="entry_type">
19758                <span class="entry_type_name">rational</span>
19759                <span class="entry_type_container">x</span>
19760
19761                <span class="entry_type_array">
19762                  3 x 3
19763                </span>
19764              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19765
19766
19767
19768
19769                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19770
19771
19772            </td> <!-- entry_type -->
19773
19774            <td class="entry_description">
19775              <p>A matrix that transforms white balanced camera colors from the reference
19776sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
19777            </td>
19778
19779            <td class="entry_units">
19780            </td>
19781
19782            <td class="entry_range">
19783            </td>
19784
19785            <td class="entry_tags">
19786              <ul class="entry_tags">
19787                  <li><a href="#tag_RAW">RAW</a></li>
19788              </ul>
19789            </td>
19790
19791          </tr>
19792          <tr class="entries_header">
19793            <th class="th_details" colspan="5">Details</th>
19794          </tr>
19795          <tr class="entry_cont">
19796            <td class="entry_details" colspan="5">
19797              <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
19798is used when processing raw buffer data.<wbr/></p>
19799<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
19800a color transform matrix that maps white balanced colors from the
19801reference sensor color space to the CIE XYZ color space with a D50 white
19802point.<wbr/></p>
19803<p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
19804this matrix is chosen so that the standard white point for this reference
19805illuminant in the reference sensor colorspace is mapped to D50 in the
19806CIE XYZ colorspace.<wbr/></p>
19807<p>This matrix will only be present if the second reference
19808illuminant is present.<wbr/></p>
19809            </td>
19810          </tr>
19811
19812
19813          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19814           <!-- end of entry -->
19815        
19816                
19817          <tr class="entry" id="static_android.sensor.baseGainFactor">
19818            <td class="entry_name
19819             " rowspan="1">
19820              android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
19821            </td>
19822            <td class="entry_type">
19823                <span class="entry_type_name">rational</span>
19824
19825              <span class="entry_type_visibility"> [system]</span>
19826
19827
19828
19829
19830
19831
19832            </td> <!-- entry_type -->
19833
19834            <td class="entry_description">
19835              <p>Gain factor from electrons to raw units when
19836ISO=100</p>
19837            </td>
19838
19839            <td class="entry_units">
19840            </td>
19841
19842            <td class="entry_range">
19843            </td>
19844
19845            <td class="entry_tags">
19846              <ul class="entry_tags">
19847                  <li><a href="#tag_FUTURE">FUTURE</a></li>
19848              </ul>
19849            </td>
19850
19851          </tr>
19852
19853
19854          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19855           <!-- end of entry -->
19856        
19857                
19858          <tr class="entry" id="static_android.sensor.blackLevelPattern">
19859            <td class="entry_name
19860             " rowspan="5">
19861              android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
19862            </td>
19863            <td class="entry_type">
19864                <span class="entry_type_name">int32</span>
19865                <span class="entry_type_container">x</span>
19866
19867                <span class="entry_type_array">
19868                  4
19869                </span>
19870              <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
19871
19872
19873
19874
19875                <div class="entry_type_notes">2x2 raw count block</div>
19876
19877
19878            </td> <!-- entry_type -->
19879
19880            <td class="entry_description">
19881              <p>A fixed black level offset for each of the color filter arrangement
19882(CFA) mosaic channels.<wbr/></p>
19883            </td>
19884
19885            <td class="entry_units">
19886            </td>
19887
19888            <td class="entry_range">
19889              <p>&gt;= 0 for each.<wbr/></p>
19890            </td>
19891
19892            <td class="entry_tags">
19893              <ul class="entry_tags">
19894                  <li><a href="#tag_RAW">RAW</a></li>
19895              </ul>
19896            </td>
19897
19898          </tr>
19899          <tr class="entries_header">
19900            <th class="th_details" colspan="5">Details</th>
19901          </tr>
19902          <tr class="entry_cont">
19903            <td class="entry_details" colspan="5">
19904              <p>This key specifies the zero light value for each of the CFA mosaic
19905channels in the camera sensor.<wbr/>  The maximal value output by the
19906sensor 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>
19907<p>The values are given in the same order as channels listed for the CFA
19908layout 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
19909nth value given corresponds to the black level offset for the nth
19910color channel listed in the CFA.<wbr/></p>
19911<p>The black level values of captured images may vary for different
19912capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
19913represents a coarse approximation for such case.<wbr/> It is recommended to
19914use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from
19915<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when
19916supported by the camera device,<wbr/> which provides more accurate black
19917level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use
19918pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black
19919level values for each frame.<wbr/></p>
19920            </td>
19921          </tr>
19922
19923          <tr class="entries_header">
19924            <th class="th_details" colspan="5">HAL Implementation Details</th>
19925          </tr>
19926          <tr class="entry_cont">
19927            <td class="entry_details" colspan="5">
19928              <p>The values are given in row-column scan order,<wbr/> with the first value
19929corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
19930            </td>
19931          </tr>
19932
19933          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19934           <!-- end of entry -->
19935        
19936                
19937          <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
19938            <td class="entry_name
19939             " rowspan="3">
19940              android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
19941            </td>
19942            <td class="entry_type">
19943                <span class="entry_type_name">int32</span>
19944
19945              <span class="entry_type_visibility"> [public]</span>
19946
19947
19948              <span class="entry_type_hwlevel">[full] </span>
19949
19950
19951
19952
19953            </td> <!-- entry_type -->
19954
19955            <td class="entry_description">
19956              <p>Maximum sensitivity that is implemented
19957purely through analog gain.<wbr/></p>
19958            </td>
19959
19960            <td class="entry_units">
19961            </td>
19962
19963            <td class="entry_range">
19964            </td>
19965
19966            <td class="entry_tags">
19967              <ul class="entry_tags">
19968                  <li><a href="#tag_V1">V1</a></li>
19969                  <li><a href="#tag_FULL">FULL</a></li>
19970              </ul>
19971            </td>
19972
19973          </tr>
19974          <tr class="entries_header">
19975            <th class="th_details" colspan="5">Details</th>
19976          </tr>
19977          <tr class="entry_cont">
19978            <td class="entry_details" colspan="5">
19979              <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
19980equal to this,<wbr/> all applied gain must be analog.<wbr/> For
19981values above this,<wbr/> the gain applied can be a mix of analog and
19982digital.<wbr/></p>
19983            </td>
19984          </tr>
19985
19986
19987          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19988           <!-- end of entry -->
19989        
19990                
19991          <tr class="entry" id="static_android.sensor.orientation">
19992            <td class="entry_name
19993             " rowspan="3">
19994              android.<wbr/>sensor.<wbr/>orientation
19995            </td>
19996            <td class="entry_type">
19997                <span class="entry_type_name">int32</span>
19998
19999              <span class="entry_type_visibility"> [public]</span>
20000
20001
20002              <span class="entry_type_hwlevel">[legacy] </span>
20003
20004
20005
20006
20007            </td> <!-- entry_type -->
20008
20009            <td class="entry_description">
20010              <p>Clockwise angle through which the output image needs to be rotated to be
20011upright on the device screen in its native orientation.<wbr/></p>
20012            </td>
20013
20014            <td class="entry_units">
20015              Degrees of clockwise rotation; always a multiple of
20016          90
20017            </td>
20018
20019            <td class="entry_range">
20020              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
20021            </td>
20022
20023            <td class="entry_tags">
20024              <ul class="entry_tags">
20025                  <li><a href="#tag_BC">BC</a></li>
20026              </ul>
20027            </td>
20028
20029          </tr>
20030          <tr class="entries_header">
20031            <th class="th_details" colspan="5">Details</th>
20032          </tr>
20033          <tr class="entry_cont">
20034            <td class="entry_details" colspan="5">
20035              <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
20036the sensor's coordinate system.<wbr/></p>
20037            </td>
20038          </tr>
20039
20040
20041          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20042           <!-- end of entry -->
20043        
20044                
20045          <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
20046            <td class="entry_name
20047             " rowspan="3">
20048              android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
20049            </td>
20050            <td class="entry_type">
20051                <span class="entry_type_name">int32</span>
20052                <span class="entry_type_container">x</span>
20053
20054                <span class="entry_type_array">
20055                  3
20056                </span>
20057              <span class="entry_type_visibility"> [system]</span>
20058
20059
20060
20061
20062                <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
20063
20064
20065            </td> <!-- entry_type -->
20066
20067            <td class="entry_description">
20068              <p>The number of input samples for each dimension of
20069<a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
20070            </td>
20071
20072            <td class="entry_units">
20073            </td>
20074
20075            <td class="entry_range">
20076              <p>Hue &gt;= 1,<wbr/>
20077Saturation &gt;= 2,<wbr/>
20078Value &gt;= 1</p>
20079            </td>
20080
20081            <td class="entry_tags">
20082              <ul class="entry_tags">
20083                  <li><a href="#tag_RAW">RAW</a></li>
20084              </ul>
20085            </td>
20086
20087          </tr>
20088          <tr class="entries_header">
20089            <th class="th_details" colspan="5">Details</th>
20090          </tr>
20091          <tr class="entry_cont">
20092            <td class="entry_details" colspan="5">
20093              <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
20094dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the
20095dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
20096element.<wbr/></p>
20097            </td>
20098          </tr>
20099
20100
20101          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20102           <!-- end of entry -->
20103        
20104                
20105          <tr class="entry" id="static_android.sensor.availableTestPatternModes">
20106            <td class="entry_name
20107             " rowspan="5">
20108              android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
20109            </td>
20110            <td class="entry_type">
20111                <span class="entry_type_name">int32</span>
20112                <span class="entry_type_container">x</span>
20113
20114                <span class="entry_type_array">
20115                  n
20116                </span>
20117              <span class="entry_type_visibility"> [public]</span>
20118
20119
20120
20121
20122                <div class="entry_type_notes">list of enums</div>
20123
20124
20125            </td> <!-- entry_type -->
20126
20127            <td class="entry_description">
20128              <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
20129supported by this camera device.<wbr/></p>
20130            </td>
20131
20132            <td class="entry_units">
20133            </td>
20134
20135            <td class="entry_range">
20136              <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
20137            </td>
20138
20139            <td class="entry_tags">
20140            </td>
20141
20142          </tr>
20143          <tr class="entries_header">
20144            <th class="th_details" colspan="5">Details</th>
20145          </tr>
20146          <tr class="entry_cont">
20147            <td class="entry_details" colspan="5">
20148              <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
20149            </td>
20150          </tr>
20151
20152          <tr class="entries_header">
20153            <th class="th_details" colspan="5">HAL Implementation Details</th>
20154          </tr>
20155          <tr class="entry_cont">
20156            <td class="entry_details" colspan="5">
20157              <p>All custom modes must be &gt;= CUSTOM1.<wbr/></p>
20158            </td>
20159          </tr>
20160
20161          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20162           <!-- end of entry -->
20163        
20164                
20165          <tr class="entry" id="static_android.sensor.opticalBlackRegions">
20166            <td class="entry_name
20167             " rowspan="5">
20168              android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions
20169            </td>
20170            <td class="entry_type">
20171                <span class="entry_type_name">int32</span>
20172                <span class="entry_type_container">x</span>
20173
20174                <span class="entry_type_array">
20175                  4 x num_regions
20176                </span>
20177              <span class="entry_type_visibility"> [public as rectangle]</span>
20178
20179
20180
20181
20182
20183
20184            </td> <!-- entry_type -->
20185
20186            <td class="entry_description">
20187              <p>List of disjoint rectangles indicating the sensor
20188optically shielded black pixel regions.<wbr/></p>
20189            </td>
20190
20191            <td class="entry_units">
20192            </td>
20193
20194            <td class="entry_range">
20195            </td>
20196
20197            <td class="entry_tags">
20198            </td>
20199
20200          </tr>
20201          <tr class="entries_header">
20202            <th class="th_details" colspan="5">Details</th>
20203          </tr>
20204          <tr class="entry_cont">
20205            <td class="entry_details" colspan="5">
20206              <p>In most camera sensors,<wbr/> the active array is surrounded by some
20207optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels
20208provides a reliable black reference for black level compensation
20209in active array region.<wbr/></p>
20210<p>This key provides a list of disjoint rectangles specifying the
20211regions of optically shielded (with metal shield) black pixel
20212regions if the camera device is capable of reading out these black
20213pixels in the output raw images.<wbr/> In comparison to the fixed black
20214level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key
20215may provide a more accurate way for the application to calculate
20216black level of each captured raw images.<wbr/></p>
20217<p>When this key is reported,<wbr/> the <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> and
20218<a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p>
20219            </td>
20220          </tr>
20221
20222          <tr class="entries_header">
20223            <th class="th_details" colspan="5">HAL Implementation Details</th>
20224          </tr>
20225          <tr class="entry_cont">
20226            <td class="entry_details" colspan="5">
20227              <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin)
20228must be &gt;= (0,<wbr/>0) and &lt;=
20229<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> The (width,<wbr/> height) must be
20230&lt;= <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> Each region must be
20231outside the region reported by
20232<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20233<p>The HAL must report minimal number of disjoint regions for the
20234optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can
20235be covered by one rectangle,<wbr/> the HAL must not split this region into
20236multiple rectangles.<wbr/></p>
20237            </td>
20238          </tr>
20239
20240          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20241           <!-- end of entry -->
20242        
20243                
20244          <tr class="entry" id="static_android.sensor.opaqueRawSize">
20245            <td class="entry_name
20246             " rowspan="5">
20247              android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size
20248            </td>
20249            <td class="entry_type">
20250                <span class="entry_type_name">int32</span>
20251                <span class="entry_type_container">x</span>
20252
20253                <span class="entry_type_array">
20254                  n x 3
20255                </span>
20256              <span class="entry_type_visibility"> [system]</span>
20257
20258
20259
20260
20261
20262
20263            </td> <!-- entry_type -->
20264
20265            <td class="entry_description">
20266              <p>Size in bytes for all the listed opaque RAW buffer sizes</p>
20267            </td>
20268
20269            <td class="entry_units">
20270            </td>
20271
20272            <td class="entry_range">
20273              <p>Must be large enough to fit the opaque RAW of corresponding size produced by
20274the camera</p>
20275            </td>
20276
20277            <td class="entry_tags">
20278            </td>
20279
20280          </tr>
20281          <tr class="entries_header">
20282            <th class="th_details" colspan="5">Details</th>
20283          </tr>
20284          <tr class="entry_cont">
20285            <td class="entry_details" colspan="5">
20286              <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/>
20287This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/>
20288All RAW_<wbr/>OPAQUE output stream configuration listed in
20289<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in
20290this key.<wbr/></p>
20291            </td>
20292          </tr>
20293
20294          <tr class="entries_header">
20295            <th class="th_details" colspan="5">HAL Implementation Details</th>
20296          </tr>
20297          <tr class="entry_cont">
20298            <td class="entry_details" colspan="5">
20299              <p>This key is added in HAL3.<wbr/>4.<wbr/>
20300For HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this key.<wbr/>
20301For HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera framework
20302will derive this key by assuming each pixel takes two bytes and no padding bytes
20303between rows.<wbr/></p>
20304            </td>
20305          </tr>
20306
20307          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20308           <!-- end of entry -->
20309        
20310        
20311
20312      <!-- end of kind -->
20313      </tbody>
20314      <tr><td colspan="6" class="kind">dynamic</td></tr>
20315
20316      <thead class="entries_header">
20317        <tr>
20318          <th class="th_name">Property Name</th>
20319          <th class="th_type">Type</th>
20320          <th class="th_description">Description</th>
20321          <th class="th_units">Units</th>
20322          <th class="th_range">Range</th>
20323          <th class="th_tags">Tags</th>
20324        </tr>
20325      </thead>
20326
20327      <tbody>
20328
20329        
20330
20331        
20332
20333        
20334
20335        
20336
20337                
20338          <tr class="entry" id="dynamic_android.sensor.exposureTime">
20339            <td class="entry_name
20340             " rowspan="3">
20341              android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
20342            </td>
20343            <td class="entry_type">
20344                <span class="entry_type_name">int64</span>
20345
20346              <span class="entry_type_visibility"> [public]</span>
20347
20348
20349              <span class="entry_type_hwlevel">[full] </span>
20350
20351
20352
20353
20354            </td> <!-- entry_type -->
20355
20356            <td class="entry_description">
20357              <p>Duration each pixel is exposed to
20358light.<wbr/></p>
20359            </td>
20360
20361            <td class="entry_units">
20362              Nanoseconds
20363            </td>
20364
20365            <td class="entry_range">
20366              <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
20367            </td>
20368
20369            <td class="entry_tags">
20370              <ul class="entry_tags">
20371                  <li><a href="#tag_V1">V1</a></li>
20372              </ul>
20373            </td>
20374
20375          </tr>
20376          <tr class="entries_header">
20377            <th class="th_details" colspan="5">Details</th>
20378          </tr>
20379          <tr class="entry_cont">
20380            <td class="entry_details" colspan="5">
20381              <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
20382duration exposed to the nearest possible value (rather than expose longer).<wbr/>
20383The final exposure time used will be available in the output capture result.<wbr/></p>
20384<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
20385OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
20386            </td>
20387          </tr>
20388
20389
20390          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20391           <!-- end of entry -->
20392        
20393                
20394          <tr class="entry" id="dynamic_android.sensor.frameDuration">
20395            <td class="entry_name
20396             " rowspan="5">
20397              android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
20398            </td>
20399            <td class="entry_type">
20400                <span class="entry_type_name">int64</span>
20401
20402              <span class="entry_type_visibility"> [public]</span>
20403
20404
20405              <span class="entry_type_hwlevel">[full] </span>
20406
20407
20408
20409
20410            </td> <!-- entry_type -->
20411
20412            <td class="entry_description">
20413              <p>Duration from start of frame exposure to
20414start of next frame exposure.<wbr/></p>
20415            </td>
20416
20417            <td class="entry_units">
20418              Nanoseconds
20419            </td>
20420
20421            <td class="entry_range">
20422              <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
20423<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
20424is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
20425            </td>
20426
20427            <td class="entry_tags">
20428              <ul class="entry_tags">
20429                  <li><a href="#tag_V1">V1</a></li>
20430              </ul>
20431            </td>
20432
20433          </tr>
20434          <tr class="entries_header">
20435            <th class="th_details" colspan="5">Details</th>
20436          </tr>
20437          <tr class="entry_cont">
20438            <td class="entry_details" colspan="5">
20439              <p>The maximum frame rate that can be supported by a camera subsystem is
20440a function of many factors:</p>
20441<ul>
20442<li>Requested resolutions of output image streams</li>
20443<li>Availability of binning /<wbr/> skipping modes on the imager</li>
20444<li>The bandwidth of the imager interface</li>
20445<li>The bandwidth of the various ISP processing blocks</li>
20446</ul>
20447<p>Since these factors can vary greatly between different ISPs and
20448sensors,<wbr/> the camera abstraction tries to represent the bandwidth
20449restrictions with as simple a model as possible.<wbr/></p>
20450<p>The model presented has the following characteristics:</p>
20451<ul>
20452<li>The image sensor is always configured to output the smallest
20453resolution possible given the application's requested output stream
20454sizes.<wbr/>  The smallest resolution is defined as being at least as large
20455as the largest requested output stream size; the camera pipeline must
20456never digitally upsample sensor data when the crop region covers the
20457whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
20458resolutions are configured,<wbr/> the sensor can provide a higher frame
20459rate.<wbr/></li>
20460<li>Since any request may use any or all the currently configured
20461output streams,<wbr/> the sensor and ISP must be configured to support
20462scaling a single capture to all the streams at the same time.<wbr/>  This
20463means the camera pipeline must be ready to produce the largest
20464requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
20465frame rate of a given configured stream set is governed only by the
20466largest requested stream resolution.<wbr/></li>
20467<li>Using more than one output stream in a request does not affect the
20468frame duration.<wbr/></li>
20469<li>Certain format-streams may need to do additional background processing
20470before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
20471can run concurrently to the rest of the camera pipeline,<wbr/> but
20472cannot process more than 1 capture at a time.<wbr/></li>
20473</ul>
20474<p>The necessary information for the application,<wbr/> given the model above,<wbr/>
20475is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using
20476<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
20477These are used to determine the maximum frame rate /<wbr/> minimum frame
20478duration that is possible for a given stream configuration.<wbr/></p>
20479<p>Specifically,<wbr/> the application can use the following rules to
20480determine the minimum frame duration it can request from the camera
20481device:</p>
20482<ol>
20483<li>Let the set of currently configured input/<wbr/>output streams
20484be called <code>S</code>.<wbr/></li>
20485<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking
20486it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
20487(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be
20488called <code>F</code>.<wbr/></li>
20489<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
20490for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
20491used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
20492</ol>
20493<p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>
20494using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code>
20495determines the steady state frame rate that the application will get
20496if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of
20497request be called <code>Rsimple</code>.<wbr/></p>
20498<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
20499by a single capture of a new request <code>Rstall</code> (which has at least
20500one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
20501same minimum frame duration this will not cause a frame rate loss
20502if all buffers from the previous <code>Rstall</code> have already been
20503delivered.<wbr/></p>
20504<p>For more details about stalling,<wbr/> see
20505<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
20506<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
20507OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
20508            </td>
20509          </tr>
20510
20511          <tr class="entries_header">
20512            <th class="th_details" colspan="5">HAL Implementation Details</th>
20513          </tr>
20514          <tr class="entry_cont">
20515            <td class="entry_details" colspan="5">
20516              <p>For more details about stalling,<wbr/> see
20517<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
20518            </td>
20519          </tr>
20520
20521          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20522           <!-- end of entry -->
20523        
20524                
20525          <tr class="entry" id="dynamic_android.sensor.sensitivity">
20526            <td class="entry_name
20527             " rowspan="5">
20528              android.<wbr/>sensor.<wbr/>sensitivity
20529            </td>
20530            <td class="entry_type">
20531                <span class="entry_type_name">int32</span>
20532
20533              <span class="entry_type_visibility"> [public]</span>
20534
20535
20536              <span class="entry_type_hwlevel">[full] </span>
20537
20538
20539
20540
20541            </td> <!-- entry_type -->
20542
20543            <td class="entry_description">
20544              <p>The amount of gain applied to sensor data
20545before processing.<wbr/></p>
20546            </td>
20547
20548            <td class="entry_units">
20549              ISO arithmetic units
20550            </td>
20551
20552            <td class="entry_range">
20553              <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
20554            </td>
20555
20556            <td class="entry_tags">
20557              <ul class="entry_tags">
20558                  <li><a href="#tag_V1">V1</a></li>
20559              </ul>
20560            </td>
20561
20562          </tr>
20563          <tr class="entries_header">
20564            <th class="th_details" colspan="5">Details</th>
20565          </tr>
20566          <tr class="entry_cont">
20567            <td class="entry_details" colspan="5">
20568              <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
20569as defined in ISO 12232:2006.<wbr/></p>
20570<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
20571if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
20572is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
20573<p>If the camera device cannot apply the exact sensitivity
20574requested,<wbr/> it will reduce the gain to the nearest supported
20575value.<wbr/> The final sensitivity used will be available in the
20576output capture result.<wbr/></p>
20577            </td>
20578          </tr>
20579
20580          <tr class="entries_header">
20581            <th class="th_details" colspan="5">HAL Implementation Details</th>
20582          </tr>
20583          <tr class="entry_cont">
20584            <td class="entry_details" colspan="5">
20585              <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
20586            </td>
20587          </tr>
20588
20589          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20590           <!-- end of entry -->
20591        
20592                
20593          <tr class="entry" id="dynamic_android.sensor.timestamp">
20594            <td class="entry_name
20595             " rowspan="5">
20596              android.<wbr/>sensor.<wbr/>timestamp
20597            </td>
20598            <td class="entry_type">
20599                <span class="entry_type_name">int64</span>
20600
20601              <span class="entry_type_visibility"> [public]</span>
20602
20603
20604              <span class="entry_type_hwlevel">[legacy] </span>
20605
20606
20607
20608
20609            </td> <!-- entry_type -->
20610
20611            <td class="entry_description">
20612              <p>Time at start of exposure of first
20613row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
20614            </td>
20615
20616            <td class="entry_units">
20617              Nanoseconds
20618            </td>
20619
20620            <td class="entry_range">
20621              <p>&gt; 0</p>
20622            </td>
20623
20624            <td class="entry_tags">
20625              <ul class="entry_tags">
20626                  <li><a href="#tag_BC">BC</a></li>
20627              </ul>
20628            </td>
20629
20630          </tr>
20631          <tr class="entries_header">
20632            <th class="th_details" colspan="5">Details</th>
20633          </tr>
20634          <tr class="entry_cont">
20635            <td class="entry_details" colspan="5">
20636              <p>The timestamps are also included in all image
20637buffers produced for the same capture,<wbr/> and will be identical
20638on all the outputs.<wbr/></p>
20639<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
20640the timestamps measure time since an unspecified starting point,<wbr/>
20641and are monotonically increasing.<wbr/> They can be compared with the
20642timestamps for other captures from the same camera device,<wbr/> but are
20643not guaranteed to be comparable to any other time source.<wbr/></p>
20644<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
20645timestamps measure time in the same timebase as <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/> and they can
20646be compared to other timestamps from other subsystems that
20647are using that base.<wbr/></p>
20648<p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
20649the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
20650timestamp</a> in the TotalCaptureResult that was used to create the
20651reprocess capture request.<wbr/></p>
20652            </td>
20653          </tr>
20654
20655          <tr class="entries_header">
20656            <th class="th_details" colspan="5">HAL Implementation Details</th>
20657          </tr>
20658          <tr class="entry_cont">
20659            <td class="entry_details" colspan="5">
20660              <p>All timestamps must be in reference to the kernel's
20661CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
20662time spent asleep.<wbr/> This allows for synchronization with
20663sensors that continue to operate while the system is
20664otherwise asleep.<wbr/></p>
20665<p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
20666The timestamp must be synchronized with the timestamps from other
20667sensor subsystems that are using the same timebase.<wbr/></p>
20668<p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
20669with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
20670capture request.<wbr/></p>
20671            </td>
20672          </tr>
20673
20674          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20675           <!-- end of entry -->
20676        
20677                
20678          <tr class="entry" id="dynamic_android.sensor.temperature">
20679            <td class="entry_name
20680             " rowspan="1">
20681              android.<wbr/>sensor.<wbr/>temperature
20682            </td>
20683            <td class="entry_type">
20684                <span class="entry_type_name">float</span>
20685
20686              <span class="entry_type_visibility"> [system]</span>
20687
20688
20689
20690
20691
20692
20693            </td> <!-- entry_type -->
20694
20695            <td class="entry_description">
20696              <p>The temperature of the sensor,<wbr/> sampled at the time
20697exposure began for this frame.<wbr/></p>
20698<p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
20699somewhere close to it.<wbr/></p>
20700            </td>
20701
20702            <td class="entry_units">
20703              Celsius
20704            </td>
20705
20706            <td class="entry_range">
20707              <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
20708            </td>
20709
20710            <td class="entry_tags">
20711              <ul class="entry_tags">
20712                  <li><a href="#tag_FUTURE">FUTURE</a></li>
20713              </ul>
20714            </td>
20715
20716          </tr>
20717
20718
20719          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20720           <!-- end of entry -->
20721        
20722                
20723          <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
20724            <td class="entry_name
20725             " rowspan="3">
20726              android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
20727            </td>
20728            <td class="entry_type">
20729                <span class="entry_type_name">rational</span>
20730                <span class="entry_type_container">x</span>
20731
20732                <span class="entry_type_array">
20733                  3
20734                </span>
20735              <span class="entry_type_visibility"> [public]</span>
20736
20737
20738
20739
20740
20741
20742            </td> <!-- entry_type -->
20743
20744            <td class="entry_description">
20745              <p>The estimated camera neutral color in the native sensor colorspace at
20746the time of capture.<wbr/></p>
20747            </td>
20748
20749            <td class="entry_units">
20750            </td>
20751
20752            <td class="entry_range">
20753            </td>
20754
20755            <td class="entry_tags">
20756              <ul class="entry_tags">
20757                  <li><a href="#tag_RAW">RAW</a></li>
20758              </ul>
20759            </td>
20760
20761          </tr>
20762          <tr class="entries_header">
20763            <th class="th_details" colspan="5">Details</th>
20764          </tr>
20765          <tr class="entry_cont">
20766            <td class="entry_details" colspan="5">
20767              <p>This value gives the neutral color point encoded as an RGB value in the
20768native sensor color space.<wbr/>  The neutral color point indicates the
20769currently estimated white point of the scene illumination.<wbr/>  It can be
20770used to interpolate between the provided color transforms when
20771processing raw sensor data.<wbr/></p>
20772<p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
20773            </td>
20774          </tr>
20775
20776
20777          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20778           <!-- end of entry -->
20779        
20780                
20781          <tr class="entry" id="dynamic_android.sensor.noiseProfile">
20782            <td class="entry_name
20783             " rowspan="5">
20784              android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
20785            </td>
20786            <td class="entry_type">
20787                <span class="entry_type_name">double</span>
20788                <span class="entry_type_container">x</span>
20789
20790                <span class="entry_type_array">
20791                  2 x CFA Channels
20792                </span>
20793              <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
20794
20795
20796
20797
20798                <div class="entry_type_notes">Pairs of noise model coefficients</div>
20799
20800
20801            </td> <!-- entry_type -->
20802
20803            <td class="entry_description">
20804              <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
20805            </td>
20806
20807            <td class="entry_units">
20808            </td>
20809
20810            <td class="entry_range">
20811            </td>
20812
20813            <td class="entry_tags">
20814              <ul class="entry_tags">
20815                  <li><a href="#tag_RAW">RAW</a></li>
20816              </ul>
20817            </td>
20818
20819          </tr>
20820          <tr class="entries_header">
20821            <th class="th_details" colspan="5">Details</th>
20822          </tr>
20823          <tr class="entry_cont">
20824            <td class="entry_details" colspan="5">
20825              <p>This key contains two noise model coefficients for each CFA channel
20826corresponding to the sensor amplification (S) and sensor readout
20827noise (O).<wbr/>  These are given as pairs of coefficients for each channel
20828in the same order as channels listed for the CFA layout key
20829(see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/>  This is
20830represented as an array of Pair&lt;Double,<wbr/> Double&gt;,<wbr/> where
20831the first member of the Pair at index n is the S coefficient and the
20832second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
20833<p>These coefficients are used in a two parameter noise model to describe
20834the amount of noise present in the image for each CFA channel.<wbr/>  The
20835noise model used here is:</p>
20836<p>N(x) = sqrt(Sx + O)</p>
20837<p>Where x represents the recorded signal of a CFA channel normalized to
20838the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
20839that channel.<wbr/></p>
20840<p>A more detailed description of the noise model can be found in the
20841Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
20842            </td>
20843          </tr>
20844
20845          <tr class="entries_header">
20846            <th class="th_details" colspan="5">HAL Implementation Details</th>
20847          </tr>
20848          <tr class="entry_cont">
20849            <td class="entry_details" colspan="5">
20850              <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
20851an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
20852for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
20853channel,<wbr/> etc.<wbr/></p>
20854            </td>
20855          </tr>
20856
20857          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20858           <!-- end of entry -->
20859        
20860                
20861          <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
20862            <td class="entry_name
20863             " rowspan="3">
20864              android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
20865            </td>
20866            <td class="entry_type">
20867                <span class="entry_type_name">float</span>
20868                <span class="entry_type_container">x</span>
20869
20870                <span class="entry_type_array">
20871                  hue_samples x saturation_samples x value_samples x 3
20872                </span>
20873              <span class="entry_type_visibility"> [system]</span>
20874
20875
20876
20877
20878                <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
20879
20880
20881            </td> <!-- entry_type -->
20882
20883            <td class="entry_description">
20884              <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
20885for each pixel.<wbr/></p>
20886            </td>
20887
20888            <td class="entry_units">
20889              
20890          The hue shift is given in degrees; saturation and value scale factors are
20891          unitless and are between 0 and 1 inclusive
20892          
20893            </td>
20894
20895            <td class="entry_range">
20896            </td>
20897
20898            <td class="entry_tags">
20899              <ul class="entry_tags">
20900                  <li><a href="#tag_RAW">RAW</a></li>
20901              </ul>
20902            </td>
20903
20904          </tr>
20905          <tr class="entries_header">
20906            <th class="th_details" colspan="5">Details</th>
20907          </tr>
20908          <tr class="entry_cont">
20909            <td class="entry_details" colspan="5">
20910              <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
20911<a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
20912<p>Each entry of this map contains three floats corresponding to the
20913hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
20914hue shift has the lowest index.<wbr/> The map entries are stored in the key
20915in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
20916hue divisions in the middle loop,<wbr/> and the saturation divisions in the
20917inner loop.<wbr/> All zero input saturation entries are required to have a
20918value scale factor of 1.<wbr/>0.<wbr/></p>
20919            </td>
20920          </tr>
20921
20922
20923          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20924           <!-- end of entry -->
20925        
20926                
20927          <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
20928            <td class="entry_name
20929             " rowspan="3">
20930              android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
20931            </td>
20932            <td class="entry_type">
20933                <span class="entry_type_name">float</span>
20934                <span class="entry_type_container">x</span>
20935
20936                <span class="entry_type_array">
20937                  samples x 2
20938                </span>
20939              <span class="entry_type_visibility"> [system]</span>
20940
20941
20942
20943
20944                <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
20945
20946
20947            </td> <!-- entry_type -->
20948
20949            <td class="entry_description">
20950              <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
20951            </td>
20952
20953            <td class="entry_units">
20954            </td>
20955
20956            <td class="entry_range">
20957              <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
20958<code>[0,<wbr/> 1]</code>.<wbr/>  The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
20959sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
20960            </td>
20961
20962            <td class="entry_tags">
20963              <ul class="entry_tags">
20964                  <li><a href="#tag_RAW">RAW</a></li>
20965              </ul>
20966            </td>
20967
20968          </tr>
20969          <tr class="entries_header">
20970            <th class="th_details" colspan="5">Details</th>
20971          </tr>
20972          <tr class="entry_cont">
20973            <td class="entry_details" colspan="5">
20974              <p>This key contains a default tone curve that can be applied while
20975processing the image as a starting point for user adjustments.<wbr/>
20976The curve is specified as a list of value pairs in linear gamma.<wbr/>
20977The curve is interpolated using a cubic spline.<wbr/></p>
20978            </td>
20979          </tr>
20980
20981
20982          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20983           <!-- end of entry -->
20984        
20985                
20986          <tr class="entry" id="dynamic_android.sensor.greenSplit">
20987            <td class="entry_name
20988             " rowspan="5">
20989              android.<wbr/>sensor.<wbr/>green<wbr/>Split
20990            </td>
20991            <td class="entry_type">
20992                <span class="entry_type_name">float</span>
20993
20994              <span class="entry_type_visibility"> [public]</span>
20995
20996
20997
20998
20999
21000
21001            </td> <!-- entry_type -->
21002
21003            <td class="entry_description">
21004              <p>The worst-case divergence between Bayer green channels.<wbr/></p>
21005            </td>
21006
21007            <td class="entry_units">
21008            </td>
21009
21010            <td class="entry_range">
21011              <p>&gt;= 0</p>
21012            </td>
21013
21014            <td class="entry_tags">
21015              <ul class="entry_tags">
21016                  <li><a href="#tag_RAW">RAW</a></li>
21017              </ul>
21018            </td>
21019
21020          </tr>
21021          <tr class="entries_header">
21022            <th class="th_details" colspan="5">Details</th>
21023          </tr>
21024          <tr class="entry_cont">
21025            <td class="entry_details" colspan="5">
21026              <p>This value is an estimate of the worst case split between the
21027Bayer green channels in the red and blue rows in the sensor color
21028filter array.<wbr/></p>
21029<p>The green split is calculated as follows:</p>
21030<ol>
21031<li>A 5x5 pixel (or larger) window W within the active sensor array is
21032chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
21033mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/>  The location and size of the window
21034chosen is implementation defined,<wbr/> and should be chosen to provide a
21035green split estimate that is both representative of the entire image
21036for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
21037<li>The arithmetic mean of the green channels from the red
21038rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
21039<li>The arithmetic mean of the green channels from the blue
21040rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
21041<li>The maximum ratio R of the two means is computed as follows:
21042<code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
21043</ol>
21044<p>The ratio R is the green split divergence reported for this property,<wbr/>
21045which represents how much the green channels differ in the mosaic
21046pattern.<wbr/>  This value is typically used to determine the treatment of
21047the green mosaic channels when demosaicing.<wbr/></p>
21048<p>The green split value can be roughly interpreted as follows:</p>
21049<ul>
21050<li>R &lt; 1.<wbr/>03 is a negligible split (&lt;3% divergence).<wbr/></li>
21051<li>1.<wbr/>20 &lt;= R &gt;= 1.<wbr/>03 will require some software
21052correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
21053<li>R &gt; 1.<wbr/>20 will require strong software correction to produce
21054a usuable image (&gt;20% divergence).<wbr/></li>
21055</ul>
21056            </td>
21057          </tr>
21058
21059          <tr class="entries_header">
21060            <th class="th_details" colspan="5">HAL Implementation Details</th>
21061          </tr>
21062          <tr class="entry_cont">
21063            <td class="entry_details" colspan="5">
21064              <p>The green split given may be a static value based on prior
21065characterization of the camera sensor using the green split
21066calculation method given here over a large,<wbr/> representative,<wbr/> sample
21067set of images.<wbr/>  Other methods of calculation that produce equivalent
21068results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
21069            </td>
21070          </tr>
21071
21072          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21073           <!-- end of entry -->
21074        
21075                
21076          <tr class="entry" id="dynamic_android.sensor.testPatternData">
21077            <td class="entry_name
21078             " rowspan="5">
21079              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
21080            </td>
21081            <td class="entry_type">
21082                <span class="entry_type_name">int32</span>
21083                <span class="entry_type_container">x</span>
21084
21085                <span class="entry_type_array">
21086                  4
21087                </span>
21088              <span class="entry_type_visibility"> [public]</span>
21089
21090
21091
21092
21093
21094
21095            </td> <!-- entry_type -->
21096
21097            <td class="entry_description">
21098              <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
21099when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
21100            </td>
21101
21102            <td class="entry_units">
21103            </td>
21104
21105            <td class="entry_range">
21106            </td>
21107
21108            <td class="entry_tags">
21109            </td>
21110
21111          </tr>
21112          <tr class="entries_header">
21113            <th class="th_details" colspan="5">Details</th>
21114          </tr>
21115          <tr class="entry_cont">
21116            <td class="entry_details" colspan="5">
21117              <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
21118The camera device then uses the most significant X bits
21119that correspond to how many bits are in its Bayer raw sensor
21120output.<wbr/></p>
21121<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
2112210 most significant bits from each color channel.<wbr/></p>
21123            </td>
21124          </tr>
21125
21126          <tr class="entries_header">
21127            <th class="th_details" colspan="5">HAL Implementation Details</th>
21128          </tr>
21129          <tr class="entry_cont">
21130            <td class="entry_details" colspan="5">
21131              
21132            </td>
21133          </tr>
21134
21135          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21136           <!-- end of entry -->
21137        
21138                
21139          <tr class="entry" id="dynamic_android.sensor.testPatternMode">
21140            <td class="entry_name
21141             " rowspan="5">
21142              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
21143            </td>
21144            <td class="entry_type">
21145                <span class="entry_type_name entry_type_name_enum">int32</span>
21146
21147              <span class="entry_type_visibility"> [public]</span>
21148
21149
21150
21151
21152
21153                <ul class="entry_type_enum">
21154                  <li>
21155                    <span class="entry_type_enum_name">OFF</span>
21156                    <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
21157device returns captures from the image sensor.<wbr/></p>
21158<p>This is the default if the key is not set.<wbr/></p></span>
21159                  </li>
21160                  <li>
21161                    <span class="entry_type_enum_name">SOLID_COLOR</span>
21162                    <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
21163respective color channel provided in
21164<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
21165<p>For example:</p>
21166<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
21167</code></pre>
21168<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
21169<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
21170</code></pre>
21171<p>All red pixels are 100% red.<wbr/> Only the odd green pixels
21172are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
21173                  </li>
21174                  <li>
21175                    <span class="entry_type_enum_name">COLOR_BARS</span>
21176                    <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
21177<p>The vertical bars (left-to-right) are as follows:</p>
21178<ul>
21179<li>100% white</li>
21180<li>yellow</li>
21181<li>cyan</li>
21182<li>green</li>
21183<li>magenta</li>
21184<li>red</li>
21185<li>blue</li>
21186<li>black</li>
21187</ul>
21188<p>In general the image would look like the following:</p>
21189<pre><code>W Y C G M R B K
21190W Y C G M R B K
21191W Y C G M R B K
21192W Y C G M R B K
21193W Y C G M R B K
21194.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
21195.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
21196.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
21197
21198(B = Blue,<wbr/> K = Black)
21199</code></pre>
21200<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
21201When this is not possible,<wbr/> the bar size should be rounded
21202down to the nearest integer and the pattern can repeat
21203on the right side.<wbr/></p>
21204<p>Each bar's height must always take up the full sensor
21205pixel array height.<wbr/></p>
21206<p>Each pixel in this test pattern must be set to either
212070% intensity or 100% intensity.<wbr/></p></span>
21208                  </li>
21209                  <li>
21210                    <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
21211                    <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
21212each bar should start at its specified color at the top,<wbr/>
21213and fade to gray at the bottom.<wbr/></p>
21214<p>Furthermore each bar is further subdivided into a left and
21215right half.<wbr/> The left half should have a smooth gradient,<wbr/>
21216and the right half should have a quantized gradient.<wbr/></p>
21217<p>In particular,<wbr/> the right half's should consist of blocks of the
21218same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
21219<p>The least significant bits in the quantized gradient should
21220be copied from the most significant bits of the smooth gradient.<wbr/></p>
21221<p>The height of each bar should always be a multiple of 128.<wbr/>
21222When this is not the case,<wbr/> the pattern should repeat at the bottom
21223of the image.<wbr/></p></span>
21224                  </li>
21225                  <li>
21226                    <span class="entry_type_enum_name">PN9</span>
21227                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
21228generated from a PN9 512-bit sequence (typically implemented
21229in hardware with a linear feedback shift register).<wbr/></p>
21230<p>The generator should be reset at the beginning of each frame,<wbr/>
21231and thus each subsequent raw frame with this test pattern should
21232be exactly the same as the last.<wbr/></p></span>
21233                  </li>
21234                  <li>
21235                    <span class="entry_type_enum_name">CUSTOM1</span>
21236                    <span class="entry_type_enum_value">256</span>
21237                    <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
21238available only on this camera device are at least this numeric
21239value.<wbr/></p>
21240<p>All of the custom test patterns will be static
21241(that is the raw image must not vary from frame to frame).<wbr/></p></span>
21242                  </li>
21243                </ul>
21244
21245            </td> <!-- entry_type -->
21246
21247            <td class="entry_description">
21248              <p>When enabled,<wbr/> the sensor sends a test pattern instead of
21249doing a real exposure from the camera.<wbr/></p>
21250            </td>
21251
21252            <td class="entry_units">
21253            </td>
21254
21255            <td class="entry_range">
21256              <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
21257            </td>
21258
21259            <td class="entry_tags">
21260            </td>
21261
21262          </tr>
21263          <tr class="entries_header">
21264            <th class="th_details" colspan="5">Details</th>
21265          </tr>
21266          <tr class="entry_cont">
21267            <td class="entry_details" colspan="5">
21268              <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
21269by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
21270work as normal.<wbr/></p>
21271<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
21272occur (and that the test pattern remain unmodified,<wbr/> since the flash
21273would not actually affect it).<wbr/></p>
21274<p>Defaults to OFF.<wbr/></p>
21275            </td>
21276          </tr>
21277
21278          <tr class="entries_header">
21279            <th class="th_details" colspan="5">HAL Implementation Details</th>
21280          </tr>
21281          <tr class="entry_cont">
21282            <td class="entry_details" colspan="5">
21283              <p>All test patterns are specified in the Bayer domain.<wbr/></p>
21284<p>The HAL may choose to substitute test patterns from the sensor
21285with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
21286indistinguishable to the ISP whether the data came from the
21287sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
21288            </td>
21289          </tr>
21290
21291          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21292           <!-- end of entry -->
21293        
21294                
21295          <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
21296            <td class="entry_name
21297             " rowspan="5">
21298              android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
21299            </td>
21300            <td class="entry_type">
21301                <span class="entry_type_name">int64</span>
21302
21303              <span class="entry_type_visibility"> [public]</span>
21304
21305
21306              <span class="entry_type_hwlevel">[limited] </span>
21307
21308
21309
21310
21311            </td> <!-- entry_type -->
21312
21313            <td class="entry_description">
21314              <p>Duration between the start of first row exposure
21315and the start of last row exposure.<wbr/></p>
21316            </td>
21317
21318            <td class="entry_units">
21319              Nanoseconds
21320            </td>
21321
21322            <td class="entry_range">
21323              <p>&gt;= 0 and &lt;
21324<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
21325            </td>
21326
21327            <td class="entry_tags">
21328              <ul class="entry_tags">
21329                  <li><a href="#tag_V1">V1</a></li>
21330              </ul>
21331            </td>
21332
21333          </tr>
21334          <tr class="entries_header">
21335            <th class="th_details" colspan="5">Details</th>
21336          </tr>
21337          <tr class="entry_cont">
21338            <td class="entry_details" colspan="5">
21339              <p>This is the exposure time skew between the first and last
21340row exposure start times.<wbr/> The first row and the last row are
21341the first and last rows inside of the
21342<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21343<p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
21344to the frame readout time.<wbr/></p>
21345            </td>
21346          </tr>
21347
21348          <tr class="entries_header">
21349            <th class="th_details" colspan="5">HAL Implementation Details</th>
21350          </tr>
21351          <tr class="entry_cont">
21352            <td class="entry_details" colspan="5">
21353              <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
21354exposure at the same time.<wbr/></p>
21355            </td>
21356          </tr>
21357
21358          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21359           <!-- end of entry -->
21360        
21361                
21362          <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel">
21363            <td class="entry_name
21364             " rowspan="5">
21365              android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level
21366            </td>
21367            <td class="entry_type">
21368                <span class="entry_type_name">float</span>
21369                <span class="entry_type_container">x</span>
21370
21371                <span class="entry_type_array">
21372                  4
21373                </span>
21374              <span class="entry_type_visibility"> [public]</span>
21375
21376
21377
21378
21379                <div class="entry_type_notes">2x2 raw count block</div>
21380
21381
21382            </td> <!-- entry_type -->
21383
21384            <td class="entry_description">
21385              <p>A per-frame dynamic black level offset for each of the color filter
21386arrangement (CFA) mosaic channels.<wbr/></p>
21387            </td>
21388
21389            <td class="entry_units">
21390            </td>
21391
21392            <td class="entry_range">
21393              <p>&gt;= 0 for each.<wbr/></p>
21394            </td>
21395
21396            <td class="entry_tags">
21397              <ul class="entry_tags">
21398                  <li><a href="#tag_RAW">RAW</a></li>
21399              </ul>
21400            </td>
21401
21402          </tr>
21403          <tr class="entries_header">
21404            <th class="th_details" colspan="5">Details</th>
21405          </tr>
21406          <tr class="entry_cont">
21407            <td class="entry_details" colspan="5">
21408              <p>Camera sensor black levels may vary dramatically for different
21409capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black
21410level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too
21411inaccurate to represent the actual value on a per-frame basis.<wbr/> The
21412camera device internal pipeline relies on reliable black level values
21413to process the raw images appropriately.<wbr/> To get the best image
21414quality,<wbr/> the camera device may choose to estimate the per frame black
21415level values either based on optically shielded black regions
21416(<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p>
21417<p>This key reports the camera device estimated per-frame zero light
21418value for each of the CFA mosaic channels in the camera sensor.<wbr/> The
21419<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse
21420approximation of the actual black level values.<wbr/> This value is the
21421black level used in camera device internal image processing pipeline
21422and generally more accurate than the fixed black level values.<wbr/>
21423However,<wbr/> since they are estimated values by the camera device,<wbr/> they
21424may not be as accurate as the black level values calculated from the
21425optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p>
21426<p>The values are given in the same order as channels listed for the CFA
21427layout 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
21428nth value given corresponds to the black level offset for the nth
21429color channel listed in the CFA.<wbr/></p>
21430<p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
21431available or the camera device advertises this key via
21432<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
21433            </td>
21434          </tr>
21435
21436          <tr class="entries_header">
21437            <th class="th_details" colspan="5">HAL Implementation Details</th>
21438          </tr>
21439          <tr class="entry_cont">
21440            <td class="entry_details" colspan="5">
21441              <p>The values are given in row-column scan order,<wbr/> with the first value
21442corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
21443            </td>
21444          </tr>
21445
21446          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21447           <!-- end of entry -->
21448        
21449                
21450          <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel">
21451            <td class="entry_name
21452             " rowspan="5">
21453              android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level
21454            </td>
21455            <td class="entry_type">
21456                <span class="entry_type_name">int32</span>
21457
21458              <span class="entry_type_visibility"> [public]</span>
21459
21460
21461
21462
21463
21464
21465            </td> <!-- entry_type -->
21466
21467            <td class="entry_description">
21468              <p>Maximum raw value output by sensor for this frame.<wbr/></p>
21469            </td>
21470
21471            <td class="entry_units">
21472            </td>
21473
21474            <td class="entry_range">
21475              <p>&gt;= 0</p>
21476            </td>
21477
21478            <td class="entry_tags">
21479              <ul class="entry_tags">
21480                  <li><a href="#tag_RAW">RAW</a></li>
21481              </ul>
21482            </td>
21483
21484          </tr>
21485          <tr class="entries_header">
21486            <th class="th_details" colspan="5">Details</th>
21487          </tr>
21488          <tr class="entry_cont">
21489            <td class="entry_details" colspan="5">
21490              <p>Since the android.<wbr/>sensor.<wbr/>black<wbr/>Level may change for different
21491capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white
21492level will change accordingly.<wbr/> This key is similar to
21493<a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device
21494estimated white level for each frame.<wbr/></p>
21495<p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
21496available or the camera device advertises this key via
21497<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
21498            </td>
21499          </tr>
21500
21501          <tr class="entries_header">
21502            <th class="th_details" colspan="5">HAL Implementation Details</th>
21503          </tr>
21504          <tr class="entry_cont">
21505            <td class="entry_details" colspan="5">
21506              <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
21507so the value for linear sensors should not be significantly lower
21508than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
21509            </td>
21510          </tr>
21511
21512          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21513           <!-- end of entry -->
21514        
21515        
21516
21517      <!-- end of kind -->
21518      </tbody>
21519
21520  <!-- end of section -->
21521  <tr><td colspan="6" id="section_shading" class="section">shading</td></tr>
21522
21523
21524      <tr><td colspan="6" class="kind">controls</td></tr>
21525
21526      <thead class="entries_header">
21527        <tr>
21528          <th class="th_name">Property Name</th>
21529          <th class="th_type">Type</th>
21530          <th class="th_description">Description</th>
21531          <th class="th_units">Units</th>
21532          <th class="th_range">Range</th>
21533          <th class="th_tags">Tags</th>
21534        </tr>
21535      </thead>
21536
21537      <tbody>
21538
21539        
21540
21541        
21542
21543        
21544
21545        
21546
21547                
21548          <tr class="entry" id="controls_android.shading.mode">
21549            <td class="entry_name
21550             " rowspan="3">
21551              android.<wbr/>shading.<wbr/>mode
21552            </td>
21553            <td class="entry_type">
21554                <span class="entry_type_name entry_type_name_enum">byte</span>
21555
21556              <span class="entry_type_visibility"> [public]</span>
21557
21558
21559              <span class="entry_type_hwlevel">[full] </span>
21560
21561
21562
21563                <ul class="entry_type_enum">
21564                  <li>
21565                    <span class="entry_type_enum_name">OFF</span>
21566                    <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
21567                  </li>
21568                  <li>
21569                    <span class="entry_type_enum_name">FAST</span>
21570                    <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
21571frame rate relative to sensor raw output</p></span>
21572                  </li>
21573                  <li>
21574                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
21575                    <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
21576cost of possibly reduced frame rate.<wbr/></p></span>
21577                  </li>
21578                </ul>
21579
21580            </td> <!-- entry_type -->
21581
21582            <td class="entry_description">
21583              <p>Quality of lens shading correction applied
21584to the image data.<wbr/></p>
21585            </td>
21586
21587            <td class="entry_units">
21588            </td>
21589
21590            <td class="entry_range">
21591              <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
21592            </td>
21593
21594            <td class="entry_tags">
21595            </td>
21596
21597          </tr>
21598          <tr class="entries_header">
21599            <th class="th_details" colspan="5">Details</th>
21600          </tr>
21601          <tr class="entry_cont">
21602            <td class="entry_details" colspan="5">
21603              <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
21604camera device,<wbr/> and an identity lens shading map data will be provided
21605if <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
21606shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
21607the 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
21608map shown below:</p>
21609<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/>
21610 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/>
21611 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/>
21612 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/>
21613 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/>
21614 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 ]
21615</code></pre>
21616<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
21617device.<wbr/> Applications can request lens shading map data by setting
21618<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
21619shading 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
21620data will be the one applied by the camera device for this capture request.<wbr/></p>
21621<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
21622the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
21623AWB 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>
21624OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
21625to be converged before using the returned shading map data.<wbr/></p>
21626            </td>
21627          </tr>
21628
21629
21630          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21631           <!-- end of entry -->
21632        
21633                
21634          <tr class="entry" id="controls_android.shading.strength">
21635            <td class="entry_name
21636             " rowspan="1">
21637              android.<wbr/>shading.<wbr/>strength
21638            </td>
21639            <td class="entry_type">
21640                <span class="entry_type_name">byte</span>
21641
21642              <span class="entry_type_visibility"> [system]</span>
21643
21644
21645
21646
21647
21648
21649            </td> <!-- entry_type -->
21650
21651            <td class="entry_description">
21652              <p>Control the amount of shading correction
21653applied to the images</p>
21654            </td>
21655
21656            <td class="entry_units">
21657              unitless: 1-10; 10 is full shading
21658          compensation
21659            </td>
21660
21661            <td class="entry_range">
21662            </td>
21663
21664            <td class="entry_tags">
21665              <ul class="entry_tags">
21666                  <li><a href="#tag_FUTURE">FUTURE</a></li>
21667              </ul>
21668            </td>
21669
21670          </tr>
21671
21672
21673          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21674           <!-- end of entry -->
21675        
21676        
21677
21678      <!-- end of kind -->
21679      </tbody>
21680      <tr><td colspan="6" class="kind">dynamic</td></tr>
21681
21682      <thead class="entries_header">
21683        <tr>
21684          <th class="th_name">Property Name</th>
21685          <th class="th_type">Type</th>
21686          <th class="th_description">Description</th>
21687          <th class="th_units">Units</th>
21688          <th class="th_range">Range</th>
21689          <th class="th_tags">Tags</th>
21690        </tr>
21691      </thead>
21692
21693      <tbody>
21694
21695        
21696
21697        
21698
21699        
21700
21701        
21702
21703                
21704          <tr class="entry" id="dynamic_android.shading.mode">
21705            <td class="entry_name
21706             " rowspan="3">
21707              android.<wbr/>shading.<wbr/>mode
21708            </td>
21709            <td class="entry_type">
21710                <span class="entry_type_name entry_type_name_enum">byte</span>
21711
21712              <span class="entry_type_visibility"> [public]</span>
21713
21714
21715              <span class="entry_type_hwlevel">[full] </span>
21716
21717
21718
21719                <ul class="entry_type_enum">
21720                  <li>
21721                    <span class="entry_type_enum_name">OFF</span>
21722                    <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
21723                  </li>
21724                  <li>
21725                    <span class="entry_type_enum_name">FAST</span>
21726                    <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
21727frame rate relative to sensor raw output</p></span>
21728                  </li>
21729                  <li>
21730                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
21731                    <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
21732cost of possibly reduced frame rate.<wbr/></p></span>
21733                  </li>
21734                </ul>
21735
21736            </td> <!-- entry_type -->
21737
21738            <td class="entry_description">
21739              <p>Quality of lens shading correction applied
21740to the image data.<wbr/></p>
21741            </td>
21742
21743            <td class="entry_units">
21744            </td>
21745
21746            <td class="entry_range">
21747              <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
21748            </td>
21749
21750            <td class="entry_tags">
21751            </td>
21752
21753          </tr>
21754          <tr class="entries_header">
21755            <th class="th_details" colspan="5">Details</th>
21756          </tr>
21757          <tr class="entry_cont">
21758            <td class="entry_details" colspan="5">
21759              <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
21760camera device,<wbr/> and an identity lens shading map data will be provided
21761if <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
21762shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
21763the 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
21764map shown below:</p>
21765<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/>
21766 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/>
21767 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/>
21768 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/>
21769 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/>
21770 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 ]
21771</code></pre>
21772<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
21773device.<wbr/> Applications can request lens shading map data by setting
21774<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
21775shading 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
21776data will be the one applied by the camera device for this capture request.<wbr/></p>
21777<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
21778the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
21779AWB 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>
21780OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
21781to be converged before using the returned shading map data.<wbr/></p>
21782            </td>
21783          </tr>
21784
21785
21786          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21787           <!-- end of entry -->
21788        
21789        
21790
21791      <!-- end of kind -->
21792      </tbody>
21793      <tr><td colspan="6" class="kind">static</td></tr>
21794
21795      <thead class="entries_header">
21796        <tr>
21797          <th class="th_name">Property Name</th>
21798          <th class="th_type">Type</th>
21799          <th class="th_description">Description</th>
21800          <th class="th_units">Units</th>
21801          <th class="th_range">Range</th>
21802          <th class="th_tags">Tags</th>
21803        </tr>
21804      </thead>
21805
21806      <tbody>
21807
21808        
21809
21810        
21811
21812        
21813
21814        
21815
21816                
21817          <tr class="entry" id="static_android.shading.availableModes">
21818            <td class="entry_name
21819             " rowspan="5">
21820              android.<wbr/>shading.<wbr/>available<wbr/>Modes
21821            </td>
21822            <td class="entry_type">
21823                <span class="entry_type_name">byte</span>
21824                <span class="entry_type_container">x</span>
21825
21826                <span class="entry_type_array">
21827                  n
21828                </span>
21829              <span class="entry_type_visibility"> [public as enumList]</span>
21830
21831
21832              <span class="entry_type_hwlevel">[legacy] </span>
21833
21834
21835                <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
21836
21837
21838            </td> <!-- entry_type -->
21839
21840            <td class="entry_description">
21841              <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>
21842            </td>
21843
21844            <td class="entry_units">
21845            </td>
21846
21847            <td class="entry_range">
21848              <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
21849            </td>
21850
21851            <td class="entry_tags">
21852            </td>
21853
21854          </tr>
21855          <tr class="entries_header">
21856            <th class="th_details" colspan="5">Details</th>
21857          </tr>
21858          <tr class="entry_cont">
21859            <td class="entry_details" colspan="5">
21860              <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
21861Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
21862list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
21863LEGACY devices will always only support FAST mode.<wbr/></p>
21864            </td>
21865          </tr>
21866
21867          <tr class="entries_header">
21868            <th class="th_details" colspan="5">HAL Implementation Details</th>
21869          </tr>
21870          <tr class="entry_cont">
21871            <td class="entry_details" colspan="5">
21872              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
21873available on the camera device,<wbr/> but the underlying implementation can be the same for
21874both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
21875slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
21876            </td>
21877          </tr>
21878
21879          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21880           <!-- end of entry -->
21881        
21882        
21883
21884      <!-- end of kind -->
21885      </tbody>
21886
21887  <!-- end of section -->
21888  <tr><td colspan="6" id="section_statistics" class="section">statistics</td></tr>
21889
21890
21891      <tr><td colspan="6" class="kind">controls</td></tr>
21892
21893      <thead class="entries_header">
21894        <tr>
21895          <th class="th_name">Property Name</th>
21896          <th class="th_type">Type</th>
21897          <th class="th_description">Description</th>
21898          <th class="th_units">Units</th>
21899          <th class="th_range">Range</th>
21900          <th class="th_tags">Tags</th>
21901        </tr>
21902      </thead>
21903
21904      <tbody>
21905
21906        
21907
21908        
21909
21910        
21911
21912        
21913
21914                
21915          <tr class="entry" id="controls_android.statistics.faceDetectMode">
21916            <td class="entry_name
21917             " rowspan="5">
21918              android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
21919            </td>
21920            <td class="entry_type">
21921                <span class="entry_type_name entry_type_name_enum">byte</span>
21922
21923              <span class="entry_type_visibility"> [public]</span>
21924
21925
21926              <span class="entry_type_hwlevel">[legacy] </span>
21927
21928
21929
21930                <ul class="entry_type_enum">
21931                  <li>
21932                    <span class="entry_type_enum_name">OFF</span>
21933                    <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
21934results.<wbr/></p></span>
21935                  </li>
21936                  <li>
21937                    <span class="entry_type_enum_name">SIMPLE</span>
21938                    <span class="entry_type_enum_optional">[optional]</span>
21939                    <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
21940                  </li>
21941                  <li>
21942                    <span class="entry_type_enum_name">FULL</span>
21943                    <span class="entry_type_enum_optional">[optional]</span>
21944                    <span class="entry_type_enum_notes"><p>Return all face
21945metadata.<wbr/></p>
21946<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
21947                  </li>
21948                </ul>
21949
21950            </td> <!-- entry_type -->
21951
21952            <td class="entry_description">
21953              <p>Operating mode for the face detector
21954unit.<wbr/></p>
21955            </td>
21956
21957            <td class="entry_units">
21958            </td>
21959
21960            <td class="entry_range">
21961              <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
21962            </td>
21963
21964            <td class="entry_tags">
21965              <ul class="entry_tags">
21966                  <li><a href="#tag_BC">BC</a></li>
21967              </ul>
21968            </td>
21969
21970          </tr>
21971          <tr class="entries_header">
21972            <th class="th_details" colspan="5">Details</th>
21973          </tr>
21974          <tr class="entry_cont">
21975            <td class="entry_details" colspan="5">
21976              <p>Whether face detection is enabled,<wbr/> and whether it
21977should output just the basic fields or the full set of
21978fields.<wbr/></p>
21979            </td>
21980          </tr>
21981
21982          <tr class="entries_header">
21983            <th class="th_details" colspan="5">HAL Implementation Details</th>
21984          </tr>
21985          <tr class="entry_cont">
21986            <td class="entry_details" colspan="5">
21987              <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
21988<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
21989FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
21990<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
21991            </td>
21992          </tr>
21993
21994          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21995           <!-- end of entry -->
21996        
21997                
21998          <tr class="entry" id="controls_android.statistics.histogramMode">
21999            <td class="entry_name
22000             " rowspan="1">
22001              android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
22002            </td>
22003            <td class="entry_type">
22004                <span class="entry_type_name entry_type_name_enum">byte</span>
22005
22006              <span class="entry_type_visibility"> [system as boolean]</span>
22007
22008
22009
22010
22011
22012                <ul class="entry_type_enum">
22013                  <li>
22014                    <span class="entry_type_enum_name">OFF</span>
22015                  </li>
22016                  <li>
22017                    <span class="entry_type_enum_name">ON</span>
22018                  </li>
22019                </ul>
22020
22021            </td> <!-- entry_type -->
22022
22023            <td class="entry_description">
22024              <p>Operating mode for histogram
22025generation</p>
22026            </td>
22027
22028            <td class="entry_units">
22029            </td>
22030
22031            <td class="entry_range">
22032            </td>
22033
22034            <td class="entry_tags">
22035              <ul class="entry_tags">
22036                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22037              </ul>
22038            </td>
22039
22040          </tr>
22041
22042
22043          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22044           <!-- end of entry -->
22045        
22046                
22047          <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
22048            <td class="entry_name
22049             " rowspan="1">
22050              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
22051            </td>
22052            <td class="entry_type">
22053                <span class="entry_type_name entry_type_name_enum">byte</span>
22054
22055              <span class="entry_type_visibility"> [system as boolean]</span>
22056
22057
22058
22059
22060
22061                <ul class="entry_type_enum">
22062                  <li>
22063                    <span class="entry_type_enum_name">OFF</span>
22064                  </li>
22065                  <li>
22066                    <span class="entry_type_enum_name">ON</span>
22067                  </li>
22068                </ul>
22069
22070            </td> <!-- entry_type -->
22071
22072            <td class="entry_description">
22073              <p>Operating mode for sharpness map
22074generation</p>
22075            </td>
22076
22077            <td class="entry_units">
22078            </td>
22079
22080            <td class="entry_range">
22081            </td>
22082
22083            <td class="entry_tags">
22084              <ul class="entry_tags">
22085                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22086              </ul>
22087            </td>
22088
22089          </tr>
22090
22091
22092          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22093           <!-- end of entry -->
22094        
22095                
22096          <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
22097            <td class="entry_name
22098             " rowspan="3">
22099              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
22100            </td>
22101            <td class="entry_type">
22102                <span class="entry_type_name entry_type_name_enum">byte</span>
22103
22104              <span class="entry_type_visibility"> [public as boolean]</span>
22105
22106
22107
22108
22109
22110                <ul class="entry_type_enum">
22111                  <li>
22112                    <span class="entry_type_enum_name">OFF</span>
22113                    <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
22114                  </li>
22115                  <li>
22116                    <span class="entry_type_enum_name">ON</span>
22117                    <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
22118                  </li>
22119                </ul>
22120
22121            </td> <!-- entry_type -->
22122
22123            <td class="entry_description">
22124              <p>Operating mode for hot pixel map generation.<wbr/></p>
22125            </td>
22126
22127            <td class="entry_units">
22128            </td>
22129
22130            <td class="entry_range">
22131              <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>
22132            </td>
22133
22134            <td class="entry_tags">
22135              <ul class="entry_tags">
22136                  <li><a href="#tag_V1">V1</a></li>
22137                  <li><a href="#tag_RAW">RAW</a></li>
22138              </ul>
22139            </td>
22140
22141          </tr>
22142          <tr class="entries_header">
22143            <th class="th_details" colspan="5">Details</th>
22144          </tr>
22145          <tr class="entry_cont">
22146            <td class="entry_details" colspan="5">
22147              <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/>
22148If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
22149            </td>
22150          </tr>
22151
22152
22153          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22154           <!-- end of entry -->
22155        
22156                
22157          <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
22158            <td class="entry_name
22159             " rowspan="3">
22160              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
22161            </td>
22162            <td class="entry_type">
22163                <span class="entry_type_name entry_type_name_enum">byte</span>
22164
22165              <span class="entry_type_visibility"> [public]</span>
22166
22167
22168              <span class="entry_type_hwlevel">[full] </span>
22169
22170
22171
22172                <ul class="entry_type_enum">
22173                  <li>
22174                    <span class="entry_type_enum_name">OFF</span>
22175                    <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
22176                  </li>
22177                  <li>
22178                    <span class="entry_type_enum_name">ON</span>
22179                    <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
22180                  </li>
22181                </ul>
22182
22183            </td> <!-- entry_type -->
22184
22185            <td class="entry_description">
22186              <p>Whether the camera device will output the lens
22187shading map in output result metadata.<wbr/></p>
22188            </td>
22189
22190            <td class="entry_units">
22191            </td>
22192
22193            <td class="entry_range">
22194              <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>
22195            </td>
22196
22197            <td class="entry_tags">
22198              <ul class="entry_tags">
22199                  <li><a href="#tag_RAW">RAW</a></li>
22200              </ul>
22201            </td>
22202
22203          </tr>
22204          <tr class="entries_header">
22205            <th class="th_details" colspan="5">Details</th>
22206          </tr>
22207          <tr class="entry_cont">
22208            <td class="entry_details" colspan="5">
22209              <p>When set to ON,<wbr/>
22210<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
22211the output result metadata.<wbr/></p>
22212<p>ON is always supported on devices with the RAW capability.<wbr/></p>
22213            </td>
22214          </tr>
22215
22216
22217          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22218           <!-- end of entry -->
22219        
22220        
22221
22222      <!-- end of kind -->
22223      </tbody>
22224      <tr><td colspan="6" class="kind">static</td></tr>
22225
22226      <thead class="entries_header">
22227        <tr>
22228          <th class="th_name">Property Name</th>
22229          <th class="th_type">Type</th>
22230          <th class="th_description">Description</th>
22231          <th class="th_units">Units</th>
22232          <th class="th_range">Range</th>
22233          <th class="th_tags">Tags</th>
22234        </tr>
22235      </thead>
22236
22237      <tbody>
22238
22239        
22240
22241        
22242
22243        
22244
22245        
22246                
22247            
22248
22249                
22250          <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
22251            <td class="entry_name
22252             " rowspan="3">
22253              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
22254            </td>
22255            <td class="entry_type">
22256                <span class="entry_type_name">byte</span>
22257                <span class="entry_type_container">x</span>
22258
22259                <span class="entry_type_array">
22260                  n
22261                </span>
22262              <span class="entry_type_visibility"> [public as enumList]</span>
22263
22264
22265              <span class="entry_type_hwlevel">[legacy] </span>
22266
22267
22268                <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
22269
22270
22271            </td> <!-- entry_type -->
22272
22273            <td class="entry_description">
22274              <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
22275supported by this camera device.<wbr/></p>
22276            </td>
22277
22278            <td class="entry_units">
22279            </td>
22280
22281            <td class="entry_range">
22282              <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
22283            </td>
22284
22285            <td class="entry_tags">
22286            </td>
22287
22288          </tr>
22289          <tr class="entries_header">
22290            <th class="th_details" colspan="5">Details</th>
22291          </tr>
22292          <tr class="entry_cont">
22293            <td class="entry_details" colspan="5">
22294              <p>OFF is always supported.<wbr/></p>
22295            </td>
22296          </tr>
22297
22298
22299          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22300           <!-- end of entry -->
22301        
22302                
22303          <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
22304            <td class="entry_name
22305             " rowspan="1">
22306              android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
22307            </td>
22308            <td class="entry_type">
22309                <span class="entry_type_name">int32</span>
22310
22311              <span class="entry_type_visibility"> [system]</span>
22312
22313
22314
22315
22316
22317
22318            </td> <!-- entry_type -->
22319
22320            <td class="entry_description">
22321              <p>Number of histogram buckets
22322supported</p>
22323            </td>
22324
22325            <td class="entry_units">
22326            </td>
22327
22328            <td class="entry_range">
22329              <p>&gt;= 64</p>
22330            </td>
22331
22332            <td class="entry_tags">
22333              <ul class="entry_tags">
22334                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22335              </ul>
22336            </td>
22337
22338          </tr>
22339
22340
22341          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22342           <!-- end of entry -->
22343        
22344                
22345          <tr class="entry" id="static_android.statistics.info.maxFaceCount">
22346            <td class="entry_name
22347             " rowspan="1">
22348              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
22349            </td>
22350            <td class="entry_type">
22351                <span class="entry_type_name">int32</span>
22352
22353              <span class="entry_type_visibility"> [public]</span>
22354
22355
22356              <span class="entry_type_hwlevel">[legacy] </span>
22357
22358
22359
22360
22361            </td> <!-- entry_type -->
22362
22363            <td class="entry_description">
22364              <p>The maximum number of simultaneously detectable
22365faces.<wbr/></p>
22366            </td>
22367
22368            <td class="entry_units">
22369            </td>
22370
22371            <td class="entry_range">
22372              <p>0 for cameras without available face detection; otherwise:
22373<code>&gt;=4</code> for LIMITED or FULL hwlevel devices or
22374<code>&gt;0</code> for LEGACY devices.<wbr/></p>
22375            </td>
22376
22377            <td class="entry_tags">
22378              <ul class="entry_tags">
22379                  <li><a href="#tag_BC">BC</a></li>
22380              </ul>
22381            </td>
22382
22383          </tr>
22384
22385
22386          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22387           <!-- end of entry -->
22388        
22389                
22390          <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
22391            <td class="entry_name
22392             " rowspan="1">
22393              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
22394            </td>
22395            <td class="entry_type">
22396                <span class="entry_type_name">int32</span>
22397
22398              <span class="entry_type_visibility"> [system]</span>
22399
22400
22401
22402
22403
22404
22405            </td> <!-- entry_type -->
22406
22407            <td class="entry_description">
22408              <p>Maximum value possible for a histogram
22409bucket</p>
22410            </td>
22411
22412            <td class="entry_units">
22413            </td>
22414
22415            <td class="entry_range">
22416            </td>
22417
22418            <td class="entry_tags">
22419              <ul class="entry_tags">
22420                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22421              </ul>
22422            </td>
22423
22424          </tr>
22425
22426
22427          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22428           <!-- end of entry -->
22429        
22430                
22431          <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
22432            <td class="entry_name
22433             " rowspan="1">
22434              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
22435            </td>
22436            <td class="entry_type">
22437                <span class="entry_type_name">int32</span>
22438
22439              <span class="entry_type_visibility"> [system]</span>
22440
22441
22442
22443
22444
22445
22446            </td> <!-- entry_type -->
22447
22448            <td class="entry_description">
22449              <p>Maximum value possible for a sharpness map
22450region.<wbr/></p>
22451            </td>
22452
22453            <td class="entry_units">
22454            </td>
22455
22456            <td class="entry_range">
22457            </td>
22458
22459            <td class="entry_tags">
22460              <ul class="entry_tags">
22461                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22462              </ul>
22463            </td>
22464
22465          </tr>
22466
22467
22468          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22469           <!-- end of entry -->
22470        
22471                
22472          <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
22473            <td class="entry_name
22474             " rowspan="1">
22475              android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
22476            </td>
22477            <td class="entry_type">
22478                <span class="entry_type_name">int32</span>
22479                <span class="entry_type_container">x</span>
22480
22481                <span class="entry_type_array">
22482                  2
22483                </span>
22484              <span class="entry_type_visibility"> [system as size]</span>
22485
22486
22487
22488
22489                <div class="entry_type_notes">width x height</div>
22490
22491
22492            </td> <!-- entry_type -->
22493
22494            <td class="entry_description">
22495              <p>Dimensions of the sharpness
22496map</p>
22497            </td>
22498
22499            <td class="entry_units">
22500            </td>
22501
22502            <td class="entry_range">
22503              <p>Must be at least 32 x 32</p>
22504            </td>
22505
22506            <td class="entry_tags">
22507              <ul class="entry_tags">
22508                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22509              </ul>
22510            </td>
22511
22512          </tr>
22513
22514
22515          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22516           <!-- end of entry -->
22517        
22518                
22519          <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
22520            <td class="entry_name
22521             " rowspan="3">
22522              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
22523            </td>
22524            <td class="entry_type">
22525                <span class="entry_type_name">byte</span>
22526                <span class="entry_type_container">x</span>
22527
22528                <span class="entry_type_array">
22529                  n
22530                </span>
22531              <span class="entry_type_visibility"> [public as boolean]</span>
22532
22533
22534
22535
22536                <div class="entry_type_notes">list of enums</div>
22537
22538
22539            </td> <!-- entry_type -->
22540
22541            <td class="entry_description">
22542              <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
22543supported by this camera device.<wbr/></p>
22544            </td>
22545
22546            <td class="entry_units">
22547            </td>
22548
22549            <td class="entry_range">
22550              <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
22551            </td>
22552
22553            <td class="entry_tags">
22554              <ul class="entry_tags">
22555                  <li><a href="#tag_V1">V1</a></li>
22556                  <li><a href="#tag_RAW">RAW</a></li>
22557              </ul>
22558            </td>
22559
22560          </tr>
22561          <tr class="entries_header">
22562            <th class="th_details" colspan="5">Details</th>
22563          </tr>
22564          <tr class="entry_cont">
22565            <td class="entry_details" colspan="5">
22566              <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
22567<code>false</code>.<wbr/></p>
22568<p>ON is always supported on devices with the RAW capability.<wbr/></p>
22569            </td>
22570          </tr>
22571
22572
22573          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22574           <!-- end of entry -->
22575        
22576                
22577          <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
22578            <td class="entry_name
22579             " rowspan="3">
22580              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
22581            </td>
22582            <td class="entry_type">
22583                <span class="entry_type_name">byte</span>
22584                <span class="entry_type_container">x</span>
22585
22586                <span class="entry_type_array">
22587                  n
22588                </span>
22589              <span class="entry_type_visibility"> [public as enumList]</span>
22590
22591
22592
22593
22594                <div class="entry_type_notes">list of enums</div>
22595
22596
22597            </td> <!-- entry_type -->
22598
22599            <td class="entry_description">
22600              <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
22601are supported by this camera device.<wbr/></p>
22602            </td>
22603
22604            <td class="entry_units">
22605            </td>
22606
22607            <td class="entry_range">
22608              <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
22609            </td>
22610
22611            <td class="entry_tags">
22612            </td>
22613
22614          </tr>
22615          <tr class="entries_header">
22616            <th class="th_details" colspan="5">Details</th>
22617          </tr>
22618          <tr class="entry_cont">
22619            <td class="entry_details" colspan="5">
22620              <p>If no lens shading map output is available for this camera device,<wbr/> this key will
22621contain only OFF.<wbr/></p>
22622<p>ON is always supported on devices with the RAW capability.<wbr/>
22623LEGACY mode devices will always only support OFF.<wbr/></p>
22624            </td>
22625          </tr>
22626
22627
22628          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22629           <!-- end of entry -->
22630        
22631        
22632        
22633
22634        
22635
22636      <!-- end of kind -->
22637      </tbody>
22638      <tr><td colspan="6" class="kind">dynamic</td></tr>
22639
22640      <thead class="entries_header">
22641        <tr>
22642          <th class="th_name">Property Name</th>
22643          <th class="th_type">Type</th>
22644          <th class="th_description">Description</th>
22645          <th class="th_units">Units</th>
22646          <th class="th_range">Range</th>
22647          <th class="th_tags">Tags</th>
22648        </tr>
22649      </thead>
22650
22651      <tbody>
22652
22653        
22654
22655        
22656
22657        
22658
22659        
22660
22661                
22662          <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
22663            <td class="entry_name
22664             " rowspan="5">
22665              android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
22666            </td>
22667            <td class="entry_type">
22668                <span class="entry_type_name entry_type_name_enum">byte</span>
22669
22670              <span class="entry_type_visibility"> [public]</span>
22671
22672
22673              <span class="entry_type_hwlevel">[legacy] </span>
22674
22675
22676
22677                <ul class="entry_type_enum">
22678                  <li>
22679                    <span class="entry_type_enum_name">OFF</span>
22680                    <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
22681results.<wbr/></p></span>
22682                  </li>
22683                  <li>
22684                    <span class="entry_type_enum_name">SIMPLE</span>
22685                    <span class="entry_type_enum_optional">[optional]</span>
22686                    <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
22687                  </li>
22688                  <li>
22689                    <span class="entry_type_enum_name">FULL</span>
22690                    <span class="entry_type_enum_optional">[optional]</span>
22691                    <span class="entry_type_enum_notes"><p>Return all face
22692metadata.<wbr/></p>
22693<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
22694                  </li>
22695                </ul>
22696
22697            </td> <!-- entry_type -->
22698
22699            <td class="entry_description">
22700              <p>Operating mode for the face detector
22701unit.<wbr/></p>
22702            </td>
22703
22704            <td class="entry_units">
22705            </td>
22706
22707            <td class="entry_range">
22708              <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
22709            </td>
22710
22711            <td class="entry_tags">
22712              <ul class="entry_tags">
22713                  <li><a href="#tag_BC">BC</a></li>
22714              </ul>
22715            </td>
22716
22717          </tr>
22718          <tr class="entries_header">
22719            <th class="th_details" colspan="5">Details</th>
22720          </tr>
22721          <tr class="entry_cont">
22722            <td class="entry_details" colspan="5">
22723              <p>Whether face detection is enabled,<wbr/> and whether it
22724should output just the basic fields or the full set of
22725fields.<wbr/></p>
22726            </td>
22727          </tr>
22728
22729          <tr class="entries_header">
22730            <th class="th_details" colspan="5">HAL Implementation Details</th>
22731          </tr>
22732          <tr class="entry_cont">
22733            <td class="entry_details" colspan="5">
22734              <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
22735<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
22736FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
22737<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
22738            </td>
22739          </tr>
22740
22741          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22742           <!-- end of entry -->
22743        
22744                
22745          <tr class="entry" id="dynamic_android.statistics.faceIds">
22746            <td class="entry_name
22747             " rowspan="3">
22748              android.<wbr/>statistics.<wbr/>face<wbr/>Ids
22749            </td>
22750            <td class="entry_type">
22751                <span class="entry_type_name">int32</span>
22752                <span class="entry_type_container">x</span>
22753
22754                <span class="entry_type_array">
22755                  n
22756                </span>
22757              <span class="entry_type_visibility"> [hidden]</span>
22758
22759
22760              <span class="entry_type_hwlevel">[legacy] </span>
22761
22762
22763
22764
22765            </td> <!-- entry_type -->
22766
22767            <td class="entry_description">
22768              <p>List of unique IDs for detected faces.<wbr/></p>
22769            </td>
22770
22771            <td class="entry_units">
22772            </td>
22773
22774            <td class="entry_range">
22775            </td>
22776
22777            <td class="entry_tags">
22778              <ul class="entry_tags">
22779                  <li><a href="#tag_BC">BC</a></li>
22780              </ul>
22781            </td>
22782
22783          </tr>
22784          <tr class="entries_header">
22785            <th class="th_details" colspan="5">Details</th>
22786          </tr>
22787          <tr class="entry_cont">
22788            <td class="entry_details" colspan="5">
22789              <p>Each detected face is given a unique ID that is valid for as long as the face is visible
22790to the camera device.<wbr/>  A face that leaves the field of view and later returns may be
22791assigned a new ID.<wbr/></p>
22792<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
22793            </td>
22794          </tr>
22795
22796
22797          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22798           <!-- end of entry -->
22799        
22800                
22801          <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
22802            <td class="entry_name
22803             " rowspan="3">
22804              android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
22805            </td>
22806            <td class="entry_type">
22807                <span class="entry_type_name">int32</span>
22808                <span class="entry_type_container">x</span>
22809
22810                <span class="entry_type_array">
22811                  n x 6
22812                </span>
22813              <span class="entry_type_visibility"> [hidden]</span>
22814
22815
22816              <span class="entry_type_hwlevel">[legacy] </span>
22817
22818
22819                <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
22820
22821
22822            </td> <!-- entry_type -->
22823
22824            <td class="entry_description">
22825              <p>List of landmarks for detected
22826faces.<wbr/></p>
22827            </td>
22828
22829            <td class="entry_units">
22830            </td>
22831
22832            <td class="entry_range">
22833            </td>
22834
22835            <td class="entry_tags">
22836              <ul class="entry_tags">
22837                  <li><a href="#tag_BC">BC</a></li>
22838              </ul>
22839            </td>
22840
22841          </tr>
22842          <tr class="entries_header">
22843            <th class="th_details" colspan="5">Details</th>
22844          </tr>
22845          <tr class="entry_cont">
22846            <td class="entry_details" colspan="5">
22847              <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
22848<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
22849<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
22850            </td>
22851          </tr>
22852
22853
22854          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22855           <!-- end of entry -->
22856        
22857                
22858          <tr class="entry" id="dynamic_android.statistics.faceRectangles">
22859            <td class="entry_name
22860             " rowspan="3">
22861              android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
22862            </td>
22863            <td class="entry_type">
22864                <span class="entry_type_name">int32</span>
22865                <span class="entry_type_container">x</span>
22866
22867                <span class="entry_type_array">
22868                  n x 4
22869                </span>
22870              <span class="entry_type_visibility"> [hidden as rectangle]</span>
22871
22872
22873              <span class="entry_type_hwlevel">[legacy] </span>
22874
22875
22876                <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
22877
22878
22879            </td> <!-- entry_type -->
22880
22881            <td class="entry_description">
22882              <p>List of the bounding rectangles for detected
22883faces.<wbr/></p>
22884            </td>
22885
22886            <td class="entry_units">
22887            </td>
22888
22889            <td class="entry_range">
22890            </td>
22891
22892            <td class="entry_tags">
22893              <ul class="entry_tags">
22894                  <li><a href="#tag_BC">BC</a></li>
22895              </ul>
22896            </td>
22897
22898          </tr>
22899          <tr class="entries_header">
22900            <th class="th_details" colspan="5">Details</th>
22901          </tr>
22902          <tr class="entry_cont">
22903            <td class="entry_details" colspan="5">
22904              <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
22905<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
22906<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
22907            </td>
22908          </tr>
22909
22910
22911          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22912           <!-- end of entry -->
22913        
22914                
22915          <tr class="entry" id="dynamic_android.statistics.faceScores">
22916            <td class="entry_name
22917             " rowspan="5">
22918              android.<wbr/>statistics.<wbr/>face<wbr/>Scores
22919            </td>
22920            <td class="entry_type">
22921                <span class="entry_type_name">byte</span>
22922                <span class="entry_type_container">x</span>
22923
22924                <span class="entry_type_array">
22925                  n
22926                </span>
22927              <span class="entry_type_visibility"> [hidden]</span>
22928
22929
22930              <span class="entry_type_hwlevel">[legacy] </span>
22931
22932
22933
22934
22935            </td> <!-- entry_type -->
22936
22937            <td class="entry_description">
22938              <p>List of the face confidence scores for
22939detected faces</p>
22940            </td>
22941
22942            <td class="entry_units">
22943            </td>
22944
22945            <td class="entry_range">
22946              <p>1-100</p>
22947            </td>
22948
22949            <td class="entry_tags">
22950              <ul class="entry_tags">
22951                  <li><a href="#tag_BC">BC</a></li>
22952              </ul>
22953            </td>
22954
22955          </tr>
22956          <tr class="entries_header">
22957            <th class="th_details" colspan="5">Details</th>
22958          </tr>
22959          <tr class="entry_cont">
22960            <td class="entry_details" colspan="5">
22961              <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
22962            </td>
22963          </tr>
22964
22965          <tr class="entries_header">
22966            <th class="th_details" colspan="5">HAL Implementation Details</th>
22967          </tr>
22968          <tr class="entry_cont">
22969            <td class="entry_details" colspan="5">
22970              <p>The value should be meaningful (for example,<wbr/> setting 100 at
22971all times is illegal).<wbr/></p>
22972            </td>
22973          </tr>
22974
22975          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22976           <!-- end of entry -->
22977        
22978                
22979          <tr class="entry" id="dynamic_android.statistics.faces">
22980            <td class="entry_name
22981             " rowspan="3">
22982              android.<wbr/>statistics.<wbr/>faces
22983            </td>
22984            <td class="entry_type">
22985                <span class="entry_type_name">int32</span>
22986                <span class="entry_type_container">x</span>
22987
22988                <span class="entry_type_array">
22989                  n
22990                </span>
22991              <span class="entry_type_visibility"> [public as face]</span>
22992
22993              <span class="entry_type_synthetic">[synthetic] </span>
22994
22995              <span class="entry_type_hwlevel">[legacy] </span>
22996
22997
22998
22999
23000            </td> <!-- entry_type -->
23001
23002            <td class="entry_description">
23003              <p>List of the faces detected through camera face detection
23004in this capture.<wbr/></p>
23005            </td>
23006
23007            <td class="entry_units">
23008            </td>
23009
23010            <td class="entry_range">
23011            </td>
23012
23013            <td class="entry_tags">
23014            </td>
23015
23016          </tr>
23017          <tr class="entries_header">
23018            <th class="th_details" colspan="5">Details</th>
23019          </tr>
23020          <tr class="entry_cont">
23021            <td class="entry_details" colspan="5">
23022              <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>
23023            </td>
23024          </tr>
23025
23026
23027          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23028           <!-- end of entry -->
23029        
23030                
23031          <tr class="entry" id="dynamic_android.statistics.histogram">
23032            <td class="entry_name
23033             " rowspan="3">
23034              android.<wbr/>statistics.<wbr/>histogram
23035            </td>
23036            <td class="entry_type">
23037                <span class="entry_type_name">int32</span>
23038                <span class="entry_type_container">x</span>
23039
23040                <span class="entry_type_array">
23041                  n x 3
23042                </span>
23043              <span class="entry_type_visibility"> [system]</span>
23044
23045
23046
23047
23048                <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>
23049
23050
23051            </td> <!-- entry_type -->
23052
23053            <td class="entry_description">
23054              <p>A 3-channel histogram based on the raw
23055sensor data</p>
23056            </td>
23057
23058            <td class="entry_units">
23059            </td>
23060
23061            <td class="entry_range">
23062            </td>
23063
23064            <td class="entry_tags">
23065              <ul class="entry_tags">
23066                  <li><a href="#tag_FUTURE">FUTURE</a></li>
23067              </ul>
23068            </td>
23069
23070          </tr>
23071          <tr class="entries_header">
23072            <th class="th_details" colspan="5">Details</th>
23073          </tr>
23074          <tr class="entry_cont">
23075            <td class="entry_details" colspan="5">
23076              <p>The k'th bucket (0-based) covers the input range
23077(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/>
23078(k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
23079supported,<wbr/> all channels should have the same data</p>
23080            </td>
23081          </tr>
23082
23083
23084          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23085           <!-- end of entry -->
23086        
23087                
23088          <tr class="entry" id="dynamic_android.statistics.histogramMode">
23089            <td class="entry_name
23090             " rowspan="1">
23091              android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
23092            </td>
23093            <td class="entry_type">
23094                <span class="entry_type_name entry_type_name_enum">byte</span>
23095
23096              <span class="entry_type_visibility"> [system as boolean]</span>
23097
23098
23099
23100
23101
23102                <ul class="entry_type_enum">
23103                  <li>
23104                    <span class="entry_type_enum_name">OFF</span>
23105                  </li>
23106                  <li>
23107                    <span class="entry_type_enum_name">ON</span>
23108                  </li>
23109                </ul>
23110
23111            </td> <!-- entry_type -->
23112
23113            <td class="entry_description">
23114              <p>Operating mode for histogram
23115generation</p>
23116            </td>
23117
23118            <td class="entry_units">
23119            </td>
23120
23121            <td class="entry_range">
23122            </td>
23123
23124            <td class="entry_tags">
23125              <ul class="entry_tags">
23126                  <li><a href="#tag_FUTURE">FUTURE</a></li>
23127              </ul>
23128            </td>
23129
23130          </tr>
23131
23132
23133          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23134           <!-- end of entry -->
23135        
23136                
23137          <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
23138            <td class="entry_name
23139             " rowspan="3">
23140              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
23141            </td>
23142            <td class="entry_type">
23143                <span class="entry_type_name">int32</span>
23144                <span class="entry_type_container">x</span>
23145
23146                <span class="entry_type_array">
23147                  n x m x 3
23148                </span>
23149              <span class="entry_type_visibility"> [system]</span>
23150
23151
23152
23153
23154                <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>
23155
23156
23157            </td> <!-- entry_type -->
23158
23159            <td class="entry_description">
23160              <p>A 3-channel sharpness map,<wbr/> based on the raw
23161sensor data</p>
23162            </td>
23163
23164            <td class="entry_units">
23165            </td>
23166
23167            <td class="entry_range">
23168            </td>
23169
23170            <td class="entry_tags">
23171              <ul class="entry_tags">
23172                  <li><a href="#tag_FUTURE">FUTURE</a></li>
23173              </ul>
23174            </td>
23175
23176          </tr>
23177          <tr class="entries_header">
23178            <th class="th_details" colspan="5">Details</th>
23179          </tr>
23180          <tr class="entry_cont">
23181            <td class="entry_details" colspan="5">
23182              <p>If only a monochrome sharpness map is supported,<wbr/>
23183all channels should have the same data</p>
23184            </td>
23185          </tr>
23186
23187
23188          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23189           <!-- end of entry -->
23190        
23191                
23192          <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
23193            <td class="entry_name
23194             " rowspan="1">
23195              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
23196            </td>
23197            <td class="entry_type">
23198                <span class="entry_type_name entry_type_name_enum">byte</span>
23199
23200              <span class="entry_type_visibility"> [system as boolean]</span>
23201
23202
23203
23204
23205
23206                <ul class="entry_type_enum">
23207                  <li>
23208                    <span class="entry_type_enum_name">OFF</span>
23209                  </li>
23210                  <li>
23211                    <span class="entry_type_enum_name">ON</span>
23212                  </li>
23213                </ul>
23214
23215            </td> <!-- entry_type -->
23216
23217            <td class="entry_description">
23218              <p>Operating mode for sharpness map
23219generation</p>
23220            </td>
23221
23222            <td class="entry_units">
23223            </td>
23224
23225            <td class="entry_range">
23226            </td>
23227
23228            <td class="entry_tags">
23229              <ul class="entry_tags">
23230                  <li><a href="#tag_FUTURE">FUTURE</a></li>
23231              </ul>
23232            </td>
23233
23234          </tr>
23235
23236
23237          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23238           <!-- end of entry -->
23239        
23240                
23241          <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
23242            <td class="entry_name
23243             " rowspan="3">
23244              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
23245            </td>
23246            <td class="entry_type">
23247                <span class="entry_type_name">byte</span>
23248
23249              <span class="entry_type_visibility"> [public as lensShadingMap]</span>
23250
23251
23252              <span class="entry_type_hwlevel">[full] </span>
23253
23254
23255
23256
23257            </td> <!-- entry_type -->
23258
23259            <td class="entry_description">
23260              <p>The shading map is a low-resolution floating-point map
23261that lists the coefficients used to correct for vignetting,<wbr/> for each
23262Bayer color channel.<wbr/></p>
23263            </td>
23264
23265            <td class="entry_units">
23266            </td>
23267
23268            <td class="entry_range">
23269              <p>Each gain factor is &gt;= 1</p>
23270            </td>
23271
23272            <td class="entry_tags">
23273            </td>
23274
23275          </tr>
23276          <tr class="entries_header">
23277            <th class="th_details" colspan="5">Details</th>
23278          </tr>
23279          <tr class="entry_cont">
23280            <td class="entry_details" colspan="5">
23281              <p>The least shaded section of the image should have a gain factor
23282of 1; all other sections should have gains above 1.<wbr/></p>
23283<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
23284must take into account the colorCorrection settings.<wbr/></p>
23285<p>The shading map is for the entire active pixel array,<wbr/> and is not
23286affected by the crop region specified in the request.<wbr/> Each shading map
23287entry is the value of the shading compensation map over a specific
23288pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
23289map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
23290(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
23291pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
23292The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
23293<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
23294channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
23295The shading map is stored in a fully interleaved format.<wbr/></p>
23296<p>The shading map should have on the order of 30-40 rows and columns,<wbr/>
23297and must be smaller than 64x64.<wbr/></p>
23298<p>As an example,<wbr/> given a very small map defined as:</p>
23299<pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
23300values =
23301[ 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/>
23302    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/>
23303  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/>
23304    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/>
23305  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/>
23306    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 ]
23307</code></pre>
23308<p>The low-resolution scaling map images for each channel are
23309(displayed using nearest-neighbor interpolation):</p>
23310<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
23311<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
23312<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
23313<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
23314<p>As a visualization only,<wbr/> inverting the full-color map to recover an
23315image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
23316<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
23317            </td>
23318          </tr>
23319
23320
23321          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23322           <!-- end of entry -->
23323        
23324                
23325          <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
23326            <td class="entry_name
23327             " rowspan="5">
23328              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
23329            </td>
23330            <td class="entry_type">
23331                <span class="entry_type_name">float</span>
23332                <span class="entry_type_container">x</span>
23333
23334                <span class="entry_type_array">
23335                  4 x n x m
23336                </span>
23337              <span class="entry_type_visibility"> [hidden]</span>
23338
23339
23340              <span class="entry_type_hwlevel">[full] </span>
23341
23342
23343                <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
23344
23345
23346            </td> <!-- entry_type -->
23347
23348            <td class="entry_description">
23349              <p>The shading map is a low-resolution floating-point map
23350that lists the coefficients used to correct for vignetting,<wbr/> for each
23351Bayer color channel of RAW image data.<wbr/></p>
23352            </td>
23353
23354            <td class="entry_units">
23355            </td>
23356
23357            <td class="entry_range">
23358              <p>Each gain factor is &gt;= 1</p>
23359            </td>
23360
23361            <td class="entry_tags">
23362            </td>
23363
23364          </tr>
23365          <tr class="entries_header">
23366            <th class="th_details" colspan="5">Details</th>
23367          </tr>
23368          <tr class="entry_cont">
23369            <td class="entry_details" colspan="5">
23370              <p>The least shaded section of the image should have a gain factor
23371of 1; all other sections should have gains above 1.<wbr/></p>
23372<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
23373must take into account the colorCorrection settings.<wbr/></p>
23374<p>The shading map is for the entire active pixel array,<wbr/> and is not
23375affected by the crop region specified in the request.<wbr/> Each shading map
23376entry is the value of the shading compensation map over a specific
23377pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
23378map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
23379(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
23380pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
23381The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
23382<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
23383channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
23384The shading map is stored in a fully interleaved format,<wbr/> and its size
23385is 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>
23386<p>The shading map should have on the order of 30-40 rows and columns,<wbr/>
23387and must be smaller than 64x64.<wbr/></p>
23388<p>As an example,<wbr/> given a very small map defined as:</p>
23389<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
23390<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
23391[ 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/>
23392    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/>
23393  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/>
23394    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/>
23395  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/>
23396    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 ]
23397</code></pre>
23398<p>The low-resolution scaling map images for each channel are
23399(displayed using nearest-neighbor interpolation):</p>
23400<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
23401<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
23402<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
23403<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
23404<p>As a visualization only,<wbr/> inverting the full-color map to recover an
23405image of a gray wall (using bicubic interpolation for visual quality)
23406as captured by the sensor gives:</p>
23407<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
23408<p>Note that the RAW image data might be subject to lens shading
23409correction not reported on this map.<wbr/> Query
23410<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
23411to lens shading correction.<wbr/> If <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a>
23412is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
23413correction.<wbr/> In the case full lens shading correction is applied to RAW
23414images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
23415In other words,<wbr/> the map reported in this key is the remaining lens shading
23416that needs to be applied on the RAW image to get images without lens shading
23417artifacts.<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
23418formats.<wbr/></p>
23419            </td>
23420          </tr>
23421
23422          <tr class="entries_header">
23423            <th class="th_details" colspan="5">HAL Implementation Details</th>
23424          </tr>
23425          <tr class="entry_cont">
23426            <td class="entry_details" colspan="5">
23427              <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
23428When AE and AWB are in AUTO modes
23429(<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
23430may have all the information it need to generate most accurate lens shading map.<wbr/> When
23431AE or AWB are in manual mode
23432(<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
23433may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
23434generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
23435the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
23436            </td>
23437          </tr>
23438
23439          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23440           <!-- end of entry -->
23441        
23442                
23443          <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
23444            <td class="entry_name
23445                entry_name_deprecated
23446             " rowspan="3">
23447              android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
23448            </td>
23449            <td class="entry_type">
23450                <span class="entry_type_name">float</span>
23451                <span class="entry_type_container">x</span>
23452
23453                <span class="entry_type_array">
23454                  4
23455                </span>
23456              <span class="entry_type_visibility"> [hidden]</span>
23457
23458
23459
23460              <span class="entry_type_deprecated">[deprecated] </span>
23461
23462                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
23463
23464
23465            </td> <!-- entry_type -->
23466
23467            <td class="entry_description">
23468              <p>The best-fit color channel gains calculated
23469by the camera device's statistics units for the current output frame.<wbr/></p>
23470            </td>
23471
23472            <td class="entry_units">
23473            </td>
23474
23475            <td class="entry_range">
23476              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
23477            </td>
23478
23479            <td class="entry_tags">
23480            </td>
23481
23482          </tr>
23483          <tr class="entries_header">
23484            <th class="th_details" colspan="5">Details</th>
23485          </tr>
23486          <tr class="entry_cont">
23487            <td class="entry_details" colspan="5">
23488              <p>This may be different than the gains used for this frame,<wbr/>
23489since statistics processing on data from a new frame
23490typically completes after the transform has already been
23491applied to that frame.<wbr/></p>
23492<p>The 4 channel gains are defined in Bayer domain,<wbr/>
23493see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
23494<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
23495regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
23496            </td>
23497          </tr>
23498
23499
23500          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23501           <!-- end of entry -->
23502        
23503                
23504          <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
23505            <td class="entry_name
23506                entry_name_deprecated
23507             " rowspan="3">
23508              android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
23509            </td>
23510            <td class="entry_type">
23511                <span class="entry_type_name">rational</span>
23512                <span class="entry_type_container">x</span>
23513
23514                <span class="entry_type_array">
23515                  3 x 3
23516                </span>
23517              <span class="entry_type_visibility"> [hidden]</span>
23518
23519
23520
23521              <span class="entry_type_deprecated">[deprecated] </span>
23522
23523                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
23524
23525
23526            </td> <!-- entry_type -->
23527
23528            <td class="entry_description">
23529              <p>The best-fit color transform matrix estimate
23530calculated by the camera device's statistics units for the current
23531output frame.<wbr/></p>
23532            </td>
23533
23534            <td class="entry_units">
23535            </td>
23536
23537            <td class="entry_range">
23538              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
23539            </td>
23540
23541            <td class="entry_tags">
23542            </td>
23543
23544          </tr>
23545          <tr class="entries_header">
23546            <th class="th_details" colspan="5">Details</th>
23547          </tr>
23548          <tr class="entry_cont">
23549            <td class="entry_details" colspan="5">
23550              <p>The camera device will provide the estimate from its
23551statistics unit on the white balance transforms to use
23552for the next frame.<wbr/> These are the values the camera device believes
23553are the best fit for the current output frame.<wbr/> This may
23554be different than the transform used for this frame,<wbr/> since
23555statistics processing on data from a new frame typically
23556completes after the transform has already been applied to
23557that frame.<wbr/></p>
23558<p>These estimates must be provided for all frames,<wbr/> even if
23559capture settings and color transforms are set by the application.<wbr/></p>
23560<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
23561regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
23562            </td>
23563          </tr>
23564
23565
23566          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23567           <!-- end of entry -->
23568        
23569                
23570          <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
23571            <td class="entry_name
23572             " rowspan="3">
23573              android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
23574            </td>
23575            <td class="entry_type">
23576                <span class="entry_type_name entry_type_name_enum">byte</span>
23577
23578              <span class="entry_type_visibility"> [public]</span>
23579
23580
23581              <span class="entry_type_hwlevel">[full] </span>
23582
23583
23584
23585                <ul class="entry_type_enum">
23586                  <li>
23587                    <span class="entry_type_enum_name">NONE</span>
23588                    <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
23589in the current scene.<wbr/></p></span>
23590                  </li>
23591                  <li>
23592                    <span class="entry_type_enum_name">50HZ</span>
23593                    <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
23594in the current scene.<wbr/></p></span>
23595                  </li>
23596                  <li>
23597                    <span class="entry_type_enum_name">60HZ</span>
23598                    <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
23599in the current scene.<wbr/></p></span>
23600                  </li>
23601                </ul>
23602
23603            </td> <!-- entry_type -->
23604
23605            <td class="entry_description">
23606              <p>The camera device estimated scene illumination lighting
23607frequency.<wbr/></p>
23608            </td>
23609
23610            <td class="entry_units">
23611            </td>
23612
23613            <td class="entry_range">
23614            </td>
23615
23616            <td class="entry_tags">
23617            </td>
23618
23619          </tr>
23620          <tr class="entries_header">
23621            <th class="th_details" colspan="5">Details</th>
23622          </tr>
23623          <tr class="entry_cont">
23624            <td class="entry_details" colspan="5">
23625              <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
23626that depends on the local utility power standards.<wbr/> This flicker must be
23627accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
23628The camera device uses this entry to tell the application what the scene
23629illuminant frequency is.<wbr/></p>
23630<p>When manual exposure control is enabled
23631(<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> ==
23632OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
23633antibanding,<wbr/> and the application can ensure it selects
23634exposure times that do not cause banding issues by looking
23635into this metadata field.<wbr/> See
23636<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
23637<p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
23638            </td>
23639          </tr>
23640
23641
23642          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23643           <!-- end of entry -->
23644        
23645                
23646          <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
23647            <td class="entry_name
23648             " rowspan="3">
23649              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
23650            </td>
23651            <td class="entry_type">
23652                <span class="entry_type_name entry_type_name_enum">byte</span>
23653
23654              <span class="entry_type_visibility"> [public as boolean]</span>
23655
23656
23657
23658
23659
23660                <ul class="entry_type_enum">
23661                  <li>
23662                    <span class="entry_type_enum_name">OFF</span>
23663                    <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
23664                  </li>
23665                  <li>
23666                    <span class="entry_type_enum_name">ON</span>
23667                    <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
23668                  </li>
23669                </ul>
23670
23671            </td> <!-- entry_type -->
23672
23673            <td class="entry_description">
23674              <p>Operating mode for hot pixel map generation.<wbr/></p>
23675            </td>
23676
23677            <td class="entry_units">
23678            </td>
23679
23680            <td class="entry_range">
23681              <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>
23682            </td>
23683
23684            <td class="entry_tags">
23685              <ul class="entry_tags">
23686                  <li><a href="#tag_V1">V1</a></li>
23687                  <li><a href="#tag_RAW">RAW</a></li>
23688              </ul>
23689            </td>
23690
23691          </tr>
23692          <tr class="entries_header">
23693            <th class="th_details" colspan="5">Details</th>
23694          </tr>
23695          <tr class="entry_cont">
23696            <td class="entry_details" colspan="5">
23697              <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/>
23698If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
23699            </td>
23700          </tr>
23701
23702
23703          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23704           <!-- end of entry -->
23705        
23706                
23707          <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
23708            <td class="entry_name
23709             " rowspan="5">
23710              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
23711            </td>
23712            <td class="entry_type">
23713                <span class="entry_type_name">int32</span>
23714                <span class="entry_type_container">x</span>
23715
23716                <span class="entry_type_array">
23717                  2 x n
23718                </span>
23719              <span class="entry_type_visibility"> [public as point]</span>
23720
23721
23722
23723
23724                <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
23725
23726
23727            </td> <!-- entry_type -->
23728
23729            <td class="entry_description">
23730              <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
23731            </td>
23732
23733            <td class="entry_units">
23734            </td>
23735
23736            <td class="entry_range">
23737              <p>n &lt;= number of pixels on the sensor.<wbr/>
23738The <code>(x,<wbr/> y)</code> coordinates must be bounded by
23739<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
23740            </td>
23741
23742            <td class="entry_tags">
23743              <ul class="entry_tags">
23744                  <li><a href="#tag_V1">V1</a></li>
23745                  <li><a href="#tag_RAW">RAW</a></li>
23746              </ul>
23747            </td>
23748
23749          </tr>
23750          <tr class="entries_header">
23751            <th class="th_details" colspan="5">Details</th>
23752          </tr>
23753          <tr class="entry_cont">
23754            <td class="entry_details" colspan="5">
23755              <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
23756<code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
23757bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
23758height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/>
23759This may include hot pixels that lie outside of the active array
23760bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
23761            </td>
23762          </tr>
23763
23764          <tr class="entries_header">
23765            <th class="th_details" colspan="5">HAL Implementation Details</th>
23766          </tr>
23767          <tr class="entry_cont">
23768            <td class="entry_details" colspan="5">
23769              <p>A hotpixel map contains the coordinates of pixels on the camera
23770sensor that do report valid values (usually due to defects in
23771the camera sensor).<wbr/> This includes pixels that are stuck at certain
23772values,<wbr/> or have a response that does not accuractly encode the
23773incoming light from the scene.<wbr/></p>
23774<p>To avoid performance issues,<wbr/> there should be significantly fewer hot
23775pixels than actual pixels on the camera sensor.<wbr/></p>
23776            </td>
23777          </tr>
23778
23779          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23780           <!-- end of entry -->
23781        
23782                
23783          <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
23784            <td class="entry_name
23785             " rowspan="3">
23786              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
23787            </td>
23788            <td class="entry_type">
23789                <span class="entry_type_name entry_type_name_enum">byte</span>
23790
23791              <span class="entry_type_visibility"> [public]</span>
23792
23793
23794              <span class="entry_type_hwlevel">[full] </span>
23795
23796
23797
23798                <ul class="entry_type_enum">
23799                  <li>
23800                    <span class="entry_type_enum_name">OFF</span>
23801                    <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
23802                  </li>
23803                  <li>
23804                    <span class="entry_type_enum_name">ON</span>
23805                    <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
23806                  </li>
23807                </ul>
23808
23809            </td> <!-- entry_type -->
23810
23811            <td class="entry_description">
23812              <p>Whether the camera device will output the lens
23813shading map in output result metadata.<wbr/></p>
23814            </td>
23815
23816            <td class="entry_units">
23817            </td>
23818
23819            <td class="entry_range">
23820              <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>
23821            </td>
23822
23823            <td class="entry_tags">
23824              <ul class="entry_tags">
23825                  <li><a href="#tag_RAW">RAW</a></li>
23826              </ul>
23827            </td>
23828
23829          </tr>
23830          <tr class="entries_header">
23831            <th class="th_details" colspan="5">Details</th>
23832          </tr>
23833          <tr class="entry_cont">
23834            <td class="entry_details" colspan="5">
23835              <p>When set to ON,<wbr/>
23836<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
23837the output result metadata.<wbr/></p>
23838<p>ON is always supported on devices with the RAW capability.<wbr/></p>
23839            </td>
23840          </tr>
23841
23842
23843          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23844           <!-- end of entry -->
23845        
23846        
23847
23848      <!-- end of kind -->
23849      </tbody>
23850
23851  <!-- end of section -->
23852  <tr><td colspan="6" id="section_tonemap" class="section">tonemap</td></tr>
23853
23854
23855      <tr><td colspan="6" class="kind">controls</td></tr>
23856
23857      <thead class="entries_header">
23858        <tr>
23859          <th class="th_name">Property Name</th>
23860          <th class="th_type">Type</th>
23861          <th class="th_description">Description</th>
23862          <th class="th_units">Units</th>
23863          <th class="th_range">Range</th>
23864          <th class="th_tags">Tags</th>
23865        </tr>
23866      </thead>
23867
23868      <tbody>
23869
23870        
23871
23872        
23873
23874        
23875
23876        
23877
23878                
23879          <tr class="entry" id="controls_android.tonemap.curveBlue">
23880            <td class="entry_name
23881             " rowspan="3">
23882              android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
23883            </td>
23884            <td class="entry_type">
23885                <span class="entry_type_name">float</span>
23886                <span class="entry_type_container">x</span>
23887
23888                <span class="entry_type_array">
23889                  n x 2
23890                </span>
23891              <span class="entry_type_visibility"> [hidden]</span>
23892
23893
23894              <span class="entry_type_hwlevel">[full] </span>
23895
23896
23897                <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>
23898
23899
23900            </td> <!-- entry_type -->
23901
23902            <td class="entry_description">
23903              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
23904channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23905CONTRAST_<wbr/>CURVE.<wbr/></p>
23906            </td>
23907
23908            <td class="entry_units">
23909            </td>
23910
23911            <td class="entry_range">
23912            </td>
23913
23914            <td class="entry_tags">
23915            </td>
23916
23917          </tr>
23918          <tr class="entries_header">
23919            <th class="th_details" colspan="5">Details</th>
23920          </tr>
23921          <tr class="entry_cont">
23922            <td class="entry_details" colspan="5">
23923              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
23924            </td>
23925          </tr>
23926
23927
23928          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23929           <!-- end of entry -->
23930        
23931                
23932          <tr class="entry" id="controls_android.tonemap.curveGreen">
23933            <td class="entry_name
23934             " rowspan="3">
23935              android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
23936            </td>
23937            <td class="entry_type">
23938                <span class="entry_type_name">float</span>
23939                <span class="entry_type_container">x</span>
23940
23941                <span class="entry_type_array">
23942                  n x 2
23943                </span>
23944              <span class="entry_type_visibility"> [hidden]</span>
23945
23946
23947              <span class="entry_type_hwlevel">[full] </span>
23948
23949
23950                <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>
23951
23952
23953            </td> <!-- entry_type -->
23954
23955            <td class="entry_description">
23956              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
23957channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23958CONTRAST_<wbr/>CURVE.<wbr/></p>
23959            </td>
23960
23961            <td class="entry_units">
23962            </td>
23963
23964            <td class="entry_range">
23965            </td>
23966
23967            <td class="entry_tags">
23968            </td>
23969
23970          </tr>
23971          <tr class="entries_header">
23972            <th class="th_details" colspan="5">Details</th>
23973          </tr>
23974          <tr class="entry_cont">
23975            <td class="entry_details" colspan="5">
23976              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
23977            </td>
23978          </tr>
23979
23980
23981          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23982           <!-- end of entry -->
23983        
23984                
23985          <tr class="entry" id="controls_android.tonemap.curveRed">
23986            <td class="entry_name
23987             " rowspan="5">
23988              android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
23989            </td>
23990            <td class="entry_type">
23991                <span class="entry_type_name">float</span>
23992                <span class="entry_type_container">x</span>
23993
23994                <span class="entry_type_array">
23995                  n x 2
23996                </span>
23997              <span class="entry_type_visibility"> [hidden]</span>
23998
23999
24000              <span class="entry_type_hwlevel">[full] </span>
24001
24002
24003                <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>
24004
24005
24006            </td> <!-- entry_type -->
24007
24008            <td class="entry_description">
24009              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
24010channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24011CONTRAST_<wbr/>CURVE.<wbr/></p>
24012            </td>
24013
24014            <td class="entry_units">
24015            </td>
24016
24017            <td class="entry_range">
24018              <p>0-1 on both input and output coordinates,<wbr/> normalized
24019as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
24020            </td>
24021
24022            <td class="entry_tags">
24023            </td>
24024
24025          </tr>
24026          <tr class="entries_header">
24027            <th class="th_details" colspan="5">Details</th>
24028          </tr>
24029          <tr class="entry_cont">
24030            <td class="entry_details" colspan="5">
24031              <p>Each channel's curve is defined by an array of control points:</p>
24032<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
24033  [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
240342 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
24035<p>These are sorted in order of increasing <code>Pin</code>; it is
24036required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
24037define a complete mapping.<wbr/> For input values between control points,<wbr/>
24038the camera device must linearly interpolate between the control
24039points.<wbr/></p>
24040<p>Each curve can have an independent number of points,<wbr/> and the number
24041of points can be less than max (that is,<wbr/> the request doesn't have to
24042always provide a curve with number of points equivalent to
24043<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
24044<p>A few examples,<wbr/> and their corresponding graphical mappings; these
24045only specify the red channel and the precision is limited to 4
24046digits,<wbr/> for conciseness.<wbr/></p>
24047<p>Linear mapping:</p>
24048<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 ]
24049</code></pre>
24050<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
24051<p>Invert mapping:</p>
24052<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 ]
24053</code></pre>
24054<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
24055<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
24056<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
24057  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/>
24058  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/>
24059  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/>
24060  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 ]
24061</code></pre>
24062<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
24063<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
24064<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
24065  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/>
24066  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/>
24067  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/>
24068  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 ]
24069</code></pre>
24070<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24071            </td>
24072          </tr>
24073
24074          <tr class="entries_header">
24075            <th class="th_details" colspan="5">HAL Implementation Details</th>
24076          </tr>
24077          <tr class="entry_cont">
24078            <td class="entry_details" colspan="5">
24079              <p>For good quality of mapping,<wbr/> at least 128 control points are
24080preferred.<wbr/></p>
24081<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
24082control points used as are available.<wbr/></p>
24083            </td>
24084          </tr>
24085
24086          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24087           <!-- end of entry -->
24088        
24089                
24090          <tr class="entry" id="controls_android.tonemap.curve">
24091            <td class="entry_name
24092             " rowspan="5">
24093              android.<wbr/>tonemap.<wbr/>curve
24094            </td>
24095            <td class="entry_type">
24096                <span class="entry_type_name">float</span>
24097
24098              <span class="entry_type_visibility"> [public as tonemapCurve]</span>
24099
24100              <span class="entry_type_synthetic">[synthetic] </span>
24101
24102              <span class="entry_type_hwlevel">[full] </span>
24103
24104
24105
24106
24107            </td> <!-- entry_type -->
24108
24109            <td class="entry_description">
24110              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
24111is CONTRAST_<wbr/>CURVE.<wbr/></p>
24112            </td>
24113
24114            <td class="entry_units">
24115            </td>
24116
24117            <td class="entry_range">
24118            </td>
24119
24120            <td class="entry_tags">
24121            </td>
24122
24123          </tr>
24124          <tr class="entries_header">
24125            <th class="th_details" colspan="5">Details</th>
24126          </tr>
24127          <tr class="entry_cont">
24128            <td class="entry_details" colspan="5">
24129              <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
24130channels respectively.<wbr/> The following example uses the red channel as an
24131example.<wbr/> The same logic applies to green and blue channel.<wbr/>
24132Each channel's curve is defined by an array of control points:</p>
24133<pre><code>curveRed =
24134  [ 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) ]
241352 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
24136<p>These are sorted in order of increasing <code>Pin</code>; it is always
24137guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
24138define a complete mapping.<wbr/> For input values between control points,<wbr/>
24139the camera device must linearly interpolate between the control
24140points.<wbr/></p>
24141<p>Each curve can have an independent number of points,<wbr/> and the number
24142of points can be less than max (that is,<wbr/> the request doesn't have to
24143always provide a curve with number of points equivalent to
24144<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
24145<p>A few examples,<wbr/> and their corresponding graphical mappings; these
24146only specify the red channel and the precision is limited to 4
24147digits,<wbr/> for conciseness.<wbr/></p>
24148<p>Linear mapping:</p>
24149<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
24150</code></pre>
24151<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
24152<p>Invert mapping:</p>
24153<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
24154</code></pre>
24155<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
24156<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
24157<pre><code>curveRed = [
24158  (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/>
24159  (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/>
24160  (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/>
24161  (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) ]
24162</code></pre>
24163<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
24164<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
24165<pre><code>curveRed = [
24166  (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/>
24167  (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/>
24168  (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/>
24169  (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) ]
24170</code></pre>
24171<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24172            </td>
24173          </tr>
24174
24175          <tr class="entries_header">
24176            <th class="th_details" colspan="5">HAL Implementation Details</th>
24177          </tr>
24178          <tr class="entry_cont">
24179            <td class="entry_details" colspan="5">
24180              <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
24181curveBlue entries.<wbr/></p>
24182            </td>
24183          </tr>
24184
24185          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24186           <!-- end of entry -->
24187        
24188                
24189          <tr class="entry" id="controls_android.tonemap.mode">
24190            <td class="entry_name
24191             " rowspan="3">
24192              android.<wbr/>tonemap.<wbr/>mode
24193            </td>
24194            <td class="entry_type">
24195                <span class="entry_type_name entry_type_name_enum">byte</span>
24196
24197              <span class="entry_type_visibility"> [public]</span>
24198
24199
24200              <span class="entry_type_hwlevel">[full] </span>
24201
24202
24203
24204                <ul class="entry_type_enum">
24205                  <li>
24206                    <span class="entry_type_enum_name">CONTRAST_CURVE</span>
24207                    <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
24208the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
24209<p>All color enhancement and tonemapping must be disabled,<wbr/> except
24210for applying the tonemapping curve specified by
24211<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
24212<p>Must not slow down frame rate relative to raw
24213sensor output.<wbr/></p></span>
24214                  </li>
24215                  <li>
24216                    <span class="entry_type_enum_name">FAST</span>
24217                    <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
24218reducing frame rate compared to raw sensor output.<wbr/></p></span>
24219                  </li>
24220                  <li>
24221                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
24222                    <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
24223the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
24224                  </li>
24225                  <li>
24226                    <span class="entry_type_enum_name">GAMMA_VALUE</span>
24227                    <span class="entry_type_enum_notes"><p>Use the gamma value specified in <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a> to peform
24228tonemapping.<wbr/></p>
24229<p>All color enhancement and tonemapping must be disabled,<wbr/> except
24230for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
24231<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
24232                  </li>
24233                  <li>
24234                    <span class="entry_type_enum_name">PRESET_CURVE</span>
24235                    <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
24236<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
24237<p>All color enhancement and tonemapping must be disabled,<wbr/> except
24238for applying the tonemapping curve specified by
24239<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
24240<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
24241                  </li>
24242                </ul>
24243
24244            </td> <!-- entry_type -->
24245
24246            <td class="entry_description">
24247              <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
24248            </td>
24249
24250            <td class="entry_units">
24251            </td>
24252
24253            <td class="entry_range">
24254              <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
24255            </td>
24256
24257            <td class="entry_tags">
24258            </td>
24259
24260          </tr>
24261          <tr class="entries_header">
24262            <th class="th_details" colspan="5">Details</th>
24263          </tr>
24264          <tr class="entry_cont">
24265            <td class="entry_details" colspan="5">
24266              <p>When switching to an application-defined contrast curve by setting
24267<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
24268per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
24269mapping from input high-bit-depth pixel value to the output
24270low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
24271and output may change depending on the camera pipeline,<wbr/> the values
24272are specified by normalized floating-point numbers.<wbr/></p>
24273<p>More-complex color mapping operations such as 3D color look-up
24274tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
24275transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24276CONTRAST_<wbr/>CURVE.<wbr/></p>
24277<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
24278emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
24279These values are always available,<wbr/> and as close as possible to the
24280actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
24281<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
24282provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
24283roughly the same.<wbr/></p>
24284            </td>
24285          </tr>
24286
24287
24288          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24289           <!-- end of entry -->
24290        
24291                
24292          <tr class="entry" id="controls_android.tonemap.gamma">
24293            <td class="entry_name
24294             " rowspan="3">
24295              android.<wbr/>tonemap.<wbr/>gamma
24296            </td>
24297            <td class="entry_type">
24298                <span class="entry_type_name">float</span>
24299
24300              <span class="entry_type_visibility"> [public]</span>
24301
24302
24303
24304
24305
24306
24307            </td> <!-- entry_type -->
24308
24309            <td class="entry_description">
24310              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24311GAMMA_<wbr/>VALUE</p>
24312            </td>
24313
24314            <td class="entry_units">
24315            </td>
24316
24317            <td class="entry_range">
24318            </td>
24319
24320            <td class="entry_tags">
24321            </td>
24322
24323          </tr>
24324          <tr class="entries_header">
24325            <th class="th_details" colspan="5">Details</th>
24326          </tr>
24327          <tr class="entry_cont">
24328            <td class="entry_details" colspan="5">
24329              <p>The tonemap curve will be defined the following formula:
24330* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
24331where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
24332pow is the power function and gamma is the gamma value specified by this
24333key.<wbr/></p>
24334<p>The same curve will be applied to all color channels.<wbr/> The camera device
24335may clip the input gamma value to its supported range.<wbr/> The actual applied
24336value will be returned in capture result.<wbr/></p>
24337<p>The valid range of gamma value varies on different devices,<wbr/> but values
24338within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
24339            </td>
24340          </tr>
24341
24342
24343          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24344           <!-- end of entry -->
24345        
24346                
24347          <tr class="entry" id="controls_android.tonemap.presetCurve">
24348            <td class="entry_name
24349             " rowspan="3">
24350              android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
24351            </td>
24352            <td class="entry_type">
24353                <span class="entry_type_name entry_type_name_enum">byte</span>
24354
24355              <span class="entry_type_visibility"> [public]</span>
24356
24357
24358
24359
24360
24361                <ul class="entry_type_enum">
24362                  <li>
24363                    <span class="entry_type_enum_name">SRGB</span>
24364                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
24365                  </li>
24366                  <li>
24367                    <span class="entry_type_enum_name">REC709</span>
24368                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
24369                  </li>
24370                </ul>
24371
24372            </td> <!-- entry_type -->
24373
24374            <td class="entry_description">
24375              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24376PRESET_<wbr/>CURVE</p>
24377            </td>
24378
24379            <td class="entry_units">
24380            </td>
24381
24382            <td class="entry_range">
24383            </td>
24384
24385            <td class="entry_tags">
24386            </td>
24387
24388          </tr>
24389          <tr class="entries_header">
24390            <th class="th_details" colspan="5">Details</th>
24391          </tr>
24392          <tr class="entry_cont">
24393            <td class="entry_details" colspan="5">
24394              <p>The tonemap curve will be defined by specified standard.<wbr/></p>
24395<p>sRGB (approximated by 16 control points):</p>
24396<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24397<p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
24398<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
24399<p>Note that above figures show a 16 control points approximation of preset
24400curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
24401            </td>
24402          </tr>
24403
24404
24405          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24406           <!-- end of entry -->
24407        
24408        
24409
24410      <!-- end of kind -->
24411      </tbody>
24412      <tr><td colspan="6" class="kind">static</td></tr>
24413
24414      <thead class="entries_header">
24415        <tr>
24416          <th class="th_name">Property Name</th>
24417          <th class="th_type">Type</th>
24418          <th class="th_description">Description</th>
24419          <th class="th_units">Units</th>
24420          <th class="th_range">Range</th>
24421          <th class="th_tags">Tags</th>
24422        </tr>
24423      </thead>
24424
24425      <tbody>
24426
24427        
24428
24429        
24430
24431        
24432
24433        
24434
24435                
24436          <tr class="entry" id="static_android.tonemap.maxCurvePoints">
24437            <td class="entry_name
24438             " rowspan="5">
24439              android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
24440            </td>
24441            <td class="entry_type">
24442                <span class="entry_type_name">int32</span>
24443
24444              <span class="entry_type_visibility"> [public]</span>
24445
24446
24447              <span class="entry_type_hwlevel">[full] </span>
24448
24449
24450
24451
24452            </td> <!-- entry_type -->
24453
24454            <td class="entry_description">
24455              <p>Maximum number of supported points in the
24456tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
24457            </td>
24458
24459            <td class="entry_units">
24460            </td>
24461
24462            <td class="entry_range">
24463            </td>
24464
24465            <td class="entry_tags">
24466            </td>
24467
24468          </tr>
24469          <tr class="entries_header">
24470            <th class="th_details" colspan="5">Details</th>
24471          </tr>
24472          <tr class="entry_cont">
24473            <td class="entry_details" colspan="5">
24474              <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
24475less than this maximum,<wbr/> the camera device will resample the curve to its internal
24476representation,<wbr/> using linear interpolation.<wbr/></p>
24477<p>The output curves in the result metadata may have a different number
24478of points than the input curves,<wbr/> and will represent the actual
24479hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
24480            </td>
24481          </tr>
24482
24483          <tr class="entries_header">
24484            <th class="th_details" colspan="5">HAL Implementation Details</th>
24485          </tr>
24486          <tr class="entry_cont">
24487            <td class="entry_details" colspan="5">
24488              <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
24489            </td>
24490          </tr>
24491
24492          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24493           <!-- end of entry -->
24494        
24495                
24496          <tr class="entry" id="static_android.tonemap.availableToneMapModes">
24497            <td class="entry_name
24498             " rowspan="5">
24499              android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
24500            </td>
24501            <td class="entry_type">
24502                <span class="entry_type_name">byte</span>
24503                <span class="entry_type_container">x</span>
24504
24505                <span class="entry_type_array">
24506                  n
24507                </span>
24508              <span class="entry_type_visibility"> [public as enumList]</span>
24509
24510
24511              <span class="entry_type_hwlevel">[full] </span>
24512
24513
24514                <div class="entry_type_notes">list of enums</div>
24515
24516
24517            </td> <!-- entry_type -->
24518
24519            <td class="entry_description">
24520              <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
24521device.<wbr/></p>
24522            </td>
24523
24524            <td class="entry_units">
24525            </td>
24526
24527            <td class="entry_range">
24528              <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
24529            </td>
24530
24531            <td class="entry_tags">
24532            </td>
24533
24534          </tr>
24535          <tr class="entries_header">
24536            <th class="th_details" colspan="5">Details</th>
24537          </tr>
24538          <tr class="entry_cont">
24539            <td class="entry_details" colspan="5">
24540              <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
24541at least one of below mode combinations:</p>
24542<ul>
24543<li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
24544<li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
24545</ul>
24546<p>This includes all FULL level devices.<wbr/></p>
24547            </td>
24548          </tr>
24549
24550          <tr class="entries_header">
24551            <th class="th_details" colspan="5">HAL Implementation Details</th>
24552          </tr>
24553          <tr class="entry_cont">
24554            <td class="entry_details" colspan="5">
24555              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
24556on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
24557That is,<wbr/> if the highest quality implementation on the camera device does not slow down
24558capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
24559            </td>
24560          </tr>
24561
24562          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24563           <!-- end of entry -->
24564        
24565        
24566
24567      <!-- end of kind -->
24568      </tbody>
24569      <tr><td colspan="6" class="kind">dynamic</td></tr>
24570
24571      <thead class="entries_header">
24572        <tr>
24573          <th class="th_name">Property Name</th>
24574          <th class="th_type">Type</th>
24575          <th class="th_description">Description</th>
24576          <th class="th_units">Units</th>
24577          <th class="th_range">Range</th>
24578          <th class="th_tags">Tags</th>
24579        </tr>
24580      </thead>
24581
24582      <tbody>
24583
24584        
24585
24586        
24587
24588        
24589
24590        
24591
24592                
24593          <tr class="entry" id="dynamic_android.tonemap.curveBlue">
24594            <td class="entry_name
24595             " rowspan="3">
24596              android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
24597            </td>
24598            <td class="entry_type">
24599                <span class="entry_type_name">float</span>
24600                <span class="entry_type_container">x</span>
24601
24602                <span class="entry_type_array">
24603                  n x 2
24604                </span>
24605              <span class="entry_type_visibility"> [hidden]</span>
24606
24607
24608              <span class="entry_type_hwlevel">[full] </span>
24609
24610
24611                <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>
24612
24613
24614            </td> <!-- entry_type -->
24615
24616            <td class="entry_description">
24617              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
24618channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24619CONTRAST_<wbr/>CURVE.<wbr/></p>
24620            </td>
24621
24622            <td class="entry_units">
24623            </td>
24624
24625            <td class="entry_range">
24626            </td>
24627
24628            <td class="entry_tags">
24629            </td>
24630
24631          </tr>
24632          <tr class="entries_header">
24633            <th class="th_details" colspan="5">Details</th>
24634          </tr>
24635          <tr class="entry_cont">
24636            <td class="entry_details" colspan="5">
24637              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
24638            </td>
24639          </tr>
24640
24641
24642          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24643           <!-- end of entry -->
24644        
24645                
24646          <tr class="entry" id="dynamic_android.tonemap.curveGreen">
24647            <td class="entry_name
24648             " rowspan="3">
24649              android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
24650            </td>
24651            <td class="entry_type">
24652                <span class="entry_type_name">float</span>
24653                <span class="entry_type_container">x</span>
24654
24655                <span class="entry_type_array">
24656                  n x 2
24657                </span>
24658              <span class="entry_type_visibility"> [hidden]</span>
24659
24660
24661              <span class="entry_type_hwlevel">[full] </span>
24662
24663
24664                <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>
24665
24666
24667            </td> <!-- entry_type -->
24668
24669            <td class="entry_description">
24670              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
24671channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24672CONTRAST_<wbr/>CURVE.<wbr/></p>
24673            </td>
24674
24675            <td class="entry_units">
24676            </td>
24677
24678            <td class="entry_range">
24679            </td>
24680
24681            <td class="entry_tags">
24682            </td>
24683
24684          </tr>
24685          <tr class="entries_header">
24686            <th class="th_details" colspan="5">Details</th>
24687          </tr>
24688          <tr class="entry_cont">
24689            <td class="entry_details" colspan="5">
24690              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
24691            </td>
24692          </tr>
24693
24694
24695          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24696           <!-- end of entry -->
24697        
24698                
24699          <tr class="entry" id="dynamic_android.tonemap.curveRed">
24700            <td class="entry_name
24701             " rowspan="5">
24702              android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
24703            </td>
24704            <td class="entry_type">
24705                <span class="entry_type_name">float</span>
24706                <span class="entry_type_container">x</span>
24707
24708                <span class="entry_type_array">
24709                  n x 2
24710                </span>
24711              <span class="entry_type_visibility"> [hidden]</span>
24712
24713
24714              <span class="entry_type_hwlevel">[full] </span>
24715
24716
24717                <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>
24718
24719
24720            </td> <!-- entry_type -->
24721
24722            <td class="entry_description">
24723              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
24724channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24725CONTRAST_<wbr/>CURVE.<wbr/></p>
24726            </td>
24727
24728            <td class="entry_units">
24729            </td>
24730
24731            <td class="entry_range">
24732              <p>0-1 on both input and output coordinates,<wbr/> normalized
24733as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
24734            </td>
24735
24736            <td class="entry_tags">
24737            </td>
24738
24739          </tr>
24740          <tr class="entries_header">
24741            <th class="th_details" colspan="5">Details</th>
24742          </tr>
24743          <tr class="entry_cont">
24744            <td class="entry_details" colspan="5">
24745              <p>Each channel's curve is defined by an array of control points:</p>
24746<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
24747  [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
247482 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
24749<p>These are sorted in order of increasing <code>Pin</code>; it is
24750required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
24751define a complete mapping.<wbr/> For input values between control points,<wbr/>
24752the camera device must linearly interpolate between the control
24753points.<wbr/></p>
24754<p>Each curve can have an independent number of points,<wbr/> and the number
24755of points can be less than max (that is,<wbr/> the request doesn't have to
24756always provide a curve with number of points equivalent to
24757<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
24758<p>A few examples,<wbr/> and their corresponding graphical mappings; these
24759only specify the red channel and the precision is limited to 4
24760digits,<wbr/> for conciseness.<wbr/></p>
24761<p>Linear mapping:</p>
24762<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 ]
24763</code></pre>
24764<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
24765<p>Invert mapping:</p>
24766<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 ]
24767</code></pre>
24768<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
24769<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
24770<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
24771  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/>
24772  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/>
24773  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/>
24774  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 ]
24775</code></pre>
24776<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
24777<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
24778<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
24779  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/>
24780  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/>
24781  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/>
24782  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 ]
24783</code></pre>
24784<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24785            </td>
24786          </tr>
24787
24788          <tr class="entries_header">
24789            <th class="th_details" colspan="5">HAL Implementation Details</th>
24790          </tr>
24791          <tr class="entry_cont">
24792            <td class="entry_details" colspan="5">
24793              <p>For good quality of mapping,<wbr/> at least 128 control points are
24794preferred.<wbr/></p>
24795<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
24796control points used as are available.<wbr/></p>
24797            </td>
24798          </tr>
24799
24800          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24801           <!-- end of entry -->
24802        
24803                
24804          <tr class="entry" id="dynamic_android.tonemap.curve">
24805            <td class="entry_name
24806             " rowspan="5">
24807              android.<wbr/>tonemap.<wbr/>curve
24808            </td>
24809            <td class="entry_type">
24810                <span class="entry_type_name">float</span>
24811
24812              <span class="entry_type_visibility"> [public as tonemapCurve]</span>
24813
24814              <span class="entry_type_synthetic">[synthetic] </span>
24815
24816              <span class="entry_type_hwlevel">[full] </span>
24817
24818
24819
24820
24821            </td> <!-- entry_type -->
24822
24823            <td class="entry_description">
24824              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
24825is CONTRAST_<wbr/>CURVE.<wbr/></p>
24826            </td>
24827
24828            <td class="entry_units">
24829            </td>
24830
24831            <td class="entry_range">
24832            </td>
24833
24834            <td class="entry_tags">
24835            </td>
24836
24837          </tr>
24838          <tr class="entries_header">
24839            <th class="th_details" colspan="5">Details</th>
24840          </tr>
24841          <tr class="entry_cont">
24842            <td class="entry_details" colspan="5">
24843              <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
24844channels respectively.<wbr/> The following example uses the red channel as an
24845example.<wbr/> The same logic applies to green and blue channel.<wbr/>
24846Each channel's curve is defined by an array of control points:</p>
24847<pre><code>curveRed =
24848  [ 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) ]
248492 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
24850<p>These are sorted in order of increasing <code>Pin</code>; it is always
24851guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
24852define a complete mapping.<wbr/> For input values between control points,<wbr/>
24853the camera device must linearly interpolate between the control
24854points.<wbr/></p>
24855<p>Each curve can have an independent number of points,<wbr/> and the number
24856of points can be less than max (that is,<wbr/> the request doesn't have to
24857always provide a curve with number of points equivalent to
24858<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
24859<p>A few examples,<wbr/> and their corresponding graphical mappings; these
24860only specify the red channel and the precision is limited to 4
24861digits,<wbr/> for conciseness.<wbr/></p>
24862<p>Linear mapping:</p>
24863<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
24864</code></pre>
24865<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
24866<p>Invert mapping:</p>
24867<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
24868</code></pre>
24869<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
24870<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
24871<pre><code>curveRed = [
24872  (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/>
24873  (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/>
24874  (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/>
24875  (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) ]
24876</code></pre>
24877<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
24878<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
24879<pre><code>curveRed = [
24880  (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/>
24881  (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/>
24882  (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/>
24883  (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) ]
24884</code></pre>
24885<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24886            </td>
24887          </tr>
24888
24889          <tr class="entries_header">
24890            <th class="th_details" colspan="5">HAL Implementation Details</th>
24891          </tr>
24892          <tr class="entry_cont">
24893            <td class="entry_details" colspan="5">
24894              <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
24895curveBlue entries.<wbr/></p>
24896            </td>
24897          </tr>
24898
24899          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24900           <!-- end of entry -->
24901        
24902                
24903          <tr class="entry" id="dynamic_android.tonemap.mode">
24904            <td class="entry_name
24905             " rowspan="3">
24906              android.<wbr/>tonemap.<wbr/>mode
24907            </td>
24908            <td class="entry_type">
24909                <span class="entry_type_name entry_type_name_enum">byte</span>
24910
24911              <span class="entry_type_visibility"> [public]</span>
24912
24913
24914              <span class="entry_type_hwlevel">[full] </span>
24915
24916
24917
24918                <ul class="entry_type_enum">
24919                  <li>
24920                    <span class="entry_type_enum_name">CONTRAST_CURVE</span>
24921                    <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
24922the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
24923<p>All color enhancement and tonemapping must be disabled,<wbr/> except
24924for applying the tonemapping curve specified by
24925<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
24926<p>Must not slow down frame rate relative to raw
24927sensor output.<wbr/></p></span>
24928                  </li>
24929                  <li>
24930                    <span class="entry_type_enum_name">FAST</span>
24931                    <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
24932reducing frame rate compared to raw sensor output.<wbr/></p></span>
24933                  </li>
24934                  <li>
24935                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
24936                    <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
24937the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
24938                  </li>
24939                  <li>
24940                    <span class="entry_type_enum_name">GAMMA_VALUE</span>
24941                    <span class="entry_type_enum_notes"><p>Use the gamma value specified in <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a> to peform
24942tonemapping.<wbr/></p>
24943<p>All color enhancement and tonemapping must be disabled,<wbr/> except
24944for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
24945<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
24946                  </li>
24947                  <li>
24948                    <span class="entry_type_enum_name">PRESET_CURVE</span>
24949                    <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
24950<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
24951<p>All color enhancement and tonemapping must be disabled,<wbr/> except
24952for applying the tonemapping curve specified by
24953<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
24954<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
24955                  </li>
24956                </ul>
24957
24958            </td> <!-- entry_type -->
24959
24960            <td class="entry_description">
24961              <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
24962            </td>
24963
24964            <td class="entry_units">
24965            </td>
24966
24967            <td class="entry_range">
24968              <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
24969            </td>
24970
24971            <td class="entry_tags">
24972            </td>
24973
24974          </tr>
24975          <tr class="entries_header">
24976            <th class="th_details" colspan="5">Details</th>
24977          </tr>
24978          <tr class="entry_cont">
24979            <td class="entry_details" colspan="5">
24980              <p>When switching to an application-defined contrast curve by setting
24981<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
24982per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
24983mapping from input high-bit-depth pixel value to the output
24984low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
24985and output may change depending on the camera pipeline,<wbr/> the values
24986are specified by normalized floating-point numbers.<wbr/></p>
24987<p>More-complex color mapping operations such as 3D color look-up
24988tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
24989transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24990CONTRAST_<wbr/>CURVE.<wbr/></p>
24991<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
24992emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
24993These values are always available,<wbr/> and as close as possible to the
24994actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
24995<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
24996provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
24997roughly the same.<wbr/></p>
24998            </td>
24999          </tr>
25000
25001
25002          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25003           <!-- end of entry -->
25004        
25005                
25006          <tr class="entry" id="dynamic_android.tonemap.gamma">
25007            <td class="entry_name
25008             " rowspan="3">
25009              android.<wbr/>tonemap.<wbr/>gamma
25010            </td>
25011            <td class="entry_type">
25012                <span class="entry_type_name">float</span>
25013
25014              <span class="entry_type_visibility"> [public]</span>
25015
25016
25017
25018
25019
25020
25021            </td> <!-- entry_type -->
25022
25023            <td class="entry_description">
25024              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25025GAMMA_<wbr/>VALUE</p>
25026            </td>
25027
25028            <td class="entry_units">
25029            </td>
25030
25031            <td class="entry_range">
25032            </td>
25033
25034            <td class="entry_tags">
25035            </td>
25036
25037          </tr>
25038          <tr class="entries_header">
25039            <th class="th_details" colspan="5">Details</th>
25040          </tr>
25041          <tr class="entry_cont">
25042            <td class="entry_details" colspan="5">
25043              <p>The tonemap curve will be defined the following formula:
25044* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
25045where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
25046pow is the power function and gamma is the gamma value specified by this
25047key.<wbr/></p>
25048<p>The same curve will be applied to all color channels.<wbr/> The camera device
25049may clip the input gamma value to its supported range.<wbr/> The actual applied
25050value will be returned in capture result.<wbr/></p>
25051<p>The valid range of gamma value varies on different devices,<wbr/> but values
25052within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
25053            </td>
25054          </tr>
25055
25056
25057          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25058           <!-- end of entry -->
25059        
25060                
25061          <tr class="entry" id="dynamic_android.tonemap.presetCurve">
25062            <td class="entry_name
25063             " rowspan="3">
25064              android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
25065            </td>
25066            <td class="entry_type">
25067                <span class="entry_type_name entry_type_name_enum">byte</span>
25068
25069              <span class="entry_type_visibility"> [public]</span>
25070
25071
25072
25073
25074
25075                <ul class="entry_type_enum">
25076                  <li>
25077                    <span class="entry_type_enum_name">SRGB</span>
25078                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
25079                  </li>
25080                  <li>
25081                    <span class="entry_type_enum_name">REC709</span>
25082                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
25083                  </li>
25084                </ul>
25085
25086            </td> <!-- entry_type -->
25087
25088            <td class="entry_description">
25089              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25090PRESET_<wbr/>CURVE</p>
25091            </td>
25092
25093            <td class="entry_units">
25094            </td>
25095
25096            <td class="entry_range">
25097            </td>
25098
25099            <td class="entry_tags">
25100            </td>
25101
25102          </tr>
25103          <tr class="entries_header">
25104            <th class="th_details" colspan="5">Details</th>
25105          </tr>
25106          <tr class="entry_cont">
25107            <td class="entry_details" colspan="5">
25108              <p>The tonemap curve will be defined by specified standard.<wbr/></p>
25109<p>sRGB (approximated by 16 control points):</p>
25110<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
25111<p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
25112<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
25113<p>Note that above figures show a 16 control points approximation of preset
25114curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
25115            </td>
25116          </tr>
25117
25118
25119          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25120           <!-- end of entry -->
25121        
25122        
25123
25124      <!-- end of kind -->
25125      </tbody>
25126
25127  <!-- end of section -->
25128  <tr><td colspan="6" id="section_led" class="section">led</td></tr>
25129
25130
25131      <tr><td colspan="6" class="kind">controls</td></tr>
25132
25133      <thead class="entries_header">
25134        <tr>
25135          <th class="th_name">Property Name</th>
25136          <th class="th_type">Type</th>
25137          <th class="th_description">Description</th>
25138          <th class="th_units">Units</th>
25139          <th class="th_range">Range</th>
25140          <th class="th_tags">Tags</th>
25141        </tr>
25142      </thead>
25143
25144      <tbody>
25145
25146        
25147
25148        
25149
25150        
25151
25152        
25153
25154                
25155          <tr class="entry" id="controls_android.led.transmit">
25156            <td class="entry_name
25157             " rowspan="1">
25158              android.<wbr/>led.<wbr/>transmit
25159            </td>
25160            <td class="entry_type">
25161                <span class="entry_type_name entry_type_name_enum">byte</span>
25162
25163              <span class="entry_type_visibility"> [hidden as boolean]</span>
25164
25165
25166
25167
25168
25169                <ul class="entry_type_enum">
25170                  <li>
25171                    <span class="entry_type_enum_name">OFF</span>
25172                  </li>
25173                  <li>
25174                    <span class="entry_type_enum_name">ON</span>
25175                  </li>
25176                </ul>
25177
25178            </td> <!-- entry_type -->
25179
25180            <td class="entry_description">
25181              <p>This LED is nominally used to indicate to the user
25182that the camera is powered on and may be streaming images back to the
25183Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
25184disable this when video is processed locally and not transmitted to
25185any untrusted applications.<wbr/></p>
25186<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
25187transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
25188data is stored locally on the device.<wbr/></p>
25189<p>The LED <em>may</em> be off if a trusted application is using the data that
25190doesn't violate the above rules.<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            </td>
25201
25202          </tr>
25203
25204
25205          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25206           <!-- end of entry -->
25207        
25208        
25209
25210      <!-- end of kind -->
25211      </tbody>
25212      <tr><td colspan="6" class="kind">dynamic</td></tr>
25213
25214      <thead class="entries_header">
25215        <tr>
25216          <th class="th_name">Property Name</th>
25217          <th class="th_type">Type</th>
25218          <th class="th_description">Description</th>
25219          <th class="th_units">Units</th>
25220          <th class="th_range">Range</th>
25221          <th class="th_tags">Tags</th>
25222        </tr>
25223      </thead>
25224
25225      <tbody>
25226
25227        
25228
25229        
25230
25231        
25232
25233        
25234
25235                
25236          <tr class="entry" id="dynamic_android.led.transmit">
25237            <td class="entry_name
25238             " rowspan="1">
25239              android.<wbr/>led.<wbr/>transmit
25240            </td>
25241            <td class="entry_type">
25242                <span class="entry_type_name entry_type_name_enum">byte</span>
25243
25244              <span class="entry_type_visibility"> [hidden as boolean]</span>
25245
25246
25247
25248
25249
25250                <ul class="entry_type_enum">
25251                  <li>
25252                    <span class="entry_type_enum_name">OFF</span>
25253                  </li>
25254                  <li>
25255                    <span class="entry_type_enum_name">ON</span>
25256                  </li>
25257                </ul>
25258
25259            </td> <!-- entry_type -->
25260
25261            <td class="entry_description">
25262              <p>This LED is nominally used to indicate to the user
25263that the camera is powered on and may be streaming images back to the
25264Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
25265disable this when video is processed locally and not transmitted to
25266any untrusted applications.<wbr/></p>
25267<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
25268transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
25269data is stored locally on the device.<wbr/></p>
25270<p>The LED <em>may</em> be off if a trusted application is using the data that
25271doesn't violate the above rules.<wbr/></p>
25272            </td>
25273
25274            <td class="entry_units">
25275            </td>
25276
25277            <td class="entry_range">
25278            </td>
25279
25280            <td class="entry_tags">
25281            </td>
25282
25283          </tr>
25284
25285
25286          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25287           <!-- end of entry -->
25288        
25289        
25290
25291      <!-- end of kind -->
25292      </tbody>
25293      <tr><td colspan="6" class="kind">static</td></tr>
25294
25295      <thead class="entries_header">
25296        <tr>
25297          <th class="th_name">Property Name</th>
25298          <th class="th_type">Type</th>
25299          <th class="th_description">Description</th>
25300          <th class="th_units">Units</th>
25301          <th class="th_range">Range</th>
25302          <th class="th_tags">Tags</th>
25303        </tr>
25304      </thead>
25305
25306      <tbody>
25307
25308        
25309
25310        
25311
25312        
25313
25314        
25315
25316                
25317          <tr class="entry" id="static_android.led.availableLeds">
25318            <td class="entry_name
25319             " rowspan="1">
25320              android.<wbr/>led.<wbr/>available<wbr/>Leds
25321            </td>
25322            <td class="entry_type">
25323                <span class="entry_type_name entry_type_name_enum">byte</span>
25324                <span class="entry_type_container">x</span>
25325
25326                <span class="entry_type_array">
25327                  n
25328                </span>
25329              <span class="entry_type_visibility"> [hidden]</span>
25330
25331
25332
25333
25334
25335                <ul class="entry_type_enum">
25336                  <li>
25337                    <span class="entry_type_enum_name">TRANSMIT</span>
25338                    <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>
25339                  </li>
25340                </ul>
25341
25342            </td> <!-- entry_type -->
25343
25344            <td class="entry_description">
25345              <p>A list of camera LEDs that are available on this system.<wbr/></p>
25346            </td>
25347
25348            <td class="entry_units">
25349            </td>
25350
25351            <td class="entry_range">
25352            </td>
25353
25354            <td class="entry_tags">
25355            </td>
25356
25357          </tr>
25358
25359
25360          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25361           <!-- end of entry -->
25362        
25363        
25364
25365      <!-- end of kind -->
25366      </tbody>
25367
25368  <!-- end of section -->
25369  <tr><td colspan="6" id="section_info" class="section">info</td></tr>
25370
25371
25372      <tr><td colspan="6" class="kind">static</td></tr>
25373
25374      <thead class="entries_header">
25375        <tr>
25376          <th class="th_name">Property Name</th>
25377          <th class="th_type">Type</th>
25378          <th class="th_description">Description</th>
25379          <th class="th_units">Units</th>
25380          <th class="th_range">Range</th>
25381          <th class="th_tags">Tags</th>
25382        </tr>
25383      </thead>
25384
25385      <tbody>
25386
25387        
25388
25389        
25390
25391        
25392
25393        
25394
25395                
25396          <tr class="entry" id="static_android.info.supportedHardwareLevel">
25397            <td class="entry_name
25398             " rowspan="5">
25399              android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
25400            </td>
25401            <td class="entry_type">
25402                <span class="entry_type_name entry_type_name_enum">byte</span>
25403
25404              <span class="entry_type_visibility"> [public]</span>
25405
25406
25407              <span class="entry_type_hwlevel">[legacy] </span>
25408
25409
25410
25411                <ul class="entry_type_enum">
25412                  <li>
25413                    <span class="entry_type_enum_name">LIMITED</span>
25414                    <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or
25415better.<wbr/></p>
25416<p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the
25417<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
25418<p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic
25419support for color image capture.<wbr/> The only exception is that the device may
25420alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth
25421measurements and not color images.<wbr/></p>
25422<p><code>LIMITED</code> devices and above require the use of <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>
25423to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before
25424capturing a high-quality still image.<wbr/></p>
25425<p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only
25426required to support full-automatic operation and post-processing (<code>OFF</code> is not
25427supported for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>,<wbr/> or
25428<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p>
25429<p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and
25430can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span>
25431                  </li>
25432                  <li>
25433                    <span class="entry_type_enum_name">FULL</span>
25434                    <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p>
25435<p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the
25436<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
25437<p>A <code>FULL</code> device will support below capabilities:</p>
25438<ul>
25439<li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
25440  <code>BURST_<wbr/>CAPTURE</code>)</li>
25441<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>
25442<li>Manual sensor control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains <code>MANUAL_<wbr/>SENSOR</code>)</li>
25443<li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
25444  <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li>
25445<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>
25446<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>
25447</ul>
25448<p>Note:
25449Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
25450(<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level
2545123,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span>
25452                  </li>
25453                  <li>
25454                    <span class="entry_type_enum_name">LEGACY</span>
25455                    <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p>
25456<p>Only the stream configurations listed in the <code>LEGACY</code> table in the <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a>
25457documentation are supported.<wbr/></p>
25458<p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
25459post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/>
25460No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a
25461<code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
25462<p>In addition,<wbr/> the <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is not functional on <code>LEGACY</code>
25463devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated
25464as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/>  This may
25465fire the flash for flash power metering during precapture,<wbr/> and then fire the flash
25466for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to
25467enable the flash.<wbr/></p></span>
25468                  </li>
25469                  <li>
25470                    <span class="entry_type_enum_name">3</span>
25471                    <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to
25472FULL-level capabilities.<wbr/></p>
25473<p>The stream configurations listed in the <code>LEVEL_<wbr/>3</code>,<wbr/> <code>RAW</code>,<wbr/> <code>FULL</code>,<wbr/> <code>LEGACY</code> and
25474<code>LIMITED</code> tables in the <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a>
25475documentation are guaranteed to be supported.<wbr/></p>
25476<p>The following additional capabilities are guaranteed to be supported:</p>
25477<ul>
25478<li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
25479  <code>YUV_<wbr/>REPROCESSING</code>)</li>
25480<li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
25481  <code>RAW</code>)</li>
25482</ul></span>
25483                  </li>
25484                </ul>
25485
25486            </td> <!-- entry_type -->
25487
25488            <td class="entry_description">
25489              <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
25490            </td>
25491
25492            <td class="entry_units">
25493            </td>
25494
25495            <td class="entry_range">
25496            </td>
25497
25498            <td class="entry_tags">
25499            </td>
25500
25501          </tr>
25502          <tr class="entries_header">
25503            <th class="th_details" colspan="5">Details</th>
25504          </tr>
25505          <tr class="entry_cont">
25506            <td class="entry_details" colspan="5">
25507              <p>The supported hardware level is a high-level description of the camera device's
25508capabilities,<wbr/> summarizing several capabilities into one field.<wbr/>  Each level adds additional
25509features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/>
25510The ordering is <code>LEGACY &lt; LIMITED &lt; FULL &lt; LEVEL_<wbr/>3</code>.<wbr/></p>
25511<p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing
25512numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/>
25513the following code snippet can be used:</p>
25514<pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/>
25515boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) {
25516    int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL);
25517    if (deviceLevel == Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY) {
25518        return requiredLevel == deviceLevel;
25519    }
25520    //<wbr/> deviceLevel is not LEGACY,<wbr/> can use numerical sort
25521    return requiredLevel &lt;= deviceLevel;
25522}
25523</code></pre>
25524<p>At a high level,<wbr/> the levels are:</p>
25525<ul>
25526<li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older
25527  Android devices,<wbr/> and have very limited capabilities.<wbr/></li>
25528<li><code>LIMITED</code> devices represent the
25529  baseline feature set,<wbr/> and may also include additional capabilities that are
25530  subsets of <code>FULL</code>.<wbr/></li>
25531<li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and
25532  post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li>
25533<li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along
25534  with additional output stream configurations.<wbr/></li>
25535</ul>
25536<p>See the individual level enums for full descriptions of the supported capabilities.<wbr/>  The
25537<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a
25538finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or
25539ranges defined in individual <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> entries.<wbr/></p>
25540<p>Some features are not part of any particular hardware level or capability and must be
25541queried separately.<wbr/> These include:</p>
25542<ul>
25543<li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
25544<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>
25545<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>
25546<li>Optical or electrical image stabilization
25547  (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
25548   <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
25549</ul>
25550            </td>
25551          </tr>
25552
25553          <tr class="entries_header">
25554            <th class="th_details" colspan="5">HAL Implementation Details</th>
25555          </tr>
25556          <tr class="entry_cont">
25557            <td class="entry_details" colspan="5">
25558              <p>The camera 3 HAL device can implement one of three possible operational modes; LIMITED,<wbr/>
25559FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p>
25560<p>FULL support or better is expected from new higher-end devices.<wbr/> Limited
25561mode has hardware requirements roughly in line with those for a camera HAL device v1
25562implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict
25563superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p>
25564<p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
25565<p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in
25566the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on HALv1 devices,<wbr/> and is implemented
25567by the camera framework code.<wbr/></p>
25568            </td>
25569          </tr>
25570
25571          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25572           <!-- end of entry -->
25573        
25574        
25575
25576      <!-- end of kind -->
25577      </tbody>
25578
25579  <!-- end of section -->
25580  <tr><td colspan="6" id="section_blackLevel" class="section">blackLevel</td></tr>
25581
25582
25583      <tr><td colspan="6" class="kind">controls</td></tr>
25584
25585      <thead class="entries_header">
25586        <tr>
25587          <th class="th_name">Property Name</th>
25588          <th class="th_type">Type</th>
25589          <th class="th_description">Description</th>
25590          <th class="th_units">Units</th>
25591          <th class="th_range">Range</th>
25592          <th class="th_tags">Tags</th>
25593        </tr>
25594      </thead>
25595
25596      <tbody>
25597
25598        
25599
25600        
25601
25602        
25603
25604        
25605
25606                
25607          <tr class="entry" id="controls_android.blackLevel.lock">
25608            <td class="entry_name
25609             " rowspan="5">
25610              android.<wbr/>black<wbr/>Level.<wbr/>lock
25611            </td>
25612            <td class="entry_type">
25613                <span class="entry_type_name entry_type_name_enum">byte</span>
25614
25615              <span class="entry_type_visibility"> [public as boolean]</span>
25616
25617
25618              <span class="entry_type_hwlevel">[full] </span>
25619
25620
25621
25622                <ul class="entry_type_enum">
25623                  <li>
25624                    <span class="entry_type_enum_name">OFF</span>
25625                  </li>
25626                  <li>
25627                    <span class="entry_type_enum_name">ON</span>
25628                  </li>
25629                </ul>
25630
25631            </td> <!-- entry_type -->
25632
25633            <td class="entry_description">
25634              <p>Whether black-level compensation is locked
25635to its current values,<wbr/> or is free to vary.<wbr/></p>
25636            </td>
25637
25638            <td class="entry_units">
25639            </td>
25640
25641            <td class="entry_range">
25642            </td>
25643
25644            <td class="entry_tags">
25645              <ul class="entry_tags">
25646                  <li><a href="#tag_HAL2">HAL2</a></li>
25647              </ul>
25648            </td>
25649
25650          </tr>
25651          <tr class="entries_header">
25652            <th class="th_details" colspan="5">Details</th>
25653          </tr>
25654          <tr class="entry_cont">
25655            <td class="entry_details" colspan="5">
25656              <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
25657compensation will not change until the lock is set to
25658<code>false</code> (OFF).<wbr/></p>
25659<p>Since changes to certain capture parameters (such as
25660exposure time) may require resetting of black level
25661compensation,<wbr/> the camera device must report whether setting
25662the black level lock was successful in the output result
25663metadata.<wbr/></p>
25664<p>For example,<wbr/> if a sequence of requests is as follows:</p>
25665<ul>
25666<li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
25667<li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
25668<li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
25669<li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
25670<li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
25671<li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
25672</ul>
25673<p>And the exposure change in Request 4 requires the camera
25674device to reset the black level offsets,<wbr/> then the output
25675result metadata is expected to be:</p>
25676<ul>
25677<li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
25678<li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
25679<li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
25680<li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
25681<li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
25682<li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
25683</ul>
25684<p>This indicates to the application that on frame 4,<wbr/> black
25685levels were reset due to exposure value changes,<wbr/> and pixel
25686values may not be consistent across captures.<wbr/></p>
25687<p>The camera device will maintain the lock to the extent
25688possible,<wbr/> only overriding the lock to OFF when changes to
25689other request parameters require a black level recalculation
25690or reset.<wbr/></p>
25691            </td>
25692          </tr>
25693
25694          <tr class="entries_header">
25695            <th class="th_details" colspan="5">HAL Implementation Details</th>
25696          </tr>
25697          <tr class="entry_cont">
25698            <td class="entry_details" colspan="5">
25699              <p>If for some reason black level locking is no longer possible
25700(for example,<wbr/> the analog gain has changed,<wbr/> which forces
25701black level offsets to be recalculated),<wbr/> then the HAL must
25702override this request (and it must report 'OFF' when this
25703does happen) until the next capture for which locking is
25704possible again.<wbr/></p>
25705            </td>
25706          </tr>
25707
25708          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25709           <!-- end of entry -->
25710        
25711        
25712
25713      <!-- end of kind -->
25714      </tbody>
25715      <tr><td colspan="6" class="kind">dynamic</td></tr>
25716
25717      <thead class="entries_header">
25718        <tr>
25719          <th class="th_name">Property Name</th>
25720          <th class="th_type">Type</th>
25721          <th class="th_description">Description</th>
25722          <th class="th_units">Units</th>
25723          <th class="th_range">Range</th>
25724          <th class="th_tags">Tags</th>
25725        </tr>
25726      </thead>
25727
25728      <tbody>
25729
25730        
25731
25732        
25733
25734        
25735
25736        
25737
25738                
25739          <tr class="entry" id="dynamic_android.blackLevel.lock">
25740            <td class="entry_name
25741             " rowspan="5">
25742              android.<wbr/>black<wbr/>Level.<wbr/>lock
25743            </td>
25744            <td class="entry_type">
25745                <span class="entry_type_name entry_type_name_enum">byte</span>
25746
25747              <span class="entry_type_visibility"> [public as boolean]</span>
25748
25749
25750              <span class="entry_type_hwlevel">[full] </span>
25751
25752
25753
25754                <ul class="entry_type_enum">
25755                  <li>
25756                    <span class="entry_type_enum_name">OFF</span>
25757                  </li>
25758                  <li>
25759                    <span class="entry_type_enum_name">ON</span>
25760                  </li>
25761                </ul>
25762
25763            </td> <!-- entry_type -->
25764
25765            <td class="entry_description">
25766              <p>Whether black-level compensation is locked
25767to its current values,<wbr/> or is free to vary.<wbr/></p>
25768            </td>
25769
25770            <td class="entry_units">
25771            </td>
25772
25773            <td class="entry_range">
25774            </td>
25775
25776            <td class="entry_tags">
25777              <ul class="entry_tags">
25778                  <li><a href="#tag_HAL2">HAL2</a></li>
25779              </ul>
25780            </td>
25781
25782          </tr>
25783          <tr class="entries_header">
25784            <th class="th_details" colspan="5">Details</th>
25785          </tr>
25786          <tr class="entry_cont">
25787            <td class="entry_details" colspan="5">
25788              <p>Whether the black level offset was locked for this frame.<wbr/>  Should be
25789ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
25790a change in other capture settings forced the camera device to
25791perform a black level reset.<wbr/></p>
25792            </td>
25793          </tr>
25794
25795          <tr class="entries_header">
25796            <th class="th_details" colspan="5">HAL Implementation Details</th>
25797          </tr>
25798          <tr class="entry_cont">
25799            <td class="entry_details" colspan="5">
25800              <p>If for some reason black level locking is no longer possible
25801(for example,<wbr/> the analog gain has changed,<wbr/> which forces
25802black level offsets to be recalculated),<wbr/> then the HAL must
25803override this request (and it must report 'OFF' when this
25804does happen) until the next capture for which locking is
25805possible again.<wbr/></p>
25806            </td>
25807          </tr>
25808
25809          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25810           <!-- end of entry -->
25811        
25812        
25813
25814      <!-- end of kind -->
25815      </tbody>
25816
25817  <!-- end of section -->
25818  <tr><td colspan="6" id="section_sync" class="section">sync</td></tr>
25819
25820
25821      <tr><td colspan="6" class="kind">dynamic</td></tr>
25822
25823      <thead class="entries_header">
25824        <tr>
25825          <th class="th_name">Property Name</th>
25826          <th class="th_type">Type</th>
25827          <th class="th_description">Description</th>
25828          <th class="th_units">Units</th>
25829          <th class="th_range">Range</th>
25830          <th class="th_tags">Tags</th>
25831        </tr>
25832      </thead>
25833
25834      <tbody>
25835
25836        
25837
25838        
25839
25840        
25841
25842        
25843
25844                
25845          <tr class="entry" id="dynamic_android.sync.frameNumber">
25846            <td class="entry_name
25847             " rowspan="5">
25848              android.<wbr/>sync.<wbr/>frame<wbr/>Number
25849            </td>
25850            <td class="entry_type">
25851                <span class="entry_type_name entry_type_name_enum">int64</span>
25852
25853              <span class="entry_type_visibility"> [hidden]</span>
25854
25855
25856              <span class="entry_type_hwlevel">[legacy] </span>
25857
25858
25859
25860                <ul class="entry_type_enum">
25861                  <li>
25862                    <span class="entry_type_enum_name">CONVERGING</span>
25863                    <span class="entry_type_enum_value">-1</span>
25864                    <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
25865<p>Synchronization is in progress,<wbr/> and reading metadata from this
25866result may include a mix of data that have taken effect since the
25867last synchronization time.<wbr/></p>
25868<p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
25869this value will update to the actual frame number frame number
25870the result is guaranteed to be synchronized to (as long as the
25871request settings remain constant).<wbr/></p></span>
25872                  </li>
25873                  <li>
25874                    <span class="entry_type_enum_name">UNKNOWN</span>
25875                    <span class="entry_type_enum_value">-2</span>
25876                    <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
25877<p>The result may have already converged,<wbr/> or it may be in
25878progress.<wbr/>  Reading from this result may include some mix
25879of settings from past requests.<wbr/></p>
25880<p>After a settings change,<wbr/> the new settings will eventually all
25881take effect for the output buffers and results.<wbr/> However,<wbr/> this
25882value will not change when that happens.<wbr/> Altering settings
25883rapidly may provide outcomes using mixes of settings from recent
25884requests.<wbr/></p>
25885<p>This value is intended primarily for backwards compatibility with
25886the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
25887                  </li>
25888                </ul>
25889
25890            </td> <!-- entry_type -->
25891
25892            <td class="entry_description">
25893              <p>The frame number corresponding to the last request
25894with which the output result (metadata + buffers) has been fully
25895synchronized.<wbr/></p>
25896            </td>
25897
25898            <td class="entry_units">
25899            </td>
25900
25901            <td class="entry_range">
25902              <p>Either a non-negative value corresponding to a
25903<code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
25904            </td>
25905
25906            <td class="entry_tags">
25907              <ul class="entry_tags">
25908                  <li><a href="#tag_V1">V1</a></li>
25909              </ul>
25910            </td>
25911
25912          </tr>
25913          <tr class="entries_header">
25914            <th class="th_details" colspan="5">Details</th>
25915          </tr>
25916          <tr class="entry_cont">
25917            <td class="entry_details" colspan="5">
25918              <p>When a request is submitted to the camera device,<wbr/> there is usually a
25919delay of several frames before the controls get applied.<wbr/> A camera
25920device may either choose to account for this delay by implementing a
25921pipeline and carefully submit well-timed atomic control updates,<wbr/> or
25922it may start streaming control changes that span over several frame
25923boundaries.<wbr/></p>
25924<p>In the latter case,<wbr/> whenever a request's settings change relative to
25925the previous submitted request,<wbr/> the full set of changes may take
25926multiple frame durations to fully take effect.<wbr/> Some settings may
25927take effect sooner (in less frame durations) than others.<wbr/></p>
25928<p>While a set of control changes are being propagated,<wbr/> this value
25929will be CONVERGING.<wbr/></p>
25930<p>Once it is fully known that a set of control changes have been
25931finished propagating,<wbr/> and the resulting updated control settings
25932have been read back by the camera device,<wbr/> this value will be set
25933to a non-negative frame number (corresponding to the request to
25934which the results have synchronized to).<wbr/></p>
25935<p>Older camera device implementations may not have a way to detect
25936when all camera controls have been applied,<wbr/> and will always set this
25937value to UNKNOWN.<wbr/></p>
25938<p>FULL capability devices will always have this value set to the
25939frame number of the request corresponding to this result.<wbr/></p>
25940<p><em>Further details</em>:</p>
25941<ul>
25942<li>Whenever a request differs from the last request,<wbr/> any future
25943results not yet returned may have this value set to CONVERGING (this
25944could include any in-progress captures not yet returned by the camera
25945device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
25946<li>Submitting a series of multiple requests that differ from the
25947previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
25948moves the new synchronization frame to the last non-repeating
25949request (using the smallest frame number from the contiguous list of
25950repeating requests).<wbr/></li>
25951<li>Submitting the same request repeatedly will not change this value
25952to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
25953<li>When this value changes to non-negative,<wbr/> that means that all of the
25954metadata controls from the request have been applied,<wbr/> all of the
25955metadata controls from the camera device have been read to the
25956updated values (into the result),<wbr/> and all of the graphics buffers
25957corresponding to this result are also synchronized to the request.<wbr/></li>
25958</ul>
25959<p><em>Pipeline considerations</em>:</p>
25960<p>Submitting a request with updated controls relative to the previously
25961submitted requests may also invalidate the synchronization state
25962of all the results corresponding to currently in-flight requests.<wbr/></p>
25963<p>In other words,<wbr/> results for this current request and up to
25964<a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
25965<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
25966            </td>
25967          </tr>
25968
25969          <tr class="entries_header">
25970            <th class="th_details" colspan="5">HAL Implementation Details</th>
25971          </tr>
25972          <tr class="entry_cont">
25973            <td class="entry_details" colspan="5">
25974              <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
25975is also UNKNOWN.<wbr/></p>
25976<p>FULL capability devices should simply set this value to the
25977<code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
25978            </td>
25979          </tr>
25980
25981          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25982           <!-- end of entry -->
25983        
25984        
25985
25986      <!-- end of kind -->
25987      </tbody>
25988      <tr><td colspan="6" class="kind">static</td></tr>
25989
25990      <thead class="entries_header">
25991        <tr>
25992          <th class="th_name">Property Name</th>
25993          <th class="th_type">Type</th>
25994          <th class="th_description">Description</th>
25995          <th class="th_units">Units</th>
25996          <th class="th_range">Range</th>
25997          <th class="th_tags">Tags</th>
25998        </tr>
25999      </thead>
26000
26001      <tbody>
26002
26003        
26004
26005        
26006
26007        
26008
26009        
26010
26011                
26012          <tr class="entry" id="static_android.sync.maxLatency">
26013            <td class="entry_name
26014             " rowspan="5">
26015              android.<wbr/>sync.<wbr/>max<wbr/>Latency
26016            </td>
26017            <td class="entry_type">
26018                <span class="entry_type_name entry_type_name_enum">int32</span>
26019
26020              <span class="entry_type_visibility"> [public]</span>
26021
26022
26023              <span class="entry_type_hwlevel">[legacy] </span>
26024
26025
26026
26027                <ul class="entry_type_enum">
26028                  <li>
26029                    <span class="entry_type_enum_name">PER_FRAME_CONTROL</span>
26030                    <span class="entry_type_enum_value">0</span>
26031                    <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
26032<p>Changing controls over multiple requests one after another will
26033produce results that have those controls applied atomically
26034each frame.<wbr/></p>
26035<p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
26036                  </li>
26037                  <li>
26038                    <span class="entry_type_enum_name">UNKNOWN</span>
26039                    <span class="entry_type_enum_value">-1</span>
26040                    <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
26041of the past requests applied to the camera settings.<wbr/></p>
26042<p>By submitting a series of identical requests,<wbr/> the camera device
26043will eventually have the camera settings applied,<wbr/> but it is
26044unknown when that exact point will be.<wbr/></p>
26045<p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
26046                  </li>
26047                </ul>
26048
26049            </td> <!-- entry_type -->
26050
26051            <td class="entry_description">
26052              <p>The maximum number of frames that can occur after a request
26053(different than the previous) has been submitted,<wbr/> and before the
26054result's state becomes synchronized.<wbr/></p>
26055            </td>
26056
26057            <td class="entry_units">
26058              Frame counts
26059            </td>
26060
26061            <td class="entry_range">
26062              <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
26063            </td>
26064
26065            <td class="entry_tags">
26066              <ul class="entry_tags">
26067                  <li><a href="#tag_V1">V1</a></li>
26068              </ul>
26069            </td>
26070
26071          </tr>
26072          <tr class="entries_header">
26073            <th class="th_details" colspan="5">Details</th>
26074          </tr>
26075          <tr class="entry_cont">
26076            <td class="entry_details" colspan="5">
26077              <p>This defines the maximum distance (in number of metadata results),<wbr/>
26078between the frame number of the request that has new controls to apply
26079and the frame number of the result that has all the controls applied.<wbr/></p>
26080<p>In other words this acts as an upper boundary for how many frames
26081must occur before the camera device knows for a fact that the new
26082submitted camera settings have been applied in outgoing frames.<wbr/></p>
26083            </td>
26084          </tr>
26085
26086          <tr class="entries_header">
26087            <th class="th_details" colspan="5">HAL Implementation Details</th>
26088          </tr>
26089          <tr class="entry_cont">
26090            <td class="entry_details" colspan="5">
26091              <p>For example if maxLatency was 2,<wbr/></p>
26092<pre><code>initial request = X (repeating)
26093request1 = X
26094request2 = Y
26095request3 = Y
26096request4 = Y
26097
26098where requestN has frameNumber N,<wbr/> and the first of the repeating
26099initial request's has frameNumber F (and F &lt; 1).<wbr/>
26100
26101initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
26102result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
26103result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
26104result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
26105result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
26106
26107where resultN has frameNumber N.<wbr/>
26108</code></pre>
26109<p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
26110<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
26111<code>4 - 2 = 2</code>.<wbr/></p>
26112<p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
26113<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
26114<code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p>
26115<p>LIMITED devices are strongly encouraged to use a non-negative
26116value.<wbr/> If UNKNOWN is used here then app developers do not have a way
26117to know when sensor settings have been applied.<wbr/></p>
26118            </td>
26119          </tr>
26120
26121          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26122           <!-- end of entry -->
26123        
26124        
26125
26126      <!-- end of kind -->
26127      </tbody>
26128
26129  <!-- end of section -->
26130  <tr><td colspan="6" id="section_reprocess" class="section">reprocess</td></tr>
26131
26132
26133      <tr><td colspan="6" class="kind">controls</td></tr>
26134
26135      <thead class="entries_header">
26136        <tr>
26137          <th class="th_name">Property Name</th>
26138          <th class="th_type">Type</th>
26139          <th class="th_description">Description</th>
26140          <th class="th_units">Units</th>
26141          <th class="th_range">Range</th>
26142          <th class="th_tags">Tags</th>
26143        </tr>
26144      </thead>
26145
26146      <tbody>
26147
26148        
26149
26150        
26151
26152        
26153
26154        
26155
26156                
26157          <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
26158            <td class="entry_name
26159             " rowspan="3">
26160              android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
26161            </td>
26162            <td class="entry_type">
26163                <span class="entry_type_name">float</span>
26164
26165              <span class="entry_type_visibility"> [public]</span>
26166
26167
26168              <span class="entry_type_hwlevel">[limited] </span>
26169
26170
26171
26172
26173            </td> <!-- entry_type -->
26174
26175            <td class="entry_description">
26176              <p>The amount of exposure time increase factor applied to the original output
26177frame by the application processing before sending for reprocessing.<wbr/></p>
26178            </td>
26179
26180            <td class="entry_units">
26181              Relative exposure time increase factor.<wbr/>
26182            </td>
26183
26184            <td class="entry_range">
26185              <p>&gt;= 1.<wbr/>0</p>
26186            </td>
26187
26188            <td class="entry_tags">
26189              <ul class="entry_tags">
26190                  <li><a href="#tag_REPROC">REPROC</a></li>
26191              </ul>
26192            </td>
26193
26194          </tr>
26195          <tr class="entries_header">
26196            <th class="th_details" colspan="5">Details</th>
26197          </tr>
26198          <tr class="entry_cont">
26199            <td class="entry_details" colspan="5">
26200              <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
26201capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
26202<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
26203output frames to effectively reduce the noise to the same level as a frame that was
26204captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
26205images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
26206the camera device is that the amount of noise in the image would be approximately what
26207would be expected if the original capture parameters had been a sensitivity of
26208S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
26209than S and T respectively.<wbr/> If the captured images were processed by the application
26210before being sent for reprocessing,<wbr/> then the application may have used image processing
26211algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
26212application-processed images (input images).<wbr/> By using the effectiveExposureFactor
26213control,<wbr/> the application can communicate to the camera device the actual noise level
26214improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
26215device can select appropriate noise reduction and edge enhancement parameters to avoid
26216excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
26217enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
26218<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
26219multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
26220fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
26221square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
26222adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
26223produce the best quality images.<wbr/></p>
26224<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
26225buffer in a way that affects its effective exposure time.<wbr/></p>
26226<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
26227reduction 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/>
26228Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
26229<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
26230            </td>
26231          </tr>
26232
26233
26234          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26235           <!-- end of entry -->
26236        
26237        
26238
26239      <!-- end of kind -->
26240      </tbody>
26241      <tr><td colspan="6" class="kind">dynamic</td></tr>
26242
26243      <thead class="entries_header">
26244        <tr>
26245          <th class="th_name">Property Name</th>
26246          <th class="th_type">Type</th>
26247          <th class="th_description">Description</th>
26248          <th class="th_units">Units</th>
26249          <th class="th_range">Range</th>
26250          <th class="th_tags">Tags</th>
26251        </tr>
26252      </thead>
26253
26254      <tbody>
26255
26256        
26257
26258        
26259
26260        
26261
26262        
26263
26264                
26265          <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
26266            <td class="entry_name
26267             " rowspan="3">
26268              android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
26269            </td>
26270            <td class="entry_type">
26271                <span class="entry_type_name">float</span>
26272
26273              <span class="entry_type_visibility"> [public]</span>
26274
26275
26276              <span class="entry_type_hwlevel">[limited] </span>
26277
26278
26279
26280
26281            </td> <!-- entry_type -->
26282
26283            <td class="entry_description">
26284              <p>The amount of exposure time increase factor applied to the original output
26285frame by the application processing before sending for reprocessing.<wbr/></p>
26286            </td>
26287
26288            <td class="entry_units">
26289              Relative exposure time increase factor.<wbr/>
26290            </td>
26291
26292            <td class="entry_range">
26293              <p>&gt;= 1.<wbr/>0</p>
26294            </td>
26295
26296            <td class="entry_tags">
26297              <ul class="entry_tags">
26298                  <li><a href="#tag_REPROC">REPROC</a></li>
26299              </ul>
26300            </td>
26301
26302          </tr>
26303          <tr class="entries_header">
26304            <th class="th_details" colspan="5">Details</th>
26305          </tr>
26306          <tr class="entry_cont">
26307            <td class="entry_details" colspan="5">
26308              <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
26309capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
26310<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
26311output frames to effectively reduce the noise to the same level as a frame that was
26312captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
26313images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
26314the camera device is that the amount of noise in the image would be approximately what
26315would be expected if the original capture parameters had been a sensitivity of
26316S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
26317than S and T respectively.<wbr/> If the captured images were processed by the application
26318before being sent for reprocessing,<wbr/> then the application may have used image processing
26319algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
26320application-processed images (input images).<wbr/> By using the effectiveExposureFactor
26321control,<wbr/> the application can communicate to the camera device the actual noise level
26322improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
26323device can select appropriate noise reduction and edge enhancement parameters to avoid
26324excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
26325enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
26326<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
26327multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
26328fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
26329square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
26330adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
26331produce the best quality images.<wbr/></p>
26332<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
26333buffer in a way that affects its effective exposure time.<wbr/></p>
26334<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
26335reduction 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/>
26336Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
26337<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
26338            </td>
26339          </tr>
26340
26341
26342          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26343           <!-- end of entry -->
26344        
26345        
26346
26347      <!-- end of kind -->
26348      </tbody>
26349      <tr><td colspan="6" class="kind">static</td></tr>
26350
26351      <thead class="entries_header">
26352        <tr>
26353          <th class="th_name">Property Name</th>
26354          <th class="th_type">Type</th>
26355          <th class="th_description">Description</th>
26356          <th class="th_units">Units</th>
26357          <th class="th_range">Range</th>
26358          <th class="th_tags">Tags</th>
26359        </tr>
26360      </thead>
26361
26362      <tbody>
26363
26364        
26365
26366        
26367
26368        
26369
26370        
26371
26372                
26373          <tr class="entry" id="static_android.reprocess.maxCaptureStall">
26374            <td class="entry_name
26375             " rowspan="3">
26376              android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
26377            </td>
26378            <td class="entry_type">
26379                <span class="entry_type_name">int32</span>
26380
26381              <span class="entry_type_visibility"> [public]</span>
26382
26383
26384              <span class="entry_type_hwlevel">[limited] </span>
26385
26386
26387
26388
26389            </td> <!-- entry_type -->
26390
26391            <td class="entry_description">
26392              <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
26393reprocess capture request.<wbr/></p>
26394            </td>
26395
26396            <td class="entry_units">
26397              Number of frames.<wbr/>
26398            </td>
26399
26400            <td class="entry_range">
26401              <p>&lt;= 4</p>
26402            </td>
26403
26404            <td class="entry_tags">
26405              <ul class="entry_tags">
26406                  <li><a href="#tag_REPROC">REPROC</a></li>
26407              </ul>
26408            </td>
26409
26410          </tr>
26411          <tr class="entries_header">
26412            <th class="th_details" colspan="5">Details</th>
26413          </tr>
26414          <tr class="entry_cont">
26415            <td class="entry_details" colspan="5">
26416              <p>The key describes the maximal interference that one reprocess (input) request
26417can introduce to the camera simultaneous streaming of regular (output) capture
26418requests,<wbr/> including repeating requests.<wbr/></p>
26419<p>When a reprocessing capture request is submitted while a camera output repeating request
26420(e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
26421pipeline for at least one frame duration so that the camera device is unable to process
26422the following capture request in time for the next sensor start of exposure boundary.<wbr/>
26423When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
26424duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
26425glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
26426the worst-case number of frame stall introduced by one reprocess request with any kind of
26427formats/<wbr/>sizes combination.<wbr/></p>
26428<p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
26429ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
26430<p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
26431i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
26432YUV_<wbr/>REPROCESSING).<wbr/></p>
26433            </td>
26434          </tr>
26435
26436
26437          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26438           <!-- end of entry -->
26439        
26440        
26441
26442      <!-- end of kind -->
26443      </tbody>
26444
26445  <!-- end of section -->
26446  <tr><td colspan="6" id="section_depth" class="section">depth</td></tr>
26447
26448
26449      <tr><td colspan="6" class="kind">static</td></tr>
26450
26451      <thead class="entries_header">
26452        <tr>
26453          <th class="th_name">Property Name</th>
26454          <th class="th_type">Type</th>
26455          <th class="th_description">Description</th>
26456          <th class="th_units">Units</th>
26457          <th class="th_range">Range</th>
26458          <th class="th_tags">Tags</th>
26459        </tr>
26460      </thead>
26461
26462      <tbody>
26463
26464        
26465
26466        
26467
26468        
26469
26470        
26471
26472                
26473          <tr class="entry" id="static_android.depth.maxDepthSamples">
26474            <td class="entry_name
26475             " rowspan="3">
26476              android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
26477            </td>
26478            <td class="entry_type">
26479                <span class="entry_type_name">int32</span>
26480
26481              <span class="entry_type_visibility"> [system]</span>
26482
26483
26484              <span class="entry_type_hwlevel">[limited] </span>
26485
26486
26487
26488
26489            </td> <!-- entry_type -->
26490
26491            <td class="entry_description">
26492              <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
26493            </td>
26494
26495            <td class="entry_units">
26496            </td>
26497
26498            <td class="entry_range">
26499            </td>
26500
26501            <td class="entry_tags">
26502              <ul class="entry_tags">
26503                  <li><a href="#tag_DEPTH">DEPTH</a></li>
26504              </ul>
26505            </td>
26506
26507          </tr>
26508          <tr class="entries_header">
26509            <th class="th_details" colspan="5">Details</th>
26510          </tr>
26511          <tr class="entry_cont">
26512            <td class="entry_details" colspan="5">
26513              <p>If a camera device supports outputting depth range data in the form of a depth point
26514cloud (<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH_POINT_CLOUD">Image<wbr/>Format#DEPTH_<wbr/>POINT_<wbr/>CLOUD</a>),<wbr/> this is the maximum
26515number of points an output buffer may contain.<wbr/></p>
26516<p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
26517If output in the depth point cloud format is not supported,<wbr/> this entry will
26518not be defined.<wbr/></p>
26519            </td>
26520          </tr>
26521
26522
26523          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26524           <!-- end of entry -->
26525        
26526                
26527          <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
26528            <td class="entry_name
26529             " rowspan="3">
26530              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
26531            </td>
26532            <td class="entry_type">
26533                <span class="entry_type_name entry_type_name_enum">int32</span>
26534                <span class="entry_type_container">x</span>
26535
26536                <span class="entry_type_array">
26537                  n x 4
26538                </span>
26539              <span class="entry_type_visibility"> [hidden as streamConfiguration]</span>
26540
26541
26542              <span class="entry_type_hwlevel">[limited] </span>
26543
26544
26545
26546                <ul class="entry_type_enum">
26547                  <li>
26548                    <span class="entry_type_enum_name">OUTPUT</span>
26549                  </li>
26550                  <li>
26551                    <span class="entry_type_enum_name">INPUT</span>
26552                  </li>
26553                </ul>
26554
26555            </td> <!-- entry_type -->
26556
26557            <td class="entry_description">
26558              <p>The available depth dataspace stream
26559configurations that this camera device supports
26560(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
26561            </td>
26562
26563            <td class="entry_units">
26564            </td>
26565
26566            <td class="entry_range">
26567            </td>
26568
26569            <td class="entry_tags">
26570              <ul class="entry_tags">
26571                  <li><a href="#tag_DEPTH">DEPTH</a></li>
26572              </ul>
26573            </td>
26574
26575          </tr>
26576          <tr class="entries_header">
26577            <th class="th_details" colspan="5">Details</th>
26578          </tr>
26579          <tr class="entry_cont">
26580            <td class="entry_details" colspan="5">
26581              <p>These are output stream configurations for use with
26582dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
26583listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
26584<p>Only devices that support depth output for at least
26585the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
26586this entry.<wbr/></p>
26587<p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
26588sparse depth point cloud must report a single entry for
26589the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
26590<a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
26591the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
26592            </td>
26593          </tr>
26594
26595
26596          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26597           <!-- end of entry -->
26598        
26599                
26600          <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
26601            <td class="entry_name
26602             " rowspan="3">
26603              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
26604            </td>
26605            <td class="entry_type">
26606                <span class="entry_type_name">int64</span>
26607                <span class="entry_type_container">x</span>
26608
26609                <span class="entry_type_array">
26610                  4 x n
26611                </span>
26612              <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
26613
26614
26615              <span class="entry_type_hwlevel">[limited] </span>
26616
26617
26618
26619
26620            </td> <!-- entry_type -->
26621
26622            <td class="entry_description">
26623              <p>This lists the minimum frame duration for each
26624format/<wbr/>size combination for depth output formats.<wbr/></p>
26625            </td>
26626
26627            <td class="entry_units">
26628              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
26629            </td>
26630
26631            <td class="entry_range">
26632            </td>
26633
26634            <td class="entry_tags">
26635              <ul class="entry_tags">
26636                  <li><a href="#tag_DEPTH">DEPTH</a></li>
26637              </ul>
26638            </td>
26639
26640          </tr>
26641          <tr class="entries_header">
26642            <th class="th_details" colspan="5">Details</th>
26643          </tr>
26644          <tr class="entry_cont">
26645            <td class="entry_details" colspan="5">
26646              <p>This should correspond to the frame duration when only that
26647stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
26648set to either OFF or FAST.<wbr/></p>
26649<p>When multiple streams are used in a request,<wbr/> the minimum frame
26650duration will be max(individual stream min durations).<wbr/></p>
26651<p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
26652is the same regardless of whether the stream is input or output.<wbr/></p>
26653<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
26654<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
26655calculating the max frame rate.<wbr/></p>
26656<p>(Keep in sync with <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p>
26657            </td>
26658          </tr>
26659
26660
26661          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26662           <!-- end of entry -->
26663        
26664                
26665          <tr class="entry" id="static_android.depth.availableDepthStallDurations">
26666            <td class="entry_name
26667             " rowspan="3">
26668              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
26669            </td>
26670            <td class="entry_type">
26671                <span class="entry_type_name">int64</span>
26672                <span class="entry_type_container">x</span>
26673
26674                <span class="entry_type_array">
26675                  4 x n
26676                </span>
26677              <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
26678
26679
26680              <span class="entry_type_hwlevel">[limited] </span>
26681
26682
26683
26684
26685            </td> <!-- entry_type -->
26686
26687            <td class="entry_description">
26688              <p>This lists the maximum stall duration for each
26689output format/<wbr/>size combination for depth streams.<wbr/></p>
26690            </td>
26691
26692            <td class="entry_units">
26693              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
26694            </td>
26695
26696            <td class="entry_range">
26697            </td>
26698
26699            <td class="entry_tags">
26700              <ul class="entry_tags">
26701                  <li><a href="#tag_DEPTH">DEPTH</a></li>
26702              </ul>
26703            </td>
26704
26705          </tr>
26706          <tr class="entries_header">
26707            <th class="th_details" colspan="5">Details</th>
26708          </tr>
26709          <tr class="entry_cont">
26710            <td class="entry_details" colspan="5">
26711              <p>A stall duration is how much extra time would get added
26712to the normal minimum frame duration for a repeating request
26713that has streams with non-zero stall.<wbr/></p>
26714<p>This functions similarly to
26715<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
26716streams.<wbr/></p>
26717<p>All depth output stream formats may have a nonzero stall
26718duration.<wbr/></p>
26719            </td>
26720          </tr>
26721
26722
26723          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26724           <!-- end of entry -->
26725        
26726                
26727          <tr class="entry" id="static_android.depth.depthIsExclusive">
26728            <td class="entry_name
26729             " rowspan="3">
26730              android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
26731            </td>
26732            <td class="entry_type">
26733                <span class="entry_type_name entry_type_name_enum">byte</span>
26734
26735              <span class="entry_type_visibility"> [public as boolean]</span>
26736
26737
26738              <span class="entry_type_hwlevel">[limited] </span>
26739
26740
26741
26742                <ul class="entry_type_enum">
26743                  <li>
26744                    <span class="entry_type_enum_name">FALSE</span>
26745                  </li>
26746                  <li>
26747                    <span class="entry_type_enum_name">TRUE</span>
26748                  </li>
26749                </ul>
26750
26751            </td> <!-- entry_type -->
26752
26753            <td class="entry_description">
26754              <p>Indicates whether a capture request may target both a
26755DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
26756YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
26757            </td>
26758
26759            <td class="entry_units">
26760            </td>
26761
26762            <td class="entry_range">
26763            </td>
26764
26765            <td class="entry_tags">
26766            </td>
26767
26768          </tr>
26769          <tr class="entries_header">
26770            <th class="th_details" colspan="5">Details</th>
26771          </tr>
26772          <tr class="entry_cont">
26773            <td class="entry_details" colspan="5">
26774              <p>If TRUE,<wbr/> including both depth and color outputs in a single
26775capture request is not supported.<wbr/> An application must interleave color
26776and depth requests.<wbr/>  If FALSE,<wbr/> a single request can target both types
26777of output.<wbr/></p>
26778<p>Typically,<wbr/> this restriction exists on camera devices that
26779need to emit a specific pattern or wavelength of light to
26780measure depth values,<wbr/> which causes the color image to be
26781corrupted during depth measurement.<wbr/></p>
26782            </td>
26783          </tr>
26784
26785
26786          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26787           <!-- end of entry -->
26788        
26789        
26790
26791      <!-- end of kind -->
26792      </tbody>
26793
26794  <!-- end of section -->
26795<!-- </namespace> -->
26796  </table>
26797
26798  <div class="tags" id="tag_index">
26799    <h2>Tags</h2>
26800    <ul>
26801      <li id="tag_BC">BC - 
26802        Needed for backwards compatibility with old Java API
26803    
26804        <ul class="tags_entries">
26805          <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
26806          <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
26807          <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
26808          <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
26809          <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
26810          <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
26811          <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
26812          <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
26813          <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
26814          <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
26815          <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
26816          <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
26817          <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
26818          <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
26819          <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
26820          <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
26821          <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
26822          <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
26823          <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
26824          <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
26825          <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
26826          <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
26827          <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
26828          <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
26829          <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
26830          <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
26831          <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
26832          <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
26833          <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
26834          <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
26835          <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
26836          <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
26837          <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
26838          <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
26839          <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
26840          <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
26841          <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
26842          <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
26843          <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
26844          <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
26845          <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
26846          <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
26847          <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
26848          <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
26849          <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
26850          <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
26851          <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
26852          <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
26853          <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
26854          <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
26855          <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
26856          <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
26857          <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
26858          <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
26859          <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
26860          <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
26861          <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
26862          <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
26863          <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
26864          <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
26865          <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
26866          <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
26867          <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
26868          <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
26869          <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
26870          <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
26871          <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
26872        </ul>
26873      </li> <!-- tag_BC -->
26874      <li id="tag_V1">V1 - 
26875        New features for first camera 2 release (API1)
26876    
26877        <ul class="tags_entries">
26878          <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
26879          <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
26880          <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
26881          <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
26882          <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
26883          <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
26884          <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
26885          <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
26886          <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
26887          <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
26888          <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
26889          <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
26890          <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
26891          <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
26892          <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
26893          <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
26894          <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
26895          <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
26896          <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
26897          <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
26898          <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
26899          <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
26900          <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
26901          <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
26902          <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
26903          <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
26904          <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
26905          <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
26906          <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
26907          <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
26908          <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
26909          <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
26910          <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
26911          <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
26912          <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
26913          <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
26914          <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
26915          <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
26916          <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
26917          <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
26918          <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
26919          <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
26920          <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
26921          <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
26922          <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
26923        </ul>
26924      </li> <!-- tag_V1 -->
26925      <li id="tag_RAW">RAW - 
26926        Needed for useful RAW image processing and DNG file support
26927    
26928        <ul class="tags_entries">
26929          <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
26930          <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
26931          <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
26932          <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
26933          <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
26934          <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
26935          <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
26936          <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
26937          <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
26938          <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
26939          <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
26940          <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
26941          <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
26942          <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
26943          <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
26944          <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
26945          <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
26946          <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
26947          <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
26948          <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
26949          <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
26950          <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
26951          <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li>
26952          <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li>
26953          <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
26954          <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
26955          <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
26956          <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
26957          <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
26958        </ul>
26959      </li> <!-- tag_RAW -->
26960      <li id="tag_HAL2">HAL2 - 
26961        Entry is only used by camera device HAL 2.x
26962    
26963        <ul class="tags_entries">
26964          <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
26965          <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
26966          <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
26967          <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
26968          <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
26969        </ul>
26970      </li> <!-- tag_HAL2 -->
26971      <li id="tag_FULL">FULL - 
26972        Entry is required for full hardware level devices, and optional for other hardware levels
26973    
26974        <ul class="tags_entries">
26975          <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
26976        </ul>
26977      </li> <!-- tag_FULL -->
26978      <li id="tag_DEPTH">DEPTH - 
26979        Entry is required for the depth capability.
26980    
26981        <ul class="tags_entries">
26982          <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
26983          <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
26984          <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
26985          <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
26986          <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
26987          <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
26988          <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
26989          <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
26990        </ul>
26991      </li> <!-- tag_DEPTH -->
26992      <li id="tag_REPROC">REPROC - 
26993        Entry is required for the YUV or PRIVATE reprocessing capability.
26994    
26995        <ul class="tags_entries">
26996          <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
26997          <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
26998          <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
26999          <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
27000          <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
27001          <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
27002          <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
27003          <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
27004          <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
27005          <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
27006        </ul>
27007      </li> <!-- tag_REPROC -->
27008      <li id="tag_FUTURE">FUTURE - 
27009        Entry is  under-specified and is not required for now. This is for book-keeping purpose,
27010        do not implement or use it, it may be revised for future.
27011    
27012        <ul class="tags_entries">
27013          <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
27014          <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
27015          <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
27016          <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
27017          <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
27018          <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
27019          <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
27020          <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
27021          <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
27022          <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
27023          <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
27024          <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
27025          <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
27026          <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
27027          <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
27028          <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
27029          <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
27030          <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
27031          <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
27032          <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
27033          <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
27034        </ul>
27035      </li> <!-- tag_FUTURE -->
27036    </ul>
27037  </div>
27038
27039  [ <a href="#">top</a> ]
27040
27041</body>
27042</html>
27043