1<!DOCTYPE html>
2<html>
3<!-- Copyright (C) 2012 The Android Open Source Project
4
5     Licensed under the Apache License, Version 2.0 (the "License");
6     you may not use this file except in compliance with the License.
7     You may obtain a copy of the License at
8
9          http://www.apache.org/licenses/LICENSE-2.0
10
11     Unless required by applicable law or agreed to in writing, software
12     distributed under the License is distributed on an "AS IS" BASIS,
13     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14     See the License for the specific language governing permissions and
15     limitations under the License.
16-->
17<head>
18  <!-- automatically generated from html.mako. do NOT edit directly -->
19  <meta charset="utf-8" />
20  <title>Android Camera HAL3.4 Properties</title>
21  <style type="text/css">
22     body { background-color: #f7f7f7; font-family: Roboto, sans-serif;}
23     h1 { color: #333333; }
24     h2 { color: #333333; }
25     a:link { color: #258aaf; text-decoration: none}
26     a:hover { color: #459aaf; text-decoration: underline }
27     a:visited { color: #154a5f; text-decoration: none}
28    .section { color: #eeeeee; font-size: 1.5em; font-weight: bold; background-color: #888888; padding: 0.5em 0em 0.5em 0.5em; border-width: thick thin thin thin; border-color: #111111 #777777 #777777 #777777}
29    .kind { color: #eeeeee; font-size: 1.2em; font-weight: bold; padding-left: 1.5em; background-color: #aaaaaa }
30    .entry { background-color: #f0f0f0 }
31    .entry_cont { background-color: #f0f0f0 }
32    .entries_header { background-color: #dddddd; text-align: center}
33
34    /* toc style */
35    .toc_section_header { font-size:1.3em;  }
36    .toc_kind_header { font-size:1.2em;  }
37    .toc_deprecated { text-decoration:line-through; }
38
39    /* table column sizes */
40    table { border-collapse:collapse; table-layout: fixed; width: 100%; word-wrap: break-word }
41    td,th { border: 1px solid; border-color: #aaaaaa; padding-left: 0.5em; padding-right: 0.5em }
42    .th_name { width: 20% }
43    .th_units { width: 10% }
44    .th_tags { width: 5% }
45    .th_details { width: 25% }
46    .th_type { width: 20% }
47    .th_description { width: 20% }
48    .th_range { width: 10% }
49    td { font-size: 0.9em; }
50
51    /* hide the first thead, we need it there only to enforce column sizes */
52    .thead_dummy { visibility: hidden; }
53
54    /* Entry flair */
55    .entry_name { color: #333333; padding-left:1.0em; font-size:1.1em; font-family: monospace; vertical-align:top; }
56    .entry_name_deprecated { text-decoration:line-through; }
57
58    /* Entry type flair */
59    .entry_type_name { font-size:1.1em; color: #669900; font-weight: bold;}
60    .entry_type_name_enum:after { color: #669900; font-weight: bold; content:" (enum)" }
61    .entry_type_visibility { font-weight: bolder; padding-left:1em}
62    .entry_type_synthetic { font-weight: bolder; color: #996600; }
63    .entry_type_hwlevel { font-weight: bolder; color: #000066; }
64    .entry_type_deprecated { font-weight: bolder; color: #4D4D4D; }
65    .entry_type_enum_name { font-family: monospace; font-weight: bolder; }
66    .entry_type_enum_notes:before { content:" - " }
67    .entry_type_enum_notes>p:first-child { display:inline; }
68    .entry_type_enum_value:before { content:" = " }
69    .entry_type_enum_value { font-family: monospace; }
70    .entry ul { margin: 0 0 0 0; list-style-position: inside; padding-left: 0.5em; }
71    .entry ul li { padding: 0 0 0 0; margin: 0 0 0 0;}
72    .entry_range_deprecated { font-weight: bolder; }
73
74    /* Entry tags flair */
75    .entry_tags ul { list-style-type: none; }
76
77    /* Entry details (full docs) flair */
78    .entry_details_header { font-weight: bold; background-color: #dddddd;
79      text-align: center; font-size: 1.1em; margin-left: 0em; margin-right: 0em; }
80
81    /* Entry spacer flair */
82    .entry_spacer { background-color: transparent; border-style: none; height: 0.5em; }
83
84    /* TODO: generate abbr element for each tag link? */
85    /* TODO for each x.y.z try to link it to the entry */
86
87  </style>
88
89  <style>
90
91    {
92      /* broken...
93         supposedly there is a bug in chrome that it lays out tables before
94         it knows its being printed, so the page-break-* styles are ignored
95         */
96        tr { page-break-after: always; page-break-inside: avoid; }
97    }
98
99  </style>
100</head>
101
102
103
104<body>
105  <h1>Android Camera HAL3.2 Properties</h1>
106
107
108  <h2>Table of Contents</h2>
109  <ul class="toc">
110    <li><a href="#tag_index" class="toc_section_header">Tags</a></li>
111    <li>
112      <span class="toc_section_header"><a href="#section_colorCorrection">colorCorrection</a></span>
113      <ul class="toc_section">
114        <li>
115          <span class="toc_kind_header">controls</span>
116          <ul class="toc_section">
117            <li
118            ><a href="#controls_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
119            <li
120            ><a href="#controls_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
121            <li
122            ><a href="#controls_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
123            <li
124            ><a href="#controls_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
125          </ul>
126        </li>
127        <li>
128          <span class="toc_kind_header">dynamic</span>
129          <ul class="toc_section">
130            <li
131            ><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
132            <li
133            ><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
134            <li
135            ><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
136            <li
137            ><a href="#dynamic_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
138          </ul>
139        </li>
140        <li>
141          <span class="toc_kind_header">static</span>
142          <ul class="toc_section">
143            <li
144            ><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a></li>
145          </ul>
146        </li>
147      </ul> <!-- toc_section -->
148    </li>
149    <li>
150      <span class="toc_section_header"><a href="#section_control">control</a></span>
151      <ul class="toc_section">
152        <li>
153          <span class="toc_kind_header">controls</span>
154          <ul class="toc_section">
155            <li
156            ><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
157            <li
158            ><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
159            <li
160            ><a href="#controls_android.control.aeLock">android.control.aeLock</a></li>
161            <li
162            ><a href="#controls_android.control.aeMode">android.control.aeMode</a></li>
163            <li
164            ><a href="#controls_android.control.aeRegions">android.control.aeRegions</a></li>
165            <li
166            ><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
167            <li
168            ><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
169            <li
170            ><a href="#controls_android.control.afMode">android.control.afMode</a></li>
171            <li
172            ><a href="#controls_android.control.afRegions">android.control.afRegions</a></li>
173            <li
174            ><a href="#controls_android.control.afTrigger">android.control.afTrigger</a></li>
175            <li
176            ><a href="#controls_android.control.awbLock">android.control.awbLock</a></li>
177            <li
178            ><a href="#controls_android.control.awbMode">android.control.awbMode</a></li>
179            <li
180            ><a href="#controls_android.control.awbRegions">android.control.awbRegions</a></li>
181            <li
182            ><a href="#controls_android.control.captureIntent">android.control.captureIntent</a></li>
183            <li
184            ><a href="#controls_android.control.effectMode">android.control.effectMode</a></li>
185            <li
186            ><a href="#controls_android.control.mode">android.control.mode</a></li>
187            <li
188            ><a href="#controls_android.control.sceneMode">android.control.sceneMode</a></li>
189            <li
190            ><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
191            <li
192            ><a href="#controls_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
193          </ul>
194        </li>
195        <li>
196          <span class="toc_kind_header">static</span>
197          <ul class="toc_section">
198            <li
199            ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li>
200            <li
201            ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li>
202            <li
203            ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li>
204            <li
205            ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li>
206            <li
207            ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li>
208            <li
209            ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li>
210            <li
211            ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li>
212            <li
213            ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li>
214            <li
215            ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li>
216            <li
217            ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li>
218            <li
219            ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li>
220            <li
221            ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li>
222            <li
223            ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li>
224            <li
225            ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li>
226            <li
227            ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li>
228            <li
229            ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li>
230            <li
231            ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li>
232            <li
233            ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li>
234            <li
235            ><a href="#static_android.control.availableModes">android.control.availableModes</a></li>
236            <li
237            ><a href="#static_android.control.postRawSensitivityBoostRange">android.control.postRawSensitivityBoostRange</a></li>
238          </ul>
239        </li>
240        <li>
241          <span class="toc_kind_header">dynamic</span>
242          <ul class="toc_section">
243            <li
244                class="toc_deprecated"
245            ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li>
246            <li
247            ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
248            <li
249            ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
250            <li
251            ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li>
252            <li
253            ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li>
254            <li
255            ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li>
256            <li
257            ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
258            <li
259            ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
260            <li
261            ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li>
262            <li
263            ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li>
264            <li
265            ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li>
266            <li
267            ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li>
268            <li
269            ><a href="#dynamic_android.control.afState">android.control.afState</a></li>
270            <li
271                class="toc_deprecated"
272            ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li>
273            <li
274            ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li>
275            <li
276            ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li>
277            <li
278            ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li>
279            <li
280            ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li>
281            <li
282            ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li>
283            <li
284            ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li>
285            <li
286            ><a href="#dynamic_android.control.mode">android.control.mode</a></li>
287            <li
288            ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li>
289            <li
290            ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
291            <li
292            ><a href="#dynamic_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
293          </ul>
294        </li>
295      </ul> <!-- toc_section -->
296    </li>
297    <li>
298      <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span>
299      <ul class="toc_section">
300        <li>
301          <span class="toc_kind_header">controls</span>
302          <ul class="toc_section">
303            <li
304            ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li>
305          </ul>
306        </li>
307      </ul> <!-- toc_section -->
308    </li>
309    <li>
310      <span class="toc_section_header"><a href="#section_edge">edge</a></span>
311      <ul class="toc_section">
312        <li>
313          <span class="toc_kind_header">controls</span>
314          <ul class="toc_section">
315            <li
316            ><a href="#controls_android.edge.mode">android.edge.mode</a></li>
317            <li
318            ><a href="#controls_android.edge.strength">android.edge.strength</a></li>
319          </ul>
320        </li>
321        <li>
322          <span class="toc_kind_header">static</span>
323          <ul class="toc_section">
324            <li
325            ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li>
326          </ul>
327        </li>
328        <li>
329          <span class="toc_kind_header">dynamic</span>
330          <ul class="toc_section">
331            <li
332            ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li>
333          </ul>
334        </li>
335      </ul> <!-- toc_section -->
336    </li>
337    <li>
338      <span class="toc_section_header"><a href="#section_flash">flash</a></span>
339      <ul class="toc_section">
340        <li>
341          <span class="toc_kind_header">controls</span>
342          <ul class="toc_section">
343            <li
344            ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li>
345            <li
346            ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li>
347            <li
348            ><a href="#controls_android.flash.mode">android.flash.mode</a></li>
349          </ul>
350        </li>
351        <li>
352          <span class="toc_kind_header">static</span>
353          <ul class="toc_section">
354
355            <li
356            ><a href="#static_android.flash.info.available">android.flash.info.available</a></li>
357            <li
358            ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li>
359
360            <li
361            ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li>
362            <li
363            ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li>
364          </ul>
365        </li>
366        <li>
367          <span class="toc_kind_header">dynamic</span>
368          <ul class="toc_section">
369            <li
370            ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li>
371            <li
372            ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li>
373            <li
374            ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li>
375            <li
376            ><a href="#dynamic_android.flash.state">android.flash.state</a></li>
377          </ul>
378        </li>
379      </ul> <!-- toc_section -->
380    </li>
381    <li>
382      <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span>
383      <ul class="toc_section">
384        <li>
385          <span class="toc_kind_header">controls</span>
386          <ul class="toc_section">
387            <li
388            ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li>
389          </ul>
390        </li>
391        <li>
392          <span class="toc_kind_header">static</span>
393          <ul class="toc_section">
394            <li
395            ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li>
396          </ul>
397        </li>
398        <li>
399          <span class="toc_kind_header">dynamic</span>
400          <ul class="toc_section">
401            <li
402            ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li>
403          </ul>
404        </li>
405      </ul> <!-- toc_section -->
406    </li>
407    <li>
408      <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span>
409      <ul class="toc_section">
410        <li>
411          <span class="toc_kind_header">controls</span>
412          <ul class="toc_section">
413            <li
414            ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
415            <li
416            ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
417            <li
418            ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
419            <li
420            ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
421            <li
422            ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li>
423            <li
424            ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li>
425            <li
426            ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
427            <li
428            ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
429          </ul>
430        </li>
431        <li>
432          <span class="toc_kind_header">static</span>
433          <ul class="toc_section">
434            <li
435            ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li>
436            <li
437            ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li>
438          </ul>
439        </li>
440        <li>
441          <span class="toc_kind_header">dynamic</span>
442          <ul class="toc_section">
443            <li
444            ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
445            <li
446            ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
447            <li
448            ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
449            <li
450            ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
451            <li
452            ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li>
453            <li
454            ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li>
455            <li
456            ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li>
457            <li
458            ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
459            <li
460            ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
461          </ul>
462        </li>
463      </ul> <!-- toc_section -->
464    </li>
465    <li>
466      <span class="toc_section_header"><a href="#section_lens">lens</a></span>
467      <ul class="toc_section">
468        <li>
469          <span class="toc_kind_header">controls</span>
470          <ul class="toc_section">
471            <li
472            ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li>
473            <li
474            ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li>
475            <li
476            ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li>
477            <li
478            ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li>
479            <li
480            ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
481          </ul>
482        </li>
483        <li>
484          <span class="toc_kind_header">static</span>
485          <ul class="toc_section">
486
487            <li
488            ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li>
489            <li
490            ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li>
491            <li
492            ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li>
493            <li
494            ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li>
495            <li
496            ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li>
497            <li
498            ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li>
499            <li
500            ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li>
501            <li
502            ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li>
503
504            <li
505            ><a href="#static_android.lens.facing">android.lens.facing</a></li>
506            <li
507            ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li>
508            <li
509            ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
510            <li
511            ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
512            <li
513            ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
514          </ul>
515        </li>
516        <li>
517          <span class="toc_kind_header">dynamic</span>
518          <ul class="toc_section">
519            <li
520            ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li>
521            <li
522            ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li>
523            <li
524            ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li>
525            <li
526            ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li>
527            <li
528            ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li>
529            <li
530            ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
531            <li
532            ><a href="#dynamic_android.lens.state">android.lens.state</a></li>
533            <li
534            ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li>
535            <li
536            ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
537            <li
538            ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
539            <li
540            ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
541          </ul>
542        </li>
543      </ul> <!-- toc_section -->
544    </li>
545    <li>
546      <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span>
547      <ul class="toc_section">
548        <li>
549          <span class="toc_kind_header">controls</span>
550          <ul class="toc_section">
551            <li
552            ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
553            <li
554            ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li>
555          </ul>
556        </li>
557        <li>
558          <span class="toc_kind_header">static</span>
559          <ul class="toc_section">
560            <li
561            ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li>
562          </ul>
563        </li>
564        <li>
565          <span class="toc_kind_header">dynamic</span>
566          <ul class="toc_section">
567            <li
568            ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
569          </ul>
570        </li>
571      </ul> <!-- toc_section -->
572    </li>
573    <li>
574      <span class="toc_section_header"><a href="#section_quirks">quirks</a></span>
575      <ul class="toc_section">
576        <li>
577          <span class="toc_kind_header">static</span>
578          <ul class="toc_section">
579            <li
580                class="toc_deprecated"
581            ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li>
582            <li
583                class="toc_deprecated"
584            ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li>
585            <li
586                class="toc_deprecated"
587            ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li>
588            <li
589                class="toc_deprecated"
590            ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li>
591          </ul>
592        </li>
593        <li>
594          <span class="toc_kind_header">dynamic</span>
595          <ul class="toc_section">
596            <li
597                class="toc_deprecated"
598            ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li>
599          </ul>
600        </li>
601      </ul> <!-- toc_section -->
602    </li>
603    <li>
604      <span class="toc_section_header"><a href="#section_request">request</a></span>
605      <ul class="toc_section">
606        <li>
607          <span class="toc_kind_header">controls</span>
608          <ul class="toc_section">
609            <li
610                class="toc_deprecated"
611            ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li>
612            <li
613            ><a href="#controls_android.request.id">android.request.id</a></li>
614            <li
615                class="toc_deprecated"
616            ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li>
617            <li
618            ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li>
619            <li
620                class="toc_deprecated"
621            ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li>
622            <li
623                class="toc_deprecated"
624            ><a href="#controls_android.request.type">android.request.type</a></li>
625          </ul>
626        </li>
627        <li>
628          <span class="toc_kind_header">static</span>
629          <ul class="toc_section">
630            <li
631            ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li>
632            <li
633            ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li>
634            <li
635            ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li>
636            <li
637            ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li>
638            <li
639                class="toc_deprecated"
640            ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li>
641            <li
642            ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li>
643            <li
644            ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li>
645            <li
646            ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li>
647            <li
648            ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li>
649            <li
650            ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li>
651            <li
652            ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
653            <li
654            ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
655          </ul>
656        </li>
657        <li>
658          <span class="toc_kind_header">dynamic</span>
659          <ul class="toc_section">
660            <li
661                class="toc_deprecated"
662            ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li>
663            <li
664            ><a href="#dynamic_android.request.id">android.request.id</a></li>
665            <li
666            ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li>
667            <li
668                class="toc_deprecated"
669            ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li>
670            <li
671            ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li>
672          </ul>
673        </li>
674      </ul> <!-- toc_section -->
675    </li>
676    <li>
677      <span class="toc_section_header"><a href="#section_scaler">scaler</a></span>
678      <ul class="toc_section">
679        <li>
680          <span class="toc_kind_header">controls</span>
681          <ul class="toc_section">
682            <li
683            ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
684          </ul>
685        </li>
686        <li>
687          <span class="toc_kind_header">static</span>
688          <ul class="toc_section">
689            <li
690                class="toc_deprecated"
691            ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li>
692            <li
693                class="toc_deprecated"
694            ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li>
695            <li
696                class="toc_deprecated"
697            ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li>
698            <li
699            ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li>
700            <li
701                class="toc_deprecated"
702            ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li>
703            <li
704                class="toc_deprecated"
705            ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li>
706            <li
707                class="toc_deprecated"
708            ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li>
709            <li
710                class="toc_deprecated"
711            ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li>
712            <li
713            ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li>
714            <li
715            ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li>
716            <li
717            ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li>
718            <li
719            ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li>
720            <li
721            ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li>
722            <li
723            ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li>
724          </ul>
725        </li>
726        <li>
727          <span class="toc_kind_header">dynamic</span>
728          <ul class="toc_section">
729            <li
730            ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
731          </ul>
732        </li>
733      </ul> <!-- toc_section -->
734    </li>
735    <li>
736      <span class="toc_section_header"><a href="#section_sensor">sensor</a></span>
737      <ul class="toc_section">
738        <li>
739          <span class="toc_kind_header">controls</span>
740          <ul class="toc_section">
741            <li
742            ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
743            <li
744            ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
745            <li
746            ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
747            <li
748            ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
749            <li
750            ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
751          </ul>
752        </li>
753        <li>
754          <span class="toc_kind_header">static</span>
755          <ul class="toc_section">
756
757            <li
758            ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
759            <li
760            ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
761            <li
762            ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
763            <li
764            ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
765            <li
766            ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
767            <li
768            ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li>
769            <li
770            ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li>
771            <li
772            ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li>
773            <li
774            ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li>
775            <li
776            ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li>
777            <li
778            ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li>
779
780            <li
781            ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
782            <li
783            ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
784            <li
785            ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
786            <li
787            ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
788            <li
789            ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
790            <li
791            ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
792            <li
793            ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
794            <li
795            ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
796            <li
797            ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
798            <li
799            ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
800            <li
801            ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
802            <li
803            ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
804            <li
805            ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
806            <li
807            ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
808            <li
809            ><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li>
810            <li
811            ><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li>
812          </ul>
813        </li>
814        <li>
815          <span class="toc_kind_header">dynamic</span>
816          <ul class="toc_section">
817            <li
818            ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
819            <li
820            ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
821            <li
822            ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
823            <li
824            ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
825            <li
826            ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
827            <li
828            ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
829            <li
830            ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
831            <li
832            ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
833            <li
834            ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
835            <li
836            ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
837            <li
838            ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
839            <li
840            ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
841            <li
842            ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
843            <li
844            ><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li>
845            <li
846            ><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li>
847          </ul>
848        </li>
849      </ul> <!-- toc_section -->
850    </li>
851    <li>
852      <span class="toc_section_header"><a href="#section_shading">shading</a></span>
853      <ul class="toc_section">
854        <li>
855          <span class="toc_kind_header">controls</span>
856          <ul class="toc_section">
857            <li
858            ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
859            <li
860            ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
861          </ul>
862        </li>
863        <li>
864          <span class="toc_kind_header">dynamic</span>
865          <ul class="toc_section">
866            <li
867            ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
868          </ul>
869        </li>
870        <li>
871          <span class="toc_kind_header">static</span>
872          <ul class="toc_section">
873            <li
874            ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li>
875          </ul>
876        </li>
877      </ul> <!-- toc_section -->
878    </li>
879    <li>
880      <span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
881      <ul class="toc_section">
882        <li>
883          <span class="toc_kind_header">controls</span>
884          <ul class="toc_section">
885            <li
886            ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
887            <li
888            ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
889            <li
890            ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
891            <li
892            ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
893            <li
894            ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
895          </ul>
896        </li>
897        <li>
898          <span class="toc_kind_header">static</span>
899          <ul class="toc_section">
900
901            <li
902            ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
903            <li
904            ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
905            <li
906            ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
907            <li
908            ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
909            <li
910            ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
911            <li
912            ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
913            <li
914            ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
915            <li
916            ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
917
918          </ul>
919        </li>
920        <li>
921          <span class="toc_kind_header">dynamic</span>
922          <ul class="toc_section">
923            <li
924            ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
925            <li
926            ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
927            <li
928            ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
929            <li
930            ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
931            <li
932            ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
933            <li
934            ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
935            <li
936            ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
937            <li
938            ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
939            <li
940            ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
941            <li
942            ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
943            <li
944            ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
945            <li
946            ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
947            <li
948                class="toc_deprecated"
949            ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
950            <li
951                class="toc_deprecated"
952            ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
953            <li
954            ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
955            <li
956            ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
957            <li
958            ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
959            <li
960            ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
961          </ul>
962        </li>
963      </ul> <!-- toc_section -->
964    </li>
965    <li>
966      <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
967      <ul class="toc_section">
968        <li>
969          <span class="toc_kind_header">controls</span>
970          <ul class="toc_section">
971            <li
972            ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
973            <li
974            ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
975            <li
976            ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
977            <li
978            ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
979            <li
980            ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
981            <li
982            ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li>
983            <li
984            ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
985          </ul>
986        </li>
987        <li>
988          <span class="toc_kind_header">static</span>
989          <ul class="toc_section">
990            <li
991            ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
992            <li
993            ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
994          </ul>
995        </li>
996        <li>
997          <span class="toc_kind_header">dynamic</span>
998          <ul class="toc_section">
999            <li
1000            ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
1001            <li
1002            ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1003            <li
1004            ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1005            <li
1006            ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
1007            <li
1008            ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
1009            <li
1010            ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li>
1011            <li
1012            ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1013          </ul>
1014        </li>
1015      </ul> <!-- toc_section -->
1016    </li>
1017    <li>
1018      <span class="toc_section_header"><a href="#section_led">led</a></span>
1019      <ul class="toc_section">
1020        <li>
1021          <span class="toc_kind_header">controls</span>
1022          <ul class="toc_section">
1023            <li
1024            ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
1025          </ul>
1026        </li>
1027        <li>
1028          <span class="toc_kind_header">dynamic</span>
1029          <ul class="toc_section">
1030            <li
1031            ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
1032          </ul>
1033        </li>
1034        <li>
1035          <span class="toc_kind_header">static</span>
1036          <ul class="toc_section">
1037            <li
1038            ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
1039          </ul>
1040        </li>
1041      </ul> <!-- toc_section -->
1042    </li>
1043    <li>
1044      <span class="toc_section_header"><a href="#section_info">info</a></span>
1045      <ul class="toc_section">
1046        <li>
1047          <span class="toc_kind_header">static</span>
1048          <ul class="toc_section">
1049            <li
1050            ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
1051          </ul>
1052        </li>
1053      </ul> <!-- toc_section -->
1054    </li>
1055    <li>
1056      <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
1057      <ul class="toc_section">
1058        <li>
1059          <span class="toc_kind_header">controls</span>
1060          <ul class="toc_section">
1061            <li
1062            ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
1063          </ul>
1064        </li>
1065        <li>
1066          <span class="toc_kind_header">dynamic</span>
1067          <ul class="toc_section">
1068            <li
1069            ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
1070          </ul>
1071        </li>
1072      </ul> <!-- toc_section -->
1073    </li>
1074    <li>
1075      <span class="toc_section_header"><a href="#section_sync">sync</a></span>
1076      <ul class="toc_section">
1077        <li>
1078          <span class="toc_kind_header">dynamic</span>
1079          <ul class="toc_section">
1080            <li
1081            ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
1082          </ul>
1083        </li>
1084        <li>
1085          <span class="toc_kind_header">static</span>
1086          <ul class="toc_section">
1087            <li
1088            ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
1089          </ul>
1090        </li>
1091      </ul> <!-- toc_section -->
1092    </li>
1093    <li>
1094      <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span>
1095      <ul class="toc_section">
1096        <li>
1097          <span class="toc_kind_header">controls</span>
1098          <ul class="toc_section">
1099            <li
1100            ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1101          </ul>
1102        </li>
1103        <li>
1104          <span class="toc_kind_header">dynamic</span>
1105          <ul class="toc_section">
1106            <li
1107            ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1108          </ul>
1109        </li>
1110        <li>
1111          <span class="toc_kind_header">static</span>
1112          <ul class="toc_section">
1113            <li
1114            ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li>
1115          </ul>
1116        </li>
1117      </ul> <!-- toc_section -->
1118    </li>
1119    <li>
1120      <span class="toc_section_header"><a href="#section_depth">depth</a></span>
1121      <ul class="toc_section">
1122        <li>
1123          <span class="toc_kind_header">static</span>
1124          <ul class="toc_section">
1125            <li
1126            ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li>
1127            <li
1128            ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li>
1129            <li
1130            ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li>
1131            <li
1132            ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li>
1133            <li
1134            ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li>
1135          </ul>
1136        </li>
1137      </ul> <!-- toc_section -->
1138    </li>
1139  </ul>
1140
1141
1142  <h1>Properties</h1>
1143  <table class="properties">
1144
1145    <thead class="thead_dummy">
1146      <tr>
1147        <th class="th_name">Property Name</th>
1148        <th class="th_type">Type</th>
1149        <th class="th_description">Description</th>
1150        <th class="th_units">Units</th>
1151        <th class="th_range">Range</th>
1152        <th class="th_tags">Tags</th>
1153      </tr>
1154    </thead> <!-- so that the first occurrence of thead is not
1155                         above the first occurrence of tr -->
1156<!-- <namespace name="android"> -->
1157  <tr><td colspan="6" id="section_colorCorrection" class="section">colorCorrection</td></tr>
1158
1159
1160      <tr><td colspan="6" class="kind">controls</td></tr>
1161
1162      <thead class="entries_header">
1163        <tr>
1164          <th class="th_name">Property Name</th>
1165          <th class="th_type">Type</th>
1166          <th class="th_description">Description</th>
1167          <th class="th_units">Units</th>
1168          <th class="th_range">Range</th>
1169          <th class="th_tags">Tags</th>
1170        </tr>
1171      </thead>
1172
1173      <tbody>
1174
1175        
1176
1177        
1178
1179        
1180
1181        
1182
1183                
1184          <tr class="entry" id="controls_android.colorCorrection.mode">
1185            <td class="entry_name
1186             " rowspan="5">
1187              android.<wbr/>color<wbr/>Correction.<wbr/>mode
1188            </td>
1189            <td class="entry_type">
1190                <span class="entry_type_name entry_type_name_enum">byte</span>
1191
1192              <span class="entry_type_visibility"> [public]</span>
1193
1194
1195              <span class="entry_type_hwlevel">[full] </span>
1196
1197
1198
1199                <ul class="entry_type_enum">
1200                  <li>
1201                    <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1202                    <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1203and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1204<p>All advanced white balance adjustments (not specified
1205by our white balance pipeline) must be disabled.<wbr/></p>
1206<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
1207TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1208this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1209                  </li>
1210                  <li>
1211                    <span class="entry_type_enum_name">FAST</span>
1212                    <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1213capture rate relative to sensor raw output.<wbr/></p>
1214<p>Advanced white balance adjustments above and beyond
1215the specified white balance pipeline may be applied.<wbr/></p>
1216<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
1217the camera device uses the last frame's AWB values
1218(or defaults if AWB has never been run).<wbr/></p></span>
1219                  </li>
1220                  <li>
1221                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1222                    <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1223quality but the capture rate might be reduced (relative to sensor
1224raw output rate)</p>
1225<p>Advanced white balance adjustments above and beyond
1226the specified white balance pipeline may be applied.<wbr/></p>
1227<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
1228the camera device uses the last frame's AWB values
1229(or defaults if AWB has never been run).<wbr/></p></span>
1230                  </li>
1231                </ul>
1232
1233            </td> <!-- entry_type -->
1234
1235            <td class="entry_description">
1236              <p>The mode control selects how the image data is converted from the
1237sensor's native color into linear sRGB color.<wbr/></p>
1238            </td>
1239
1240            <td class="entry_units">
1241            </td>
1242
1243            <td class="entry_range">
1244            </td>
1245
1246            <td class="entry_tags">
1247            </td>
1248
1249          </tr>
1250          <tr class="entries_header">
1251            <th class="th_details" colspan="5">Details</th>
1252          </tr>
1253          <tr class="entry_cont">
1254            <td class="entry_details" colspan="5">
1255              <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
1256control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1257application controls how the color mapping is performed.<wbr/></p>
1258<p>We define the expected processing pipeline below.<wbr/> For consistency
1259across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1260<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1261do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1262<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1263camera device (in the results) and be roughly correct.<wbr/></p>
1264<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1265FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1266as what was produced by the camera device in the earlier frame.<wbr/></p>
1267<p>The expected processing pipeline is as follows:</p>
1268<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1269<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1270gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1271matrix (applied after demosaic).<wbr/></p>
1272<p>The 4-channel white-balance gains are defined as:</p>
1273<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1274</code></pre>
1275<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1276output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1277These may be identical for a given camera device implementation; if
1278the camera device does not support a separate gain for even/<wbr/>odd green
1279channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1280<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1281<p>The matrices for color transforms are defined as a 9-entry vector:</p>
1282<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 ]
1283</code></pre>
1284<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1285to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1286<p>with colors as follows:</p>
1287<pre><code>r' = I0r + I1g + I2b
1288g' = I3r + I4g + I5b
1289b' = I6r + I7g + I8b
1290</code></pre>
1291<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1292values are clipped to fit within the range.<wbr/></p>
1293            </td>
1294          </tr>
1295
1296          <tr class="entries_header">
1297            <th class="th_details" colspan="5">HAL Implementation Details</th>
1298          </tr>
1299          <tr class="entry_cont">
1300            <td class="entry_details" colspan="5">
1301              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1302on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1303That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1304capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1305            </td>
1306          </tr>
1307
1308          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1309           <!-- end of entry -->
1310        
1311                
1312          <tr class="entry" id="controls_android.colorCorrection.transform">
1313            <td class="entry_name
1314             " rowspan="3">
1315              android.<wbr/>color<wbr/>Correction.<wbr/>transform
1316            </td>
1317            <td class="entry_type">
1318                <span class="entry_type_name">rational</span>
1319                <span class="entry_type_container">x</span>
1320
1321                <span class="entry_type_array">
1322                  3 x 3
1323                </span>
1324              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1325
1326
1327              <span class="entry_type_hwlevel">[full] </span>
1328
1329
1330                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1331
1332
1333            </td> <!-- entry_type -->
1334
1335            <td class="entry_description">
1336              <p>A color transform matrix to use to transform
1337from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1338            </td>
1339
1340            <td class="entry_units">
1341              Unitless scale factors
1342            </td>
1343
1344            <td class="entry_range">
1345            </td>
1346
1347            <td class="entry_tags">
1348            </td>
1349
1350          </tr>
1351          <tr class="entries_header">
1352            <th class="th_details" colspan="5">Details</th>
1353          </tr>
1354          <tr class="entry_cont">
1355            <td class="entry_details" colspan="5">
1356              <p>This matrix is either set by the camera device when the request
1357<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1358directly by the application in the request when the
1359<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1360<p>In the latter case,<wbr/> the camera device may round the matrix to account
1361for precision issues; the final rounded matrix should be reported back
1362in this matrix result metadata.<wbr/> The transform should keep the magnitude
1363of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1364values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1365<p>The valid range of each matrix element varies on different devices,<wbr/> but
1366values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1367            </td>
1368          </tr>
1369
1370
1371          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1372           <!-- end of entry -->
1373        
1374                
1375          <tr class="entry" id="controls_android.colorCorrection.gains">
1376            <td class="entry_name
1377             " rowspan="5">
1378              android.<wbr/>color<wbr/>Correction.<wbr/>gains
1379            </td>
1380            <td class="entry_type">
1381                <span class="entry_type_name">float</span>
1382                <span class="entry_type_container">x</span>
1383
1384                <span class="entry_type_array">
1385                  4
1386                </span>
1387              <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1388
1389
1390              <span class="entry_type_hwlevel">[full] </span>
1391
1392
1393                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1394
1395
1396            </td> <!-- entry_type -->
1397
1398            <td class="entry_description">
1399              <p>Gains applying to Bayer raw color channels for
1400white-balance.<wbr/></p>
1401            </td>
1402
1403            <td class="entry_units">
1404              Unitless gain factors
1405            </td>
1406
1407            <td class="entry_range">
1408            </td>
1409
1410            <td class="entry_tags">
1411            </td>
1412
1413          </tr>
1414          <tr class="entries_header">
1415            <th class="th_details" colspan="5">Details</th>
1416          </tr>
1417          <tr class="entry_cont">
1418            <td class="entry_details" colspan="5">
1419              <p>These per-channel gains are either set by the camera device
1420when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1421TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1422request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1423TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1424<p>The gains in the result metadata are the gains actually
1425applied by the camera device to the current frame.<wbr/></p>
1426<p>The valid range of gains varies on different devices,<wbr/> but gains
1427between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1428device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1429this can create color artifacts.<wbr/></p>
1430            </td>
1431          </tr>
1432
1433          <tr class="entries_header">
1434            <th class="th_details" colspan="5">HAL Implementation Details</th>
1435          </tr>
1436          <tr class="entry_cont">
1437            <td class="entry_details" colspan="5">
1438              <p>The 4-channel white-balance gains are defined in
1439the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1440for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1441is the gain for green pixels on the odd rows.<wbr/></p>
1442<p>If a HAL does not support a separate gain for even/<wbr/>odd green
1443channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1444<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1445            </td>
1446          </tr>
1447
1448          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1449           <!-- end of entry -->
1450        
1451                
1452          <tr class="entry" id="controls_android.colorCorrection.aberrationMode">
1453            <td class="entry_name
1454             " rowspan="3">
1455              android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1456            </td>
1457            <td class="entry_type">
1458                <span class="entry_type_name entry_type_name_enum">byte</span>
1459
1460              <span class="entry_type_visibility"> [public]</span>
1461
1462
1463              <span class="entry_type_hwlevel">[legacy] </span>
1464
1465
1466
1467                <ul class="entry_type_enum">
1468                  <li>
1469                    <span class="entry_type_enum_name">OFF</span>
1470                    <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1471                  </li>
1472                  <li>
1473                    <span class="entry_type_enum_name">FAST</span>
1474                    <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1475relative to sensor raw output.<wbr/></p></span>
1476                  </li>
1477                  <li>
1478                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1479                    <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1480reduced (relative to sensor raw output rate)</p></span>
1481                  </li>
1482                </ul>
1483
1484            </td> <!-- entry_type -->
1485
1486            <td class="entry_description">
1487              <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1488            </td>
1489
1490            <td class="entry_units">
1491            </td>
1492
1493            <td class="entry_range">
1494              <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1495            </td>
1496
1497            <td class="entry_tags">
1498            </td>
1499
1500          </tr>
1501          <tr class="entries_header">
1502            <th class="th_details" colspan="5">Details</th>
1503          </tr>
1504          <tr class="entry_cont">
1505            <td class="entry_details" colspan="5">
1506              <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1507can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1508the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1509minimize the chromatic artifacts that may occur along the object boundaries in an
1510image.<wbr/></p>
1511<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1512correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1513use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1514capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1515applying aberration correction.<wbr/></p>
1516<p>LEGACY devices will always be in FAST mode.<wbr/></p>
1517            </td>
1518          </tr>
1519
1520
1521          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1522           <!-- end of entry -->
1523        
1524        
1525
1526      <!-- end of kind -->
1527      </tbody>
1528      <tr><td colspan="6" class="kind">dynamic</td></tr>
1529
1530      <thead class="entries_header">
1531        <tr>
1532          <th class="th_name">Property Name</th>
1533          <th class="th_type">Type</th>
1534          <th class="th_description">Description</th>
1535          <th class="th_units">Units</th>
1536          <th class="th_range">Range</th>
1537          <th class="th_tags">Tags</th>
1538        </tr>
1539      </thead>
1540
1541      <tbody>
1542
1543        
1544
1545        
1546
1547        
1548
1549        
1550
1551                
1552          <tr class="entry" id="dynamic_android.colorCorrection.mode">
1553            <td class="entry_name
1554             " rowspan="5">
1555              android.<wbr/>color<wbr/>Correction.<wbr/>mode
1556            </td>
1557            <td class="entry_type">
1558                <span class="entry_type_name entry_type_name_enum">byte</span>
1559
1560              <span class="entry_type_visibility"> [public]</span>
1561
1562
1563              <span class="entry_type_hwlevel">[full] </span>
1564
1565
1566
1567                <ul class="entry_type_enum">
1568                  <li>
1569                    <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1570                    <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1571and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1572<p>All advanced white balance adjustments (not specified
1573by our white balance pipeline) must be disabled.<wbr/></p>
1574<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
1575TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1576this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1577                  </li>
1578                  <li>
1579                    <span class="entry_type_enum_name">FAST</span>
1580                    <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1581capture rate relative to sensor raw output.<wbr/></p>
1582<p>Advanced white balance adjustments above and beyond
1583the specified white balance pipeline may be applied.<wbr/></p>
1584<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
1585the camera device uses the last frame's AWB values
1586(or defaults if AWB has never been run).<wbr/></p></span>
1587                  </li>
1588                  <li>
1589                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1590                    <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1591quality but the capture rate might be reduced (relative to sensor
1592raw output rate)</p>
1593<p>Advanced white balance adjustments above and beyond
1594the specified white balance pipeline may be applied.<wbr/></p>
1595<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
1596the camera device uses the last frame's AWB values
1597(or defaults if AWB has never been run).<wbr/></p></span>
1598                  </li>
1599                </ul>
1600
1601            </td> <!-- entry_type -->
1602
1603            <td class="entry_description">
1604              <p>The mode control selects how the image data is converted from the
1605sensor's native color into linear sRGB color.<wbr/></p>
1606            </td>
1607
1608            <td class="entry_units">
1609            </td>
1610
1611            <td class="entry_range">
1612            </td>
1613
1614            <td class="entry_tags">
1615            </td>
1616
1617          </tr>
1618          <tr class="entries_header">
1619            <th class="th_details" colspan="5">Details</th>
1620          </tr>
1621          <tr class="entry_cont">
1622            <td class="entry_details" colspan="5">
1623              <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
1624control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1625application controls how the color mapping is performed.<wbr/></p>
1626<p>We define the expected processing pipeline below.<wbr/> For consistency
1627across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1628<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1629do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1630<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1631camera device (in the results) and be roughly correct.<wbr/></p>
1632<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1633FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1634as what was produced by the camera device in the earlier frame.<wbr/></p>
1635<p>The expected processing pipeline is as follows:</p>
1636<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1637<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1638gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1639matrix (applied after demosaic).<wbr/></p>
1640<p>The 4-channel white-balance gains are defined as:</p>
1641<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1642</code></pre>
1643<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1644output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1645These may be identical for a given camera device implementation; if
1646the camera device does not support a separate gain for even/<wbr/>odd green
1647channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1648<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1649<p>The matrices for color transforms are defined as a 9-entry vector:</p>
1650<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 ]
1651</code></pre>
1652<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1653to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1654<p>with colors as follows:</p>
1655<pre><code>r' = I0r + I1g + I2b
1656g' = I3r + I4g + I5b
1657b' = I6r + I7g + I8b
1658</code></pre>
1659<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1660values are clipped to fit within the range.<wbr/></p>
1661            </td>
1662          </tr>
1663
1664          <tr class="entries_header">
1665            <th class="th_details" colspan="5">HAL Implementation Details</th>
1666          </tr>
1667          <tr class="entry_cont">
1668            <td class="entry_details" colspan="5">
1669              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1670on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1671That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1672capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1673            </td>
1674          </tr>
1675
1676          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1677           <!-- end of entry -->
1678        
1679                
1680          <tr class="entry" id="dynamic_android.colorCorrection.transform">
1681            <td class="entry_name
1682             " rowspan="3">
1683              android.<wbr/>color<wbr/>Correction.<wbr/>transform
1684            </td>
1685            <td class="entry_type">
1686                <span class="entry_type_name">rational</span>
1687                <span class="entry_type_container">x</span>
1688
1689                <span class="entry_type_array">
1690                  3 x 3
1691                </span>
1692              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1693
1694
1695              <span class="entry_type_hwlevel">[full] </span>
1696
1697
1698                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1699
1700
1701            </td> <!-- entry_type -->
1702
1703            <td class="entry_description">
1704              <p>A color transform matrix to use to transform
1705from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1706            </td>
1707
1708            <td class="entry_units">
1709              Unitless scale factors
1710            </td>
1711
1712            <td class="entry_range">
1713            </td>
1714
1715            <td class="entry_tags">
1716            </td>
1717
1718          </tr>
1719          <tr class="entries_header">
1720            <th class="th_details" colspan="5">Details</th>
1721          </tr>
1722          <tr class="entry_cont">
1723            <td class="entry_details" colspan="5">
1724              <p>This matrix is either set by the camera device when the request
1725<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1726directly by the application in the request when the
1727<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1728<p>In the latter case,<wbr/> the camera device may round the matrix to account
1729for precision issues; the final rounded matrix should be reported back
1730in this matrix result metadata.<wbr/> The transform should keep the magnitude
1731of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1732values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1733<p>The valid range of each matrix element varies on different devices,<wbr/> but
1734values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1735            </td>
1736          </tr>
1737
1738
1739          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1740           <!-- end of entry -->
1741        
1742                
1743          <tr class="entry" id="dynamic_android.colorCorrection.gains">
1744            <td class="entry_name
1745             " rowspan="5">
1746              android.<wbr/>color<wbr/>Correction.<wbr/>gains
1747            </td>
1748            <td class="entry_type">
1749                <span class="entry_type_name">float</span>
1750                <span class="entry_type_container">x</span>
1751
1752                <span class="entry_type_array">
1753                  4
1754                </span>
1755              <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1756
1757
1758              <span class="entry_type_hwlevel">[full] </span>
1759
1760
1761                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1762
1763
1764            </td> <!-- entry_type -->
1765
1766            <td class="entry_description">
1767              <p>Gains applying to Bayer raw color channels for
1768white-balance.<wbr/></p>
1769            </td>
1770
1771            <td class="entry_units">
1772              Unitless gain factors
1773            </td>
1774
1775            <td class="entry_range">
1776            </td>
1777
1778            <td class="entry_tags">
1779            </td>
1780
1781          </tr>
1782          <tr class="entries_header">
1783            <th class="th_details" colspan="5">Details</th>
1784          </tr>
1785          <tr class="entry_cont">
1786            <td class="entry_details" colspan="5">
1787              <p>These per-channel gains are either set by the camera device
1788when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1789TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1790request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1791TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1792<p>The gains in the result metadata are the gains actually
1793applied by the camera device to the current frame.<wbr/></p>
1794<p>The valid range of gains varies on different devices,<wbr/> but gains
1795between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1796device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1797this can create color artifacts.<wbr/></p>
1798            </td>
1799          </tr>
1800
1801          <tr class="entries_header">
1802            <th class="th_details" colspan="5">HAL Implementation Details</th>
1803          </tr>
1804          <tr class="entry_cont">
1805            <td class="entry_details" colspan="5">
1806              <p>The 4-channel white-balance gains are defined in
1807the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1808for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1809is the gain for green pixels on the odd rows.<wbr/></p>
1810<p>If a HAL does not support a separate gain for even/<wbr/>odd green
1811channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1812<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1813            </td>
1814          </tr>
1815
1816          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1817           <!-- end of entry -->
1818        
1819                
1820          <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
1821            <td class="entry_name
1822             " rowspan="3">
1823              android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1824            </td>
1825            <td class="entry_type">
1826                <span class="entry_type_name entry_type_name_enum">byte</span>
1827
1828              <span class="entry_type_visibility"> [public]</span>
1829
1830
1831              <span class="entry_type_hwlevel">[legacy] </span>
1832
1833
1834
1835                <ul class="entry_type_enum">
1836                  <li>
1837                    <span class="entry_type_enum_name">OFF</span>
1838                    <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1839                  </li>
1840                  <li>
1841                    <span class="entry_type_enum_name">FAST</span>
1842                    <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1843relative to sensor raw output.<wbr/></p></span>
1844                  </li>
1845                  <li>
1846                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1847                    <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1848reduced (relative to sensor raw output rate)</p></span>
1849                  </li>
1850                </ul>
1851
1852            </td> <!-- entry_type -->
1853
1854            <td class="entry_description">
1855              <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1856            </td>
1857
1858            <td class="entry_units">
1859            </td>
1860
1861            <td class="entry_range">
1862              <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1863            </td>
1864
1865            <td class="entry_tags">
1866            </td>
1867
1868          </tr>
1869          <tr class="entries_header">
1870            <th class="th_details" colspan="5">Details</th>
1871          </tr>
1872          <tr class="entry_cont">
1873            <td class="entry_details" colspan="5">
1874              <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1875can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1876the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1877minimize the chromatic artifacts that may occur along the object boundaries in an
1878image.<wbr/></p>
1879<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1880correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1881use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1882capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1883applying aberration correction.<wbr/></p>
1884<p>LEGACY devices will always be in FAST mode.<wbr/></p>
1885            </td>
1886          </tr>
1887
1888
1889          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1890           <!-- end of entry -->
1891        
1892        
1893
1894      <!-- end of kind -->
1895      </tbody>
1896      <tr><td colspan="6" class="kind">static</td></tr>
1897
1898      <thead class="entries_header">
1899        <tr>
1900          <th class="th_name">Property Name</th>
1901          <th class="th_type">Type</th>
1902          <th class="th_description">Description</th>
1903          <th class="th_units">Units</th>
1904          <th class="th_range">Range</th>
1905          <th class="th_tags">Tags</th>
1906        </tr>
1907      </thead>
1908
1909      <tbody>
1910
1911        
1912
1913        
1914
1915        
1916
1917        
1918
1919                
1920          <tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
1921            <td class="entry_name
1922             " rowspan="5">
1923              android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes
1924            </td>
1925            <td class="entry_type">
1926                <span class="entry_type_name">byte</span>
1927                <span class="entry_type_container">x</span>
1928
1929                <span class="entry_type_array">
1930                  n
1931                </span>
1932              <span class="entry_type_visibility"> [public as enumList]</span>
1933
1934
1935              <span class="entry_type_hwlevel">[legacy] </span>
1936
1937
1938                <div class="entry_type_notes">list of enums</div>
1939
1940
1941            </td> <!-- entry_type -->
1942
1943            <td class="entry_description">
1944              <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
1945supported by this camera device.<wbr/></p>
1946            </td>
1947
1948            <td class="entry_units">
1949            </td>
1950
1951            <td class="entry_range">
1952              <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
1953            </td>
1954
1955            <td class="entry_tags">
1956              <ul class="entry_tags">
1957                  <li><a href="#tag_V1">V1</a></li>
1958              </ul>
1959            </td>
1960
1961          </tr>
1962          <tr class="entries_header">
1963            <th class="th_details" colspan="5">Details</th>
1964          </tr>
1965          <tr class="entry_cont">
1966            <td class="entry_details" colspan="5">
1967              <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
1968aberration correction modes are available for a device,<wbr/> this list will solely include
1969OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
1970<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
1971OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
1972<p>LEGACY devices will always only support FAST mode.<wbr/></p>
1973            </td>
1974          </tr>
1975
1976          <tr class="entries_header">
1977            <th class="th_details" colspan="5">HAL Implementation Details</th>
1978          </tr>
1979          <tr class="entry_cont">
1980            <td class="entry_details" colspan="5">
1981              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
1982on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1983That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1984capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
1985            </td>
1986          </tr>
1987
1988          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1989           <!-- end of entry -->
1990        
1991        
1992
1993      <!-- end of kind -->
1994      </tbody>
1995
1996  <!-- end of section -->
1997  <tr><td colspan="6" id="section_control" class="section">control</td></tr>
1998
1999
2000      <tr><td colspan="6" class="kind">controls</td></tr>
2001
2002      <thead class="entries_header">
2003        <tr>
2004          <th class="th_name">Property Name</th>
2005          <th class="th_type">Type</th>
2006          <th class="th_description">Description</th>
2007          <th class="th_units">Units</th>
2008          <th class="th_range">Range</th>
2009          <th class="th_tags">Tags</th>
2010        </tr>
2011      </thead>
2012
2013      <tbody>
2014
2015        
2016
2017        
2018
2019        
2020
2021        
2022
2023                
2024          <tr class="entry" id="controls_android.control.aeAntibandingMode">
2025            <td class="entry_name
2026             " rowspan="5">
2027              android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
2028            </td>
2029            <td class="entry_type">
2030                <span class="entry_type_name entry_type_name_enum">byte</span>
2031
2032              <span class="entry_type_visibility"> [public]</span>
2033
2034
2035              <span class="entry_type_hwlevel">[legacy] </span>
2036
2037
2038
2039                <ul class="entry_type_enum">
2040                  <li>
2041                    <span class="entry_type_enum_name">OFF</span>
2042                    <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
2043avoid banding problems.<wbr/></p></span>
2044                  </li>
2045                  <li>
2046                    <span class="entry_type_enum_name">50HZ</span>
2047                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2048avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
2049                  </li>
2050                  <li>
2051                    <span class="entry_type_enum_name">60HZ</span>
2052                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2053avoid banding problems with 60Hz illumination
2054sources.<wbr/></p></span>
2055                  </li>
2056                  <li>
2057                    <span class="entry_type_enum_name">AUTO</span>
2058                    <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
2059antibanding routine to the current illumination
2060condition.<wbr/> This is the default mode if AUTO is
2061available on given camera device.<wbr/></p></span>
2062                  </li>
2063                </ul>
2064
2065            </td> <!-- entry_type -->
2066
2067            <td class="entry_description">
2068              <p>The desired setting for the camera device's auto-exposure
2069algorithm's antibanding compensation.<wbr/></p>
2070            </td>
2071
2072            <td class="entry_units">
2073            </td>
2074
2075            <td class="entry_range">
2076              <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
2077            </td>
2078
2079            <td class="entry_tags">
2080              <ul class="entry_tags">
2081                  <li><a href="#tag_BC">BC</a></li>
2082              </ul>
2083            </td>
2084
2085          </tr>
2086          <tr class="entries_header">
2087            <th class="th_details" colspan="5">Details</th>
2088          </tr>
2089          <tr class="entry_cont">
2090            <td class="entry_details" colspan="5">
2091              <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
2092lights,<wbr/> flicker at the rate of the power supply frequency
2093(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
2094typically not noticeable to a person,<wbr/> it can be visible to
2095a camera device.<wbr/> If a camera sets its exposure time to the
2096wrong value,<wbr/> the flicker may become visible in the
2097viewfinder as flicker or in a final captured image,<wbr/> as a
2098set of variable-brightness bands across the image.<wbr/></p>
2099<p>Therefore,<wbr/> the auto-exposure routines of camera devices
2100include antibanding routines that ensure that the chosen
2101exposure value will not cause such banding.<wbr/> The choice of
2102exposure time depends on the rate of flicker,<wbr/> which the
2103camera device can detect automatically,<wbr/> or the expected
2104rate can be selected by the application using this
2105control.<wbr/></p>
2106<p>A given camera device may not support all of the possible
2107options for the antibanding mode.<wbr/> The
2108<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
2109the available modes for a given camera device.<wbr/></p>
2110<p>AUTO mode is the default if it is available on given
2111camera device.<wbr/> When AUTO mode is not available,<wbr/> the
2112default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
2113and 60HZ will be available.<wbr/></p>
2114<p>If manual exposure control is enabled (by setting
2115<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/>
2116then this setting has no effect,<wbr/> and the application must
2117ensure it selects exposure times that do not cause banding
2118issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
2119the application in this.<wbr/></p>
2120            </td>
2121          </tr>
2122
2123          <tr class="entries_header">
2124            <th class="th_details" colspan="5">HAL Implementation Details</th>
2125          </tr>
2126          <tr class="entry_cont">
2127            <td class="entry_details" colspan="5">
2128              <p>For all capture request templates,<wbr/> this field must be set
2129to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
2130the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
213160HZ must be available.<wbr/></p>
2132<p>If manual exposure control is enabled (by setting
2133<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/>
2134then the exposure values provided by the application must not be
2135adjusted for antibanding.<wbr/></p>
2136            </td>
2137          </tr>
2138
2139          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2140           <!-- end of entry -->
2141        
2142                
2143          <tr class="entry" id="controls_android.control.aeExposureCompensation">
2144            <td class="entry_name
2145             " rowspan="3">
2146              android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
2147            </td>
2148            <td class="entry_type">
2149                <span class="entry_type_name">int32</span>
2150
2151              <span class="entry_type_visibility"> [public]</span>
2152
2153
2154              <span class="entry_type_hwlevel">[legacy] </span>
2155
2156
2157
2158
2159            </td> <!-- entry_type -->
2160
2161            <td class="entry_description">
2162              <p>Adjustment to auto-exposure (AE) target image
2163brightness.<wbr/></p>
2164            </td>
2165
2166            <td class="entry_units">
2167              Compensation steps
2168            </td>
2169
2170            <td class="entry_range">
2171              <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
2172            </td>
2173
2174            <td class="entry_tags">
2175              <ul class="entry_tags">
2176                  <li><a href="#tag_BC">BC</a></li>
2177              </ul>
2178            </td>
2179
2180          </tr>
2181          <tr class="entries_header">
2182            <th class="th_details" colspan="5">Details</th>
2183          </tr>
2184          <tr class="entry_cont">
2185            <td class="entry_details" colspan="5">
2186              <p>The adjustment is measured as a count of steps,<wbr/> with the
2187step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
2188allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
2189<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
2190will mean an exposure compensation of +2 EV; -3 will mean an
2191exposure compensation of -1 EV.<wbr/> One EV represents a doubling
2192of image brightness.<wbr/> Note that this control will only be
2193effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
2194will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
2195<p>In the event of exposure compensation value being changed,<wbr/> camera device
2196may take several frames to reach the newly requested exposure target.<wbr/>
2197During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
2198state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
2199change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
2200FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
2201            </td>
2202          </tr>
2203
2204
2205          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2206           <!-- end of entry -->
2207        
2208                
2209          <tr class="entry" id="controls_android.control.aeLock">
2210            <td class="entry_name
2211             " rowspan="3">
2212              android.<wbr/>control.<wbr/>ae<wbr/>Lock
2213            </td>
2214            <td class="entry_type">
2215                <span class="entry_type_name entry_type_name_enum">byte</span>
2216
2217              <span class="entry_type_visibility"> [public as boolean]</span>
2218
2219
2220              <span class="entry_type_hwlevel">[legacy] </span>
2221
2222
2223
2224                <ul class="entry_type_enum">
2225                  <li>
2226                    <span class="entry_type_enum_name">OFF</span>
2227                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
2228is free to update its parameters.<wbr/></p></span>
2229                  </li>
2230                  <li>
2231                    <span class="entry_type_enum_name">ON</span>
2232                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
2233must not update the exposure and sensitivity parameters
2234while the lock is active.<wbr/></p>
2235<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
2236will still take effect while auto-exposure is locked.<wbr/></p>
2237<p>Some rare LEGACY devices may not support
2238this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
2239                  </li>
2240                </ul>
2241
2242            </td> <!-- entry_type -->
2243
2244            <td class="entry_description">
2245              <p>Whether auto-exposure (AE) is currently locked to its latest
2246calculated values.<wbr/></p>
2247            </td>
2248
2249            <td class="entry_units">
2250            </td>
2251
2252            <td class="entry_range">
2253            </td>
2254
2255            <td class="entry_tags">
2256              <ul class="entry_tags">
2257                  <li><a href="#tag_BC">BC</a></li>
2258              </ul>
2259            </td>
2260
2261          </tr>
2262          <tr class="entries_header">
2263            <th class="th_details" colspan="5">Details</th>
2264          </tr>
2265          <tr class="entry_cont">
2266            <td class="entry_details" colspan="5">
2267              <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
2268and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
2269<p>Note that even when AE is locked,<wbr/> the flash may be fired if
2270the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
2271ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
2272<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
2273is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
2274<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
2275when AE is already locked,<wbr/> the camera device will not change the exposure time
2276(<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>)
2277parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
2278is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
2279<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/>
2280Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
2281<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
2282the AE if AE is locked by the camera device internally during precapture metering
2283sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
2284ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
2285will never succeed in a sequence of preview requests where AE lock is always set
2286to <code>false</code>.<wbr/></p>
2287<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
2288get locked do not necessarily correspond to the settings that were present in the
2289latest capture result received from the camera device,<wbr/> since additional captures
2290and AE updates may have occurred even before the result was sent out.<wbr/> If an
2291application is switching between automatic and manual control and wishes to eliminate
2292any flicker during the switch,<wbr/> the following procedure is recommended:</p>
2293<ol>
2294<li>Starting in auto-AE mode:</li>
2295<li>Lock AE</li>
2296<li>Wait for the first result to be output that has the AE locked</li>
2297<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
2298<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
2299</ol>
2300<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>
2301            </td>
2302          </tr>
2303
2304
2305          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2306           <!-- end of entry -->
2307        
2308                
2309          <tr class="entry" id="controls_android.control.aeMode">
2310            <td class="entry_name
2311             " rowspan="3">
2312              android.<wbr/>control.<wbr/>ae<wbr/>Mode
2313            </td>
2314            <td class="entry_type">
2315                <span class="entry_type_name entry_type_name_enum">byte</span>
2316
2317              <span class="entry_type_visibility"> [public]</span>
2318
2319
2320              <span class="entry_type_hwlevel">[legacy] </span>
2321
2322
2323
2324                <ul class="entry_type_enum">
2325                  <li>
2326                    <span class="entry_type_enum_name">OFF</span>
2327                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
2328<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2329<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
2330<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
2331device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
2332a flash unit for this camera device.<wbr/></p>
2333<p>Note that auto-white balance (AWB) and auto-focus (AF)
2334behavior is device dependent when AE is in OFF mode.<wbr/>
2335To have consistent behavior across different devices,<wbr/>
2336it is recommended to either set AWB and AF to OFF mode
2337or lock AWB and AF before setting AE to OFF.<wbr/>
2338See <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/>
2339<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>
2340for more details.<wbr/></p>
2341<p>LEGACY devices do not support the OFF mode and will
2342override attempts to use this value to ON.<wbr/></p></span>
2343                  </li>
2344                  <li>
2345                    <span class="entry_type_enum_name">ON</span>
2346                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
2347with no flash control.<wbr/></p>
2348<p>The application's values for
2349<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2350<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2351<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
2352application has control over the various
2353android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
2354                  </li>
2355                  <li>
2356                    <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
2357                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2358the camera's flash unit,<wbr/> firing it in low-light
2359conditions.<wbr/></p>
2360<p>The flash may be fired during a precapture sequence
2361(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2362may be fired for captures for which the
2363<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2364STILL_<wbr/>CAPTURE</p></span>
2365                  </li>
2366                  <li>
2367                    <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
2368                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2369the camera's flash unit,<wbr/> always firing it for still
2370captures.<wbr/></p>
2371<p>The flash may be fired during a precapture sequence
2372(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2373will always be fired for captures for which the
2374<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2375STILL_<wbr/>CAPTURE</p></span>
2376                  </li>
2377                  <li>
2378                    <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
2379                    <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
2380reduction.<wbr/></p>
2381<p>If deemed necessary by the camera device,<wbr/> a red eye
2382reduction flash will fire during the precapture
2383sequence.<wbr/></p></span>
2384                  </li>
2385                </ul>
2386
2387            </td> <!-- entry_type -->
2388
2389            <td class="entry_description">
2390              <p>The desired mode for the camera device's
2391auto-exposure routine.<wbr/></p>
2392            </td>
2393
2394            <td class="entry_units">
2395            </td>
2396
2397            <td class="entry_range">
2398              <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
2399            </td>
2400
2401            <td class="entry_tags">
2402              <ul class="entry_tags">
2403                  <li><a href="#tag_BC">BC</a></li>
2404              </ul>
2405            </td>
2406
2407          </tr>
2408          <tr class="entries_header">
2409            <th class="th_details" colspan="5">Details</th>
2410          </tr>
2411          <tr class="entry_cont">
2412            <td class="entry_details" colspan="5">
2413              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
2414AUTO.<wbr/></p>
2415<p>When set to any of the ON modes,<wbr/> the camera device's
2416auto-exposure routine is enabled,<wbr/> overriding the
2417application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
2418and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2419<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2420<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
2421is selected,<wbr/> the camera device's flash unit controls are
2422also overridden.<wbr/></p>
2423<p>The FLASH modes are only available if the camera device
2424has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
2425<p>If flash TORCH mode is desired,<wbr/> this field must be set to
2426ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
2427<p>When set to any of the ON modes,<wbr/> the values chosen by the
2428camera device auto-exposure routine for the overridden
2429fields for a given capture will be available in its
2430CaptureResult.<wbr/></p>
2431            </td>
2432          </tr>
2433
2434
2435          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2436           <!-- end of entry -->
2437        
2438                
2439          <tr class="entry" id="controls_android.control.aeRegions">
2440            <td class="entry_name
2441             " rowspan="5">
2442              android.<wbr/>control.<wbr/>ae<wbr/>Regions
2443            </td>
2444            <td class="entry_type">
2445                <span class="entry_type_name">int32</span>
2446                <span class="entry_type_container">x</span>
2447
2448                <span class="entry_type_array">
2449                  5 x area_count
2450                </span>
2451              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2452
2453
2454
2455
2456
2457
2458            </td> <!-- entry_type -->
2459
2460            <td class="entry_description">
2461              <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
2462            </td>
2463
2464            <td class="entry_units">
2465              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2466            </td>
2467
2468            <td class="entry_range">
2469              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2470<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2471            </td>
2472
2473            <td class="entry_tags">
2474              <ul class="entry_tags">
2475                  <li><a href="#tag_BC">BC</a></li>
2476              </ul>
2477            </td>
2478
2479          </tr>
2480          <tr class="entries_header">
2481            <th class="th_details" colspan="5">Details</th>
2482          </tr>
2483          <tr class="entry_cont">
2484            <td class="entry_details" colspan="5">
2485              <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
2486Otherwise will always be present.<wbr/></p>
2487<p>The maximum number of regions supported by the device is determined by the value
2488of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
2489<p>The coordinate system is based on the active pixel array,<wbr/>
2490with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2491(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2492<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2493bottom-right pixel in the active pixel array.<wbr/></p>
2494<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2495for every pixel in the area.<wbr/> This means that a large metering area
2496with the same weight as a smaller area will have more effect in
2497the metering result.<wbr/> Metering areas can partially overlap and the
2498camera device will add the weights in the overlap region.<wbr/></p>
2499<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
2500region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
2501weight is ignored.<wbr/></p>
2502<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2503camera device.<wbr/></p>
2504<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
2505capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2506region and output only the intersection rectangle as the metering region in the result
2507metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
2508not reported in the result metadata.<wbr/></p>
2509            </td>
2510          </tr>
2511
2512          <tr class="entries_header">
2513            <th class="th_details" colspan="5">HAL Implementation Details</th>
2514          </tr>
2515          <tr class="entry_cont">
2516            <td class="entry_details" colspan="5">
2517              <p>The HAL level representation of MeteringRectangle[] is a
2518int[5 * area_<wbr/>count].<wbr/>
2519Every five elements represent a metering region of
2520(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2521The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2522exclusive on xmax and ymax.<wbr/></p>
2523            </td>
2524          </tr>
2525
2526          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2527           <!-- end of entry -->
2528        
2529                
2530          <tr class="entry" id="controls_android.control.aeTargetFpsRange">
2531            <td class="entry_name
2532             " rowspan="3">
2533              android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
2534            </td>
2535            <td class="entry_type">
2536                <span class="entry_type_name">int32</span>
2537                <span class="entry_type_container">x</span>
2538
2539                <span class="entry_type_array">
2540                  2
2541                </span>
2542              <span class="entry_type_visibility"> [public as rangeInt]</span>
2543
2544
2545              <span class="entry_type_hwlevel">[legacy] </span>
2546
2547
2548
2549
2550            </td> <!-- entry_type -->
2551
2552            <td class="entry_description">
2553              <p>Range over which the auto-exposure routine can
2554adjust the capture frame rate to maintain good
2555exposure.<wbr/></p>
2556            </td>
2557
2558            <td class="entry_units">
2559              Frames per second (FPS)
2560            </td>
2561
2562            <td class="entry_range">
2563              <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>
2564            </td>
2565
2566            <td class="entry_tags">
2567              <ul class="entry_tags">
2568                  <li><a href="#tag_BC">BC</a></li>
2569              </ul>
2570            </td>
2571
2572          </tr>
2573          <tr class="entries_header">
2574            <th class="th_details" colspan="5">Details</th>
2575          </tr>
2576          <tr class="entry_cont">
2577            <td class="entry_details" colspan="5">
2578              <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
2579manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
2580<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
2581            </td>
2582          </tr>
2583
2584
2585          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2586           <!-- end of entry -->
2587        
2588                
2589          <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
2590            <td class="entry_name
2591             " rowspan="5">
2592              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
2593            </td>
2594            <td class="entry_type">
2595                <span class="entry_type_name entry_type_name_enum">byte</span>
2596
2597              <span class="entry_type_visibility"> [public]</span>
2598
2599
2600              <span class="entry_type_hwlevel">[limited] </span>
2601
2602
2603
2604                <ul class="entry_type_enum">
2605                  <li>
2606                    <span class="entry_type_enum_name">IDLE</span>
2607                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2608                  </li>
2609                  <li>
2610                    <span class="entry_type_enum_name">START</span>
2611                    <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
2612by the camera device.<wbr/></p>
2613<p>The exact effect of the precapture trigger depends on
2614the current AE mode and state.<wbr/></p></span>
2615                  </li>
2616                  <li>
2617                    <span class="entry_type_enum_name">CANCEL</span>
2618                    <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
2619precapture metering sequence,<wbr/> the auto-exposure routine will return to its
2620initial state.<wbr/></p></span>
2621                  </li>
2622                </ul>
2623
2624            </td> <!-- entry_type -->
2625
2626            <td class="entry_description">
2627              <p>Whether the camera device will trigger a precapture
2628metering sequence when it processes this request.<wbr/></p>
2629            </td>
2630
2631            <td class="entry_units">
2632            </td>
2633
2634            <td class="entry_range">
2635            </td>
2636
2637            <td class="entry_tags">
2638              <ul class="entry_tags">
2639                  <li><a href="#tag_BC">BC</a></li>
2640              </ul>
2641            </td>
2642
2643          </tr>
2644          <tr class="entries_header">
2645            <th class="th_details" colspan="5">Details</th>
2646          </tr>
2647          <tr class="entry_cont">
2648            <td class="entry_details" colspan="5">
2649              <p>This entry is normally set to IDLE,<wbr/> or is not
2650included at all in the request settings.<wbr/> When included and
2651set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
2652precapture metering sequence.<wbr/></p>
2653<p>When set to CANCEL,<wbr/> the camera device will cancel any active
2654precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
2655If a precapture metering sequence is already completed,<wbr/> and the camera
2656device has implicitly locked the AE for subsequent still capture,<wbr/> the
2657CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
2658<p>The precapture sequence should be triggered before starting a
2659high-quality still capture for final metering decisions to
2660be made,<wbr/> and for firing pre-capture flash pulses to estimate
2661scene brightness and required final capture flash power,<wbr/> when
2662the flash is enabled.<wbr/></p>
2663<p>Normally,<wbr/> this entry should be set to START for only a
2664single request,<wbr/> and the application should wait until the
2665sequence completes before starting a new one.<wbr/></p>
2666<p>When a precapture metering sequence is finished,<wbr/> the camera device
2667may lock the auto-exposure routine internally to be able to accurately expose the
2668subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
2669For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
2670submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
2671submit 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
2672with <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
2673still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
2674API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
2675internally locked AE if the application doesn't submit a still capture request after
2676the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
2677be used in devices that have earlier API levels.<wbr/></p>
2678<p>The exact effect of auto-exposure (AE) precapture trigger
2679depends on the current AE mode and state; see
2680<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
2681details.<wbr/></p>
2682<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
2683capturing a high-resolution JPEG image will automatically trigger a
2684precapture sequence before the high-resolution capture,<wbr/> including
2685potentially firing a pre-capture flash.<wbr/></p>
2686<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
2687simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
2688the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
2689focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
2690trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
2691changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
2692example.<wbr/></p>
2693<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
2694the camera device will complete them in the optimal order for that device.<wbr/></p>
2695            </td>
2696          </tr>
2697
2698          <tr class="entries_header">
2699            <th class="th_details" colspan="5">HAL Implementation Details</th>
2700          </tr>
2701          <tr class="entry_cont">
2702            <td class="entry_details" colspan="5">
2703              <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
2704(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
2705treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
2706AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
2707to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
2708            </td>
2709          </tr>
2710
2711          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2712           <!-- end of entry -->
2713        
2714                
2715          <tr class="entry" id="controls_android.control.afMode">
2716            <td class="entry_name
2717             " rowspan="5">
2718              android.<wbr/>control.<wbr/>af<wbr/>Mode
2719            </td>
2720            <td class="entry_type">
2721                <span class="entry_type_name entry_type_name_enum">byte</span>
2722
2723              <span class="entry_type_visibility"> [public]</span>
2724
2725
2726              <span class="entry_type_hwlevel">[legacy] </span>
2727
2728
2729
2730                <ul class="entry_type_enum">
2731                  <li>
2732                    <span class="entry_type_enum_name">OFF</span>
2733                    <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
2734<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
2735application.<wbr/></p></span>
2736                  </li>
2737                  <li>
2738                    <span class="entry_type_enum_name">AUTO</span>
2739                    <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
2740<p>In this mode,<wbr/> the lens does not move unless
2741the autofocus trigger action is called.<wbr/> When that trigger
2742is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2743the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
2744<p>Always supported if lens is not fixed focus.<wbr/></p>
2745<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
2746is fixed-focus.<wbr/></p>
2747<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
2748and sets the AF state to INACTIVE.<wbr/></p></span>
2749                  </li>
2750                  <li>
2751                    <span class="entry_type_enum_name">MACRO</span>
2752                    <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
2753<p>In this mode,<wbr/> the lens does not move unless the
2754autofocus trigger action is called.<wbr/> When that trigger is
2755activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2756the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
2757mode is optimized for focusing on objects very close to
2758the camera.<wbr/></p>
2759<p>When that trigger is activated,<wbr/> AF will transition to
2760ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
2761NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
2762position to default,<wbr/> and sets the AF state to
2763INACTIVE.<wbr/></p></span>
2764                  </li>
2765                  <li>
2766                    <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
2767                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2768position continually to attempt to provide a
2769constantly-in-focus image stream.<wbr/></p>
2770<p>The focusing behavior should be suitable for good quality
2771video recording; typically this means slower focus
2772movement and no overshoots.<wbr/> When the AF trigger is not
2773involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
2774and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
2775states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
2776the algorithm should immediately transition into
2777AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2778lens position until a cancel AF trigger is received.<wbr/></p>
2779<p>Once cancel is received,<wbr/> the algorithm should transition
2780back to INACTIVE and resume passive scan.<wbr/> Note that this
2781behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
2782ongoing PASSIVE_<wbr/>SCAN must immediately be
2783canceled.<wbr/></p></span>
2784                  </li>
2785                  <li>
2786                    <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
2787                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2788position continually to attempt to provide a
2789constantly-in-focus image stream.<wbr/></p>
2790<p>The focusing behavior should be suitable for still image
2791capture; typically this means focusing as fast as
2792possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
2793algorithm should start in INACTIVE state,<wbr/> and then
2794transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
2795appropriate as it attempts to maintain focus.<wbr/> When the AF
2796trigger is activated,<wbr/> the algorithm should finish its
2797PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
2798AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2799lens position until a cancel AF trigger is received.<wbr/></p>
2800<p>When the AF cancel trigger is activated,<wbr/> the algorithm
2801should transition back to INACTIVE and then act as if it
2802has just been started.<wbr/></p></span>
2803                  </li>
2804                  <li>
2805                    <span class="entry_type_enum_name">EDOF</span>
2806                    <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
2807<p>The camera device will produce images with an extended
2808depth of field automatically; no special focusing
2809operations need to be done before taking a picture.<wbr/></p>
2810<p>AF triggers are ignored,<wbr/> and the AF state will always be
2811INACTIVE.<wbr/></p></span>
2812                  </li>
2813                </ul>
2814
2815            </td> <!-- entry_type -->
2816
2817            <td class="entry_description">
2818              <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
2819mode it is set to.<wbr/></p>
2820            </td>
2821
2822            <td class="entry_units">
2823            </td>
2824
2825            <td class="entry_range">
2826              <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
2827            </td>
2828
2829            <td class="entry_tags">
2830              <ul class="entry_tags">
2831                  <li><a href="#tag_BC">BC</a></li>
2832              </ul>
2833            </td>
2834
2835          </tr>
2836          <tr class="entries_header">
2837            <th class="th_details" colspan="5">Details</th>
2838          </tr>
2839          <tr class="entry_cont">
2840            <td class="entry_details" colspan="5">
2841              <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
2842(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
2843when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
2844dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
2845setting <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>
2846<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
2847the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
2848in result metadata.<wbr/></p>
2849            </td>
2850          </tr>
2851
2852          <tr class="entries_header">
2853            <th class="th_details" colspan="5">HAL Implementation Details</th>
2854          </tr>
2855          <tr class="entry_cont">
2856            <td class="entry_details" colspan="5">
2857              <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
2858request (<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
2859up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
2860<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
2861locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
2862after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
2863the same focal plane remains in focus.<wbr/></p>
2864<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
2865scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
2866(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
2867same lock behavior as above.<wbr/></p>
2868<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
2869focus 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/>
2870However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
2871manual control.<wbr/></p>
2872<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
2873camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
2874remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
2875by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
2876that will arise on camera modules with open-loop VCMs.<wbr/></p>
2877            </td>
2878          </tr>
2879
2880          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2881           <!-- end of entry -->
2882        
2883                
2884          <tr class="entry" id="controls_android.control.afRegions">
2885            <td class="entry_name
2886             " rowspan="5">
2887              android.<wbr/>control.<wbr/>af<wbr/>Regions
2888            </td>
2889            <td class="entry_type">
2890                <span class="entry_type_name">int32</span>
2891                <span class="entry_type_container">x</span>
2892
2893                <span class="entry_type_array">
2894                  5 x area_count
2895                </span>
2896              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2897
2898
2899
2900
2901
2902
2903            </td> <!-- entry_type -->
2904
2905            <td class="entry_description">
2906              <p>List of metering areas to use for auto-focus.<wbr/></p>
2907            </td>
2908
2909            <td class="entry_units">
2910              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2911            </td>
2912
2913            <td class="entry_range">
2914              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2915<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2916            </td>
2917
2918            <td class="entry_tags">
2919              <ul class="entry_tags">
2920                  <li><a href="#tag_BC">BC</a></li>
2921              </ul>
2922            </td>
2923
2924          </tr>
2925          <tr class="entries_header">
2926            <th class="th_details" colspan="5">Details</th>
2927          </tr>
2928          <tr class="entry_cont">
2929            <td class="entry_details" colspan="5">
2930              <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
2931Otherwise will always be present.<wbr/></p>
2932<p>The maximum number of focus areas supported by the device is determined by the value
2933of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
2934<p>The coordinate system is based on the active pixel array,<wbr/>
2935with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2936(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2937<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2938bottom-right pixel in the active pixel array.<wbr/></p>
2939<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2940for every pixel in the area.<wbr/> This means that a large metering area
2941with the same weight as a smaller area will have more effect in
2942the metering result.<wbr/> Metering areas can partially overlap and the
2943camera device will add the weights in the overlap region.<wbr/></p>
2944<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
2945is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
2946ignored.<wbr/></p>
2947<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2948camera device.<wbr/></p>
2949<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
2950capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2951region and output only the intersection rectangle as the metering region in the result
2952metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
2953not reported in the result metadata.<wbr/></p>
2954            </td>
2955          </tr>
2956
2957          <tr class="entries_header">
2958            <th class="th_details" colspan="5">HAL Implementation Details</th>
2959          </tr>
2960          <tr class="entry_cont">
2961            <td class="entry_details" colspan="5">
2962              <p>The HAL level representation of MeteringRectangle[] is a
2963int[5 * area_<wbr/>count].<wbr/>
2964Every five elements represent a metering region of
2965(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2966The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2967exclusive on xmax and ymax.<wbr/></p>
2968            </td>
2969          </tr>
2970
2971          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2972           <!-- end of entry -->
2973        
2974                
2975          <tr class="entry" id="controls_android.control.afTrigger">
2976            <td class="entry_name
2977             " rowspan="5">
2978              android.<wbr/>control.<wbr/>af<wbr/>Trigger
2979            </td>
2980            <td class="entry_type">
2981                <span class="entry_type_name entry_type_name_enum">byte</span>
2982
2983              <span class="entry_type_visibility"> [public]</span>
2984
2985
2986              <span class="entry_type_hwlevel">[legacy] </span>
2987
2988
2989
2990                <ul class="entry_type_enum">
2991                  <li>
2992                    <span class="entry_type_enum_name">IDLE</span>
2993                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2994                  </li>
2995                  <li>
2996                    <span class="entry_type_enum_name">START</span>
2997                    <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
2998                  </li>
2999                  <li>
3000                    <span class="entry_type_enum_name">CANCEL</span>
3001                    <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
3002state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
3003                  </li>
3004                </ul>
3005
3006            </td> <!-- entry_type -->
3007
3008            <td class="entry_description">
3009              <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
3010            </td>
3011
3012            <td class="entry_units">
3013            </td>
3014
3015            <td class="entry_range">
3016            </td>
3017
3018            <td class="entry_tags">
3019              <ul class="entry_tags">
3020                  <li><a href="#tag_BC">BC</a></li>
3021              </ul>
3022            </td>
3023
3024          </tr>
3025          <tr class="entries_header">
3026            <th class="th_details" colspan="5">Details</th>
3027          </tr>
3028          <tr class="entry_cont">
3029            <td class="entry_details" colspan="5">
3030              <p>This entry is normally set to IDLE,<wbr/> or is not
3031included at all in the request settings.<wbr/></p>
3032<p>When included and set to START,<wbr/> the camera device will trigger the
3033autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
3034<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
3035and return to its initial AF state.<wbr/></p>
3036<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
3037single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
3038START for multiple captures in a row means restarting the AF operation over
3039and over again.<wbr/></p>
3040<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>
3041<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>
3042simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
3043the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
3044focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
3045trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
3046changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
3047            </td>
3048          </tr>
3049
3050          <tr class="entries_header">
3051            <th class="th_details" colspan="5">HAL Implementation Details</th>
3052          </tr>
3053          <tr class="entry_cont">
3054            <td class="entry_details" colspan="5">
3055              <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
3056(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
3057treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
3058AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
3059to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
3060            </td>
3061          </tr>
3062
3063          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3064           <!-- end of entry -->
3065        
3066                
3067          <tr class="entry" id="controls_android.control.awbLock">
3068            <td class="entry_name
3069             " rowspan="3">
3070              android.<wbr/>control.<wbr/>awb<wbr/>Lock
3071            </td>
3072            <td class="entry_type">
3073                <span class="entry_type_name entry_type_name_enum">byte</span>
3074
3075              <span class="entry_type_visibility"> [public as boolean]</span>
3076
3077
3078              <span class="entry_type_hwlevel">[legacy] </span>
3079
3080
3081
3082                <ul class="entry_type_enum">
3083                  <li>
3084                    <span class="entry_type_enum_name">OFF</span>
3085                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
3086algorithm is free to update its parameters if in AUTO
3087mode.<wbr/></p></span>
3088                  </li>
3089                  <li>
3090                    <span class="entry_type_enum_name">ON</span>
3091                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
3092algorithm will not update its parameters while the lock
3093is active.<wbr/></p></span>
3094                  </li>
3095                </ul>
3096
3097            </td> <!-- entry_type -->
3098
3099            <td class="entry_description">
3100              <p>Whether auto-white balance (AWB) is currently locked to its
3101latest calculated values.<wbr/></p>
3102            </td>
3103
3104            <td class="entry_units">
3105            </td>
3106
3107            <td class="entry_range">
3108            </td>
3109
3110            <td class="entry_tags">
3111              <ul class="entry_tags">
3112                  <li><a href="#tag_BC">BC</a></li>
3113              </ul>
3114            </td>
3115
3116          </tr>
3117          <tr class="entries_header">
3118            <th class="th_details" colspan="5">Details</th>
3119          </tr>
3120          <tr class="entry_cont">
3121            <td class="entry_details" colspan="5">
3122              <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
3123and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
3124<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
3125get locked do not necessarily correspond to the settings that were present in the
3126latest capture result received from the camera device,<wbr/> since additional captures
3127and AWB updates may have occurred even before the result was sent out.<wbr/> If an
3128application is switching between automatic and manual control and wishes to eliminate
3129any flicker during the switch,<wbr/> the following procedure is recommended:</p>
3130<ol>
3131<li>Starting in auto-AWB mode:</li>
3132<li>Lock AWB</li>
3133<li>Wait for the first result to be output that has the AWB locked</li>
3134<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
3135<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
3136</ol>
3137<p>Note that AWB lock is only meaningful when
3138<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
3139AWB is already fixed to a specific setting.<wbr/></p>
3140<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
3141            </td>
3142          </tr>
3143
3144
3145          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3146           <!-- end of entry -->
3147        
3148                
3149          <tr class="entry" id="controls_android.control.awbMode">
3150            <td class="entry_name
3151             " rowspan="3">
3152              android.<wbr/>control.<wbr/>awb<wbr/>Mode
3153            </td>
3154            <td class="entry_type">
3155                <span class="entry_type_name entry_type_name_enum">byte</span>
3156
3157              <span class="entry_type_visibility"> [public]</span>
3158
3159
3160              <span class="entry_type_hwlevel">[legacy] </span>
3161
3162
3163
3164                <ul class="entry_type_enum">
3165                  <li>
3166                    <span class="entry_type_enum_name">OFF</span>
3167                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
3168<p>The application-selected color transform matrix
3169(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
3170(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
3171device for manual white balance control.<wbr/></p></span>
3172                  </li>
3173                  <li>
3174                    <span class="entry_type_enum_name">AUTO</span>
3175                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
3176<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3177and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3178For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3179values used by the camera device for the transform and gains
3180will be available in the capture result for this request.<wbr/></p></span>
3181                  </li>
3182                  <li>
3183                    <span class="entry_type_enum_name">INCANDESCENT</span>
3184                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3185the camera device uses incandescent light as the assumed scene
3186illumination for white balance.<wbr/></p>
3187<p>While the exact white balance transforms are up to the
3188camera device,<wbr/> they will approximately match the CIE
3189standard illuminant A.<wbr/></p>
3190<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3191and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3192For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3193values used by the camera device for the transform and gains
3194will be available in the capture result for this request.<wbr/></p></span>
3195                  </li>
3196                  <li>
3197                    <span class="entry_type_enum_name">FLUORESCENT</span>
3198                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3199the camera device uses fluorescent light as the assumed scene
3200illumination for white balance.<wbr/></p>
3201<p>While the exact white balance transforms are up to the
3202camera device,<wbr/> they will approximately match the CIE
3203standard illuminant F2.<wbr/></p>
3204<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3205and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3206For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3207values used by the camera device for the transform and gains
3208will be available in the capture result for this request.<wbr/></p></span>
3209                  </li>
3210                  <li>
3211                    <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
3212                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3213the camera device uses warm fluorescent light as the assumed scene
3214illumination for white balance.<wbr/></p>
3215<p>While the exact white balance transforms are up to the
3216camera device,<wbr/> they will approximately match the CIE
3217standard illuminant F4.<wbr/></p>
3218<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3219and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3220For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3221values used by the camera device for the transform and gains
3222will be available in the capture result for this request.<wbr/></p></span>
3223                  </li>
3224                  <li>
3225                    <span class="entry_type_enum_name">DAYLIGHT</span>
3226                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3227the camera device uses daylight light as the assumed scene
3228illumination for white balance.<wbr/></p>
3229<p>While the exact white balance transforms are up to the
3230camera device,<wbr/> they will approximately match the CIE
3231standard illuminant D65.<wbr/></p>
3232<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3233and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3234For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3235values used by the camera device for the transform and gains
3236will be available in the capture result for this request.<wbr/></p></span>
3237                  </li>
3238                  <li>
3239                    <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
3240                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3241the camera device uses cloudy daylight light as the assumed scene
3242illumination for white balance.<wbr/></p>
3243<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3244and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3245For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3246values used by the camera device for the transform and gains
3247will be available in the capture result for this request.<wbr/></p></span>
3248                  </li>
3249                  <li>
3250                    <span class="entry_type_enum_name">TWILIGHT</span>
3251                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3252the camera device uses twilight light as the assumed scene
3253illumination for white balance.<wbr/></p>
3254<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3255and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3256For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3257values used by the camera device for the transform and gains
3258will be available in the capture result for this request.<wbr/></p></span>
3259                  </li>
3260                  <li>
3261                    <span class="entry_type_enum_name">SHADE</span>
3262                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3263the camera device uses shade light as the assumed scene
3264illumination for white balance.<wbr/></p>
3265<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3266and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3267For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3268values used by the camera device for the transform and gains
3269will be available in the capture result for this request.<wbr/></p></span>
3270                  </li>
3271                </ul>
3272
3273            </td> <!-- entry_type -->
3274
3275            <td class="entry_description">
3276              <p>Whether auto-white balance (AWB) is currently setting the color
3277transform fields,<wbr/> and what its illumination target
3278is.<wbr/></p>
3279            </td>
3280
3281            <td class="entry_units">
3282            </td>
3283
3284            <td class="entry_range">
3285              <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
3286            </td>
3287
3288            <td class="entry_tags">
3289              <ul class="entry_tags">
3290                  <li><a href="#tag_BC">BC</a></li>
3291              </ul>
3292            </td>
3293
3294          </tr>
3295          <tr class="entries_header">
3296            <th class="th_details" colspan="5">Details</th>
3297          </tr>
3298          <tr class="entry_cont">
3299            <td class="entry_details" colspan="5">
3300              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
3301<p>When set to the ON mode,<wbr/> the camera device's auto-white balance
3302routine is enabled,<wbr/> overriding the application's selected
3303<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
3304<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>
3305is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
3306also 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
3307setting AE mode to OFF.<wbr/></p>
3308<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
3309routine is disabled.<wbr/> The application manually controls the white
3310balance 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>
3311and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
3312<p>When set to any other modes,<wbr/> the camera device's auto-white
3313balance routine is disabled.<wbr/> The camera device uses each
3314particular illumination target for white balance
3315adjustment.<wbr/> The application's values for
3316<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
3317<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3318<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
3319            </td>
3320          </tr>
3321
3322
3323          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3324           <!-- end of entry -->
3325        
3326                
3327          <tr class="entry" id="controls_android.control.awbRegions">
3328            <td class="entry_name
3329             " rowspan="5">
3330              android.<wbr/>control.<wbr/>awb<wbr/>Regions
3331            </td>
3332            <td class="entry_type">
3333                <span class="entry_type_name">int32</span>
3334                <span class="entry_type_container">x</span>
3335
3336                <span class="entry_type_array">
3337                  5 x area_count
3338                </span>
3339              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3340
3341
3342
3343
3344
3345
3346            </td> <!-- entry_type -->
3347
3348            <td class="entry_description">
3349              <p>List of metering areas to use for auto-white-balance illuminant
3350estimation.<wbr/></p>
3351            </td>
3352
3353            <td class="entry_units">
3354              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3355            </td>
3356
3357            <td class="entry_range">
3358              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3359<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3360            </td>
3361
3362            <td class="entry_tags">
3363              <ul class="entry_tags">
3364                  <li><a href="#tag_BC">BC</a></li>
3365              </ul>
3366            </td>
3367
3368          </tr>
3369          <tr class="entries_header">
3370            <th class="th_details" colspan="5">Details</th>
3371          </tr>
3372          <tr class="entry_cont">
3373            <td class="entry_details" colspan="5">
3374              <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
3375Otherwise will always be present.<wbr/></p>
3376<p>The maximum number of regions supported by the device is determined by the value
3377of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
3378<p>The coordinate system is based on the active pixel array,<wbr/>
3379with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3380(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3381<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3382bottom-right pixel in the active pixel array.<wbr/></p>
3383<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
3384for every pixel in the area.<wbr/> This means that a large metering area
3385with the same weight as a smaller area will have more effect in
3386the metering result.<wbr/> Metering areas can partially overlap and the
3387camera device will add the weights in the overlap region.<wbr/></p>
3388<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
3389only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
33900 weight is ignored.<wbr/></p>
3391<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3392camera device.<wbr/></p>
3393<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
3394capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3395region and output only the intersection rectangle as the metering region in the result
3396metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
3397not reported in the result metadata.<wbr/></p>
3398            </td>
3399          </tr>
3400
3401          <tr class="entries_header">
3402            <th class="th_details" colspan="5">HAL Implementation Details</th>
3403          </tr>
3404          <tr class="entry_cont">
3405            <td class="entry_details" colspan="5">
3406              <p>The HAL level representation of MeteringRectangle[] is a
3407int[5 * area_<wbr/>count].<wbr/>
3408Every five elements represent a metering region of
3409(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3410The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3411exclusive on xmax and ymax.<wbr/></p>
3412            </td>
3413          </tr>
3414
3415          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3416           <!-- end of entry -->
3417        
3418                
3419          <tr class="entry" id="controls_android.control.captureIntent">
3420            <td class="entry_name
3421             " rowspan="3">
3422              android.<wbr/>control.<wbr/>capture<wbr/>Intent
3423            </td>
3424            <td class="entry_type">
3425                <span class="entry_type_name entry_type_name_enum">byte</span>
3426
3427              <span class="entry_type_visibility"> [public]</span>
3428
3429
3430              <span class="entry_type_hwlevel">[legacy] </span>
3431
3432
3433
3434                <ul class="entry_type_enum">
3435                  <li>
3436                    <span class="entry_type_enum_name">CUSTOM</span>
3437                    <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
3438categories.<wbr/> The camera device will default to preview-like
3439behavior.<wbr/></p></span>
3440                  </li>
3441                  <li>
3442                    <span class="entry_type_enum_name">PREVIEW</span>
3443                    <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
3444<p>The precapture trigger may be used to start off a metering
3445w/<wbr/>flash sequence.<wbr/></p></span>
3446                  </li>
3447                  <li>
3448                    <span class="entry_type_enum_name">STILL_CAPTURE</span>
3449                    <span class="entry_type_enum_notes"><p>This request is for a still capture-type
3450use case.<wbr/></p>
3451<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
3452                  </li>
3453                  <li>
3454                    <span class="entry_type_enum_name">VIDEO_RECORD</span>
3455                    <span class="entry_type_enum_notes"><p>This request is for a video recording
3456use case.<wbr/></p></span>
3457                  </li>
3458                  <li>
3459                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
3460                    <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
3461image while recording video) use case.<wbr/></p>
3462<p>The camera device should take the highest-quality image
3463possible (given the other settings) without disrupting the
3464frame rate of video recording.<wbr/>  </p></span>
3465                  </li>
3466                  <li>
3467                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
3468                    <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
3469application will stream full-resolution images and
3470reprocess one or several later for a final
3471capture.<wbr/></p></span>
3472                  </li>
3473                  <li>
3474                    <span class="entry_type_enum_name">MANUAL</span>
3475                    <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
3476the applications want to directly control the capture parameters.<wbr/></p>
3477<p>For example,<wbr/> the application may wish to manually control
3478<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>
3479                  </li>
3480                </ul>
3481
3482            </td> <!-- entry_type -->
3483
3484            <td class="entry_description">
3485              <p>Information to the camera device 3A (auto-exposure,<wbr/>
3486auto-focus,<wbr/> auto-white balance) routines about the purpose
3487of this capture,<wbr/> to help the camera device to decide optimal 3A
3488strategy.<wbr/></p>
3489            </td>
3490
3491            <td class="entry_units">
3492            </td>
3493
3494            <td class="entry_range">
3495            </td>
3496
3497            <td class="entry_tags">
3498              <ul class="entry_tags">
3499                  <li><a href="#tag_BC">BC</a></li>
3500              </ul>
3501            </td>
3502
3503          </tr>
3504          <tr class="entries_header">
3505            <th class="th_details" colspan="5">Details</th>
3506          </tr>
3507          <tr class="entry_cont">
3508            <td class="entry_details" colspan="5">
3509              <p>This control (except for MANUAL) is only effective if
3510<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
3511<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
3512contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
3513<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
3514always supported.<wbr/></p>
3515            </td>
3516          </tr>
3517
3518
3519          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3520           <!-- end of entry -->
3521        
3522                
3523          <tr class="entry" id="controls_android.control.effectMode">
3524            <td class="entry_name
3525             " rowspan="3">
3526              android.<wbr/>control.<wbr/>effect<wbr/>Mode
3527            </td>
3528            <td class="entry_type">
3529                <span class="entry_type_name entry_type_name_enum">byte</span>
3530
3531              <span class="entry_type_visibility"> [public]</span>
3532
3533
3534              <span class="entry_type_hwlevel">[legacy] </span>
3535
3536
3537
3538                <ul class="entry_type_enum">
3539                  <li>
3540                    <span class="entry_type_enum_name">OFF</span>
3541                    <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
3542                  </li>
3543                  <li>
3544                    <span class="entry_type_enum_name">MONO</span>
3545                    <span class="entry_type_enum_optional">[optional]</span>
3546                    <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
3547a single color.<wbr/></p>
3548<p>This will typically be grayscale.<wbr/></p></span>
3549                  </li>
3550                  <li>
3551                    <span class="entry_type_enum_name">NEGATIVE</span>
3552                    <span class="entry_type_enum_optional">[optional]</span>
3553                    <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
3554are inverted.<wbr/></p></span>
3555                  </li>
3556                  <li>
3557                    <span class="entry_type_enum_name">SOLARIZE</span>
3558                    <span class="entry_type_enum_optional">[optional]</span>
3559                    <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
3560image is wholly or partially reversed in
3561tone.<wbr/></p></span>
3562                  </li>
3563                  <li>
3564                    <span class="entry_type_enum_name">SEPIA</span>
3565                    <span class="entry_type_enum_optional">[optional]</span>
3566                    <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
3567gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
3568                  </li>
3569                  <li>
3570                    <span class="entry_type_enum_name">POSTERIZE</span>
3571                    <span class="entry_type_enum_optional">[optional]</span>
3572                    <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
3573discrete regions of tone rather than a continuous
3574gradient of tones.<wbr/></p></span>
3575                  </li>
3576                  <li>
3577                    <span class="entry_type_enum_name">WHITEBOARD</span>
3578                    <span class="entry_type_enum_optional">[optional]</span>
3579                    <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
3580as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
3581                  </li>
3582                  <li>
3583                    <span class="entry_type_enum_name">BLACKBOARD</span>
3584                    <span class="entry_type_enum_optional">[optional]</span>
3585                    <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
3586as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
3587                  </li>
3588                  <li>
3589                    <span class="entry_type_enum_name">AQUA</span>
3590                    <span class="entry_type_enum_optional">[optional]</span>
3591                    <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
3592                  </li>
3593                </ul>
3594
3595            </td> <!-- entry_type -->
3596
3597            <td class="entry_description">
3598              <p>A special color effect to apply.<wbr/></p>
3599            </td>
3600
3601            <td class="entry_units">
3602            </td>
3603
3604            <td class="entry_range">
3605              <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
3606            </td>
3607
3608            <td class="entry_tags">
3609              <ul class="entry_tags">
3610                  <li><a href="#tag_BC">BC</a></li>
3611              </ul>
3612            </td>
3613
3614          </tr>
3615          <tr class="entries_header">
3616            <th class="th_details" colspan="5">Details</th>
3617          </tr>
3618          <tr class="entry_cont">
3619            <td class="entry_details" colspan="5">
3620              <p>When this mode is set,<wbr/> a color effect will be applied
3621to images produced by the camera device.<wbr/> The interpretation
3622and implementation of these color effects is left to the
3623implementor of the camera device,<wbr/> and should not be
3624depended on to be consistent (or present) across all
3625devices.<wbr/></p>
3626            </td>
3627          </tr>
3628
3629
3630          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3631           <!-- end of entry -->
3632        
3633                
3634          <tr class="entry" id="controls_android.control.mode">
3635            <td class="entry_name
3636             " rowspan="3">
3637              android.<wbr/>control.<wbr/>mode
3638            </td>
3639            <td class="entry_type">
3640                <span class="entry_type_name entry_type_name_enum">byte</span>
3641
3642              <span class="entry_type_visibility"> [public]</span>
3643
3644
3645              <span class="entry_type_hwlevel">[legacy] </span>
3646
3647
3648
3649                <ul class="entry_type_enum">
3650                  <li>
3651                    <span class="entry_type_enum_name">OFF</span>
3652                    <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
3653<p>All control by the device's metering and focusing (3A)
3654routines is disabled,<wbr/> and no other settings in
3655android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
3656<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
3657device to select post-processing values for processing
3658blocks that do not allow for manual control,<wbr/> or are not
3659exposed by the camera API.<wbr/></p>
3660<p>However,<wbr/> the camera device's 3A routines may continue to
3661collect statistics and update their internal state so that
3662when control is switched to AUTO mode,<wbr/> good control values
3663can be immediately applied.<wbr/></p></span>
3664                  </li>
3665                  <li>
3666                    <span class="entry_type_enum_name">AUTO</span>
3667                    <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
3668<p>Manual control of capture parameters is disabled.<wbr/> All
3669controls in android.<wbr/>control.<wbr/>* besides sceneMode take
3670effect.<wbr/></p></span>
3671                  </li>
3672                  <li>
3673                    <span class="entry_type_enum_name">USE_SCENE_MODE</span>
3674                    <span class="entry_type_enum_optional">[optional]</span>
3675                    <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
3676<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
3677control.<wbr/>afMode controls; the camera device will ignore
3678those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
3679FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
3680This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
3681<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
3682contain some modes other than DISABLED).<wbr/></p></span>
3683                  </li>
3684                  <li>
3685                    <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
3686                    <span class="entry_type_enum_optional">[optional]</span>
3687                    <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
3688used by camera device background auto-exposure,<wbr/> auto-white balance and
3689auto-focus algorithms (3A) to update their statistics.<wbr/></p>
3690<p>Specifically,<wbr/> the 3A routines are locked to the last
3691values set from a request with AUTO,<wbr/> OFF,<wbr/> or
3692USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
3693collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
3694discarded by the camera device.<wbr/></p></span>
3695                  </li>
3696                </ul>
3697
3698            </td> <!-- entry_type -->
3699
3700            <td class="entry_description">
3701              <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
3702routines.<wbr/></p>
3703            </td>
3704
3705            <td class="entry_units">
3706            </td>
3707
3708            <td class="entry_range">
3709              <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
3710            </td>
3711
3712            <td class="entry_tags">
3713              <ul class="entry_tags">
3714                  <li><a href="#tag_BC">BC</a></li>
3715              </ul>
3716            </td>
3717
3718          </tr>
3719          <tr class="entries_header">
3720            <th class="th_details" colspan="5">Details</th>
3721          </tr>
3722          <tr class="entry_cont">
3723            <td class="entry_details" colspan="5">
3724              <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
3725by the camera device is disabled.<wbr/> The application must set the fields for
3726capture parameters itself.<wbr/></p>
3727<p>When set to AUTO,<wbr/> the individual algorithm controls in
3728android.<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>
3729<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
3730android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
3731one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
3732as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
3733<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
3734<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
3735is that this frame will not be used by camera device background 3A statistics
3736update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
3737where the application doesn't want a 3A manual control capture to affect
3738the subsequent auto 3A capture results.<wbr/></p>
3739            </td>
3740          </tr>
3741
3742
3743          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3744           <!-- end of entry -->
3745        
3746                
3747          <tr class="entry" id="controls_android.control.sceneMode">
3748            <td class="entry_name
3749             " rowspan="5">
3750              android.<wbr/>control.<wbr/>scene<wbr/>Mode
3751            </td>
3752            <td class="entry_type">
3753                <span class="entry_type_name entry_type_name_enum">byte</span>
3754
3755              <span class="entry_type_visibility"> [public]</span>
3756
3757
3758              <span class="entry_type_hwlevel">[legacy] </span>
3759
3760
3761
3762                <ul class="entry_type_enum">
3763                  <li>
3764                    <span class="entry_type_enum_name">DISABLED</span>
3765                    <span class="entry_type_enum_value">0</span>
3766                    <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
3767                  </li>
3768                  <li>
3769                    <span class="entry_type_enum_name">FACE_PRIORITY</span>
3770                    <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
3771detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
3772auto-exposure routines.<wbr/></p>
3773<p>If face detection statistics are disabled
3774(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/>
3775this should still operate correctly (but will not return
3776face detection statistics to the framework).<wbr/></p>
3777<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3778<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>
3779remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
3780                  </li>
3781                  <li>
3782                    <span class="entry_type_enum_name">ACTION</span>
3783                    <span class="entry_type_enum_optional">[optional]</span>
3784                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
3785<p>Similar to SPORTS.<wbr/></p></span>
3786                  </li>
3787                  <li>
3788                    <span class="entry_type_enum_name">PORTRAIT</span>
3789                    <span class="entry_type_enum_optional">[optional]</span>
3790                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
3791                  </li>
3792                  <li>
3793                    <span class="entry_type_enum_name">LANDSCAPE</span>
3794                    <span class="entry_type_enum_optional">[optional]</span>
3795                    <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
3796                  </li>
3797                  <li>
3798                    <span class="entry_type_enum_name">NIGHT</span>
3799                    <span class="entry_type_enum_optional">[optional]</span>
3800                    <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
3801                  </li>
3802                  <li>
3803                    <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
3804                    <span class="entry_type_enum_optional">[optional]</span>
3805                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
3806settings.<wbr/></p></span>
3807                  </li>
3808                  <li>
3809                    <span class="entry_type_enum_name">THEATRE</span>
3810                    <span class="entry_type_enum_optional">[optional]</span>
3811                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
3812remain off.<wbr/></p></span>
3813                  </li>
3814                  <li>
3815                    <span class="entry_type_enum_name">BEACH</span>
3816                    <span class="entry_type_enum_optional">[optional]</span>
3817                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
3818                  </li>
3819                  <li>
3820                    <span class="entry_type_enum_name">SNOW</span>
3821                    <span class="entry_type_enum_optional">[optional]</span>
3822                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
3823                  </li>
3824                  <li>
3825                    <span class="entry_type_enum_name">SUNSET</span>
3826                    <span class="entry_type_enum_optional">[optional]</span>
3827                    <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
3828                  </li>
3829                  <li>
3830                    <span class="entry_type_enum_name">STEADYPHOTO</span>
3831                    <span class="entry_type_enum_optional">[optional]</span>
3832                    <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
3833device motion (for example: due to hand shake).<wbr/></p></span>
3834                  </li>
3835                  <li>
3836                    <span class="entry_type_enum_name">FIREWORKS</span>
3837                    <span class="entry_type_enum_optional">[optional]</span>
3838                    <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
3839                  </li>
3840                  <li>
3841                    <span class="entry_type_enum_name">SPORTS</span>
3842                    <span class="entry_type_enum_optional">[optional]</span>
3843                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
3844<p>Similar to ACTION.<wbr/></p></span>
3845                  </li>
3846                  <li>
3847                    <span class="entry_type_enum_name">PARTY</span>
3848                    <span class="entry_type_enum_optional">[optional]</span>
3849                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
3850people.<wbr/></p></span>
3851                  </li>
3852                  <li>
3853                    <span class="entry_type_enum_name">CANDLELIGHT</span>
3854                    <span class="entry_type_enum_optional">[optional]</span>
3855                    <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
3856is a flame.<wbr/></p></span>
3857                  </li>
3858                  <li>
3859                    <span class="entry_type_enum_name">BARCODE</span>
3860                    <span class="entry_type_enum_optional">[optional]</span>
3861                    <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
3862for use by camera applications that wish to read the
3863barcode value.<wbr/></p></span>
3864                  </li>
3865                  <li>
3866                    <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
3867                    <span class="entry_type_enum_deprecated">[deprecated]</span>
3868                    <span class="entry_type_enum_optional">[optional]</span>
3869                    <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>
3870and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
3871for high speed video recording.<wbr/></p>
3872<p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
3873<p>The supported high speed video sizes and fps ranges are specified in
3874<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
3875output frame rates,<wbr/> the application is only allowed to select video size
3876and fps range combinations listed in this static metadata.<wbr/> The fps range
3877can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
3878<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
3879ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
3880controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
3881and post-processing parameters is possible.<wbr/> All other controls operate the
3882same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
3883android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
3884<ul>
3885<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
3886<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
3887<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
3888<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
3889<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
3890<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
3891<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
3892<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
3893<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
3894<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
3895</ul>
3896<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
3897<ul>
3898<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>
3899<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
3900<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
3901<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
3902</ul>
3903<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
3904be lower than what camera can output,<wbr/> depending on the destination Surfaces for
3905the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
3906the application need check if the video encoder is capable of supporting the
3907high frame rate for a given video size,<wbr/> or it will end up with lower recording
3908frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
3909rate will be bounded by the screen refresh rate.<wbr/></p>
3910<p>The camera device will only support up to 2 output high speed streams
3911(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
3912in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
3913<ul>
3914<li>The application created no more than maxNumHighSpeedStreams processed non-stalling
3915format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
3916min(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>
3917<li>The stream sizes are selected from the sizes reported by
3918<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
3919<li>No processed non-stalling or raw streams are configured.<wbr/></li>
3920</ul>
3921<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
3922<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/>
3923the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
3924and the returned capture result metadata will give the fps range choosen
3925by the camera device.<wbr/></p>
3926<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
3927reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
3928the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
3929                  </li>
3930                  <li>
3931                    <span class="entry_type_enum_name">HDR</span>
3932                    <span class="entry_type_enum_optional">[optional]</span>
3933                    <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
3934<p>In this scene mode,<wbr/> the camera device captures images
3935that keep a larger range of scene illumination levels
3936visible in the final image.<wbr/> For example,<wbr/> when taking a
3937picture of a object in front of a bright window,<wbr/> both
3938the object and the scene through the window may be
3939visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
3940one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
3941HDR mode generally takes much longer to capture a single
3942image,<wbr/> has no user control,<wbr/> and may have other artifacts
3943depending on the HDR method used.<wbr/></p>
3944<p>Therefore,<wbr/> HDR captures operate at a much slower rate
3945than regular captures.<wbr/></p>
3946<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
3947is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
3948STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
3949using a high dynamic range capture technique.<wbr/>  On LEGACY
3950devices,<wbr/> captures that target a JPEG-format output will
3951be captured with HDR,<wbr/> and the capture intent is not
3952relevant.<wbr/></p>
3953<p>The HDR capture may involve the device capturing a burst
3954of images internally and combining them into one,<wbr/> or it
3955may involve the device using specialized high dynamic
3956range capture hardware.<wbr/> In all cases,<wbr/> a single image is
3957produced in response to a capture request submitted
3958while in HDR mode.<wbr/></p>
3959<p>Since substantial post-processing is generally needed to
3960produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
3961outputs are supported for LIMITED/<wbr/>FULL device HDR
3962captures,<wbr/> and only JPEG outputs are supported for LEGACY
3963HDR captures.<wbr/> Using a RAW output for HDR capture is not
3964supported.<wbr/></p>
3965<p>Some devices may also support always-on HDR,<wbr/> which
3966applies HDR processing at full frame rate.<wbr/>  For these
3967devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
3968produce an HDR output with no frame rate impact compared
3969to normal operation,<wbr/> though the quality may be lower
3970than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
3971<p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
3972or capture intents,<wbr/> the images captured will be as if
3973the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
3974                  </li>
3975                  <li>
3976                    <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span>
3977                    <span class="entry_type_enum_optional">[optional]</span>
3978                    <span class="entry_type_enum_hidden">[hidden]</span>
3979                    <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
3980device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
3981under low light conditions.<wbr/></p>
3982<p>The camera device may be tuned to expose the images in a reduced
3983sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
3984if 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/>
3985the camera device auto-exposure routine tuning process may limit the actual
3986exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
3987exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
3988low light may be under-exposed when the sensor max exposure time (bounded by the
3989<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
3990ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
3991camera device auto-exposure routine to increase the sensitivity up to the max
3992sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
3993dark and the max exposure time is reached.<wbr/> The captured images may be noisier
3994compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
3995recommended that the application only use this scene mode when it is capable of
3996reducing the noise level of the captured images.<wbr/></p>
3997<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3998<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>
3999remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
4000                  </li>
4001                  <li>
4002                    <span class="entry_type_enum_name">DEVICE_CUSTOM_START</span>
4003                    <span class="entry_type_enum_optional">[optional]</span>
4004                    <span class="entry_type_enum_hidden">[hidden]</span>
4005                    <span class="entry_type_enum_value">100</span>
4006                    <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4007<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4008customized scene modes.<wbr/></p></span>
4009                  </li>
4010                  <li>
4011                    <span class="entry_type_enum_name">DEVICE_CUSTOM_END</span>
4012                    <span class="entry_type_enum_optional">[optional]</span>
4013                    <span class="entry_type_enum_hidden">[hidden]</span>
4014                    <span class="entry_type_enum_value">127</span>
4015                    <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4016<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4017customized scene modes.<wbr/></p></span>
4018                  </li>
4019                </ul>
4020
4021            </td> <!-- entry_type -->
4022
4023            <td class="entry_description">
4024              <p>Control for which scene mode is currently active.<wbr/></p>
4025            </td>
4026
4027            <td class="entry_units">
4028            </td>
4029
4030            <td class="entry_range">
4031              <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
4032            </td>
4033
4034            <td class="entry_tags">
4035              <ul class="entry_tags">
4036                  <li><a href="#tag_BC">BC</a></li>
4037              </ul>
4038            </td>
4039
4040          </tr>
4041          <tr class="entries_header">
4042            <th class="th_details" colspan="5">Details</th>
4043          </tr>
4044          <tr class="entry_cont">
4045            <td class="entry_details" colspan="5">
4046              <p>Scene modes are custom camera modes optimized for a certain set of conditions and
4047capture settings.<wbr/></p>
4048<p>This is the mode that that is active when
4049<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
4050disable <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>
4051while in use.<wbr/></p>
4052<p>The interpretation and implementation of these scene modes is left
4053to the implementor of the camera device.<wbr/> Their behavior will not be
4054consistent across all devices,<wbr/> and any given device may only implement
4055a subset of these modes.<wbr/></p>
4056            </td>
4057          </tr>
4058
4059          <tr class="entries_header">
4060            <th class="th_details" colspan="5">HAL Implementation Details</th>
4061          </tr>
4062          <tr class="entry_cont">
4063            <td class="entry_details" colspan="5">
4064              <p>HAL implementations that include scene modes are expected to provide
4065the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4066<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
4067<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
4068<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/>
4069the HAL must list supported video size and fps range in
4070<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/>
40711280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming
4072mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture
4073requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/>
4074This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
4075<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
4076capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
4077            </td>
4078          </tr>
4079
4080          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4081           <!-- end of entry -->
4082        
4083                
4084          <tr class="entry" id="controls_android.control.videoStabilizationMode">
4085            <td class="entry_name
4086             " rowspan="3">
4087              android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
4088            </td>
4089            <td class="entry_type">
4090                <span class="entry_type_name entry_type_name_enum">byte</span>
4091
4092              <span class="entry_type_visibility"> [public]</span>
4093
4094
4095              <span class="entry_type_hwlevel">[legacy] </span>
4096
4097
4098
4099                <ul class="entry_type_enum">
4100                  <li>
4101                    <span class="entry_type_enum_name">OFF</span>
4102                    <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
4103                  </li>
4104                  <li>
4105                    <span class="entry_type_enum_name">ON</span>
4106                    <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
4107                  </li>
4108                </ul>
4109
4110            </td> <!-- entry_type -->
4111
4112            <td class="entry_description">
4113              <p>Whether video stabilization is
4114active.<wbr/></p>
4115            </td>
4116
4117            <td class="entry_units">
4118            </td>
4119
4120            <td class="entry_range">
4121            </td>
4122
4123            <td class="entry_tags">
4124              <ul class="entry_tags">
4125                  <li><a href="#tag_BC">BC</a></li>
4126              </ul>
4127            </td>
4128
4129          </tr>
4130          <tr class="entries_header">
4131            <th class="th_details" colspan="5">Details</th>
4132          </tr>
4133          <tr class="entry_cont">
4134            <td class="entry_details" colspan="5">
4135              <p>Video stabilization automatically warps images from
4136the camera in order to stabilize motion between consecutive frames.<wbr/></p>
4137<p>If enabled,<wbr/> video stabilization can modify the
4138<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
4139<p>Switching between different video stabilization modes may take several
4140frames to initialize,<wbr/> the camera device will report the current mode
4141in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
4142the video stabilization modes in the first several capture results may
4143still be "OFF",<wbr/> and it will become "ON" when the initialization is
4144done.<wbr/></p>
4145<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
4146stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
4147that an output targeting a MediaRecorder or MediaCodec will be stabilized if
4148the recording resolution is less than or equal to 1920 x 1080 (width less than
4149or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
4150frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
4151<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
4152OFF if the recording output is not stabilized,<wbr/> or if there are no output
4153Surface types that can be stabilized.<wbr/></p>
4154<p>If a camera device supports both this mode and OIS
4155(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
4156produce undesirable interaction,<wbr/> so it is recommended not to enable
4157both at the same time.<wbr/></p>
4158            </td>
4159          </tr>
4160
4161
4162          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4163           <!-- end of entry -->
4164        
4165                
4166          <tr class="entry" id="controls_android.control.postRawSensitivityBoost">
4167            <td class="entry_name
4168             " rowspan="3">
4169              android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
4170            </td>
4171            <td class="entry_type">
4172                <span class="entry_type_name">int32</span>
4173
4174              <span class="entry_type_visibility"> [public]</span>
4175
4176
4177
4178
4179
4180
4181            </td> <!-- entry_type -->
4182
4183            <td class="entry_description">
4184              <p>The amount of additional sensitivity boost applied to output images
4185after RAW sensor data is captured.<wbr/></p>
4186            </td>
4187
4188            <td class="entry_units">
4189              ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
4190            </td>
4191
4192            <td class="entry_range">
4193              <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
4194            </td>
4195
4196            <td class="entry_tags">
4197            </td>
4198
4199          </tr>
4200          <tr class="entries_header">
4201            <th class="th_details" colspan="5">Details</th>
4202          </tr>
4203          <tr class="entry_cont">
4204            <td class="entry_details" colspan="5">
4205              <p>Some camera devices support additional digital sensitivity boosting in the
4206camera processing pipeline after sensor RAW image is captured.<wbr/>
4207Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
4208have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
4209<p>This key will be <code>null</code> for devices that do not support any RAW format
4210outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
4211present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
4212list <code>100</code> in this key.<wbr/></p>
4213<p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
4214boost to the nearest supported value.<wbr/>
4215The final boost value used will be available in the output capture result.<wbr/></p>
4216<p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
4217of such device will have the total sensitivity of
4218<code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> * <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> /<wbr/> 100</code>
4219The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
4220<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
4221OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
4222            </td>
4223          </tr>
4224
4225
4226          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4227           <!-- end of entry -->
4228        
4229        
4230
4231      <!-- end of kind -->
4232      </tbody>
4233      <tr><td colspan="6" class="kind">static</td></tr>
4234
4235      <thead class="entries_header">
4236        <tr>
4237          <th class="th_name">Property Name</th>
4238          <th class="th_type">Type</th>
4239          <th class="th_description">Description</th>
4240          <th class="th_units">Units</th>
4241          <th class="th_range">Range</th>
4242          <th class="th_tags">Tags</th>
4243        </tr>
4244      </thead>
4245
4246      <tbody>
4247
4248        
4249
4250        
4251
4252        
4253
4254        
4255
4256                
4257          <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
4258            <td class="entry_name
4259             " rowspan="3">
4260              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
4261            </td>
4262            <td class="entry_type">
4263                <span class="entry_type_name">byte</span>
4264                <span class="entry_type_container">x</span>
4265
4266                <span class="entry_type_array">
4267                  n
4268                </span>
4269              <span class="entry_type_visibility"> [public as enumList]</span>
4270
4271
4272              <span class="entry_type_hwlevel">[legacy] </span>
4273
4274
4275                <div class="entry_type_notes">list of enums</div>
4276
4277
4278            </td> <!-- entry_type -->
4279
4280            <td class="entry_description">
4281              <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
4282supported by this camera device.<wbr/></p>
4283            </td>
4284
4285            <td class="entry_units">
4286            </td>
4287
4288            <td class="entry_range">
4289              <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
4290            </td>
4291
4292            <td class="entry_tags">
4293              <ul class="entry_tags">
4294                  <li><a href="#tag_BC">BC</a></li>
4295              </ul>
4296            </td>
4297
4298          </tr>
4299          <tr class="entries_header">
4300            <th class="th_details" colspan="5">Details</th>
4301          </tr>
4302          <tr class="entry_cont">
4303            <td class="entry_details" colspan="5">
4304              <p>Not all of the auto-exposure anti-banding modes may be
4305supported by a given camera device.<wbr/> This field lists the
4306valid anti-banding modes that the application may request
4307for this camera device with the
4308<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
4309            </td>
4310          </tr>
4311
4312
4313          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4314           <!-- end of entry -->
4315        
4316                
4317          <tr class="entry" id="static_android.control.aeAvailableModes">
4318            <td class="entry_name
4319             " rowspan="3">
4320              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
4321            </td>
4322            <td class="entry_type">
4323                <span class="entry_type_name">byte</span>
4324                <span class="entry_type_container">x</span>
4325
4326                <span class="entry_type_array">
4327                  n
4328                </span>
4329              <span class="entry_type_visibility"> [public as enumList]</span>
4330
4331
4332              <span class="entry_type_hwlevel">[legacy] </span>
4333
4334
4335                <div class="entry_type_notes">list of enums</div>
4336
4337
4338            </td> <!-- entry_type -->
4339
4340            <td class="entry_description">
4341              <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
4342device.<wbr/></p>
4343            </td>
4344
4345            <td class="entry_units">
4346            </td>
4347
4348            <td class="entry_range">
4349              <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
4350            </td>
4351
4352            <td class="entry_tags">
4353              <ul class="entry_tags">
4354                  <li><a href="#tag_BC">BC</a></li>
4355              </ul>
4356            </td>
4357
4358          </tr>
4359          <tr class="entries_header">
4360            <th class="th_details" colspan="5">Details</th>
4361          </tr>
4362          <tr class="entry_cont">
4363            <td class="entry_details" colspan="5">
4364              <p>Not all the auto-exposure modes may be supported by a
4365given camera device,<wbr/> especially if no flash unit is
4366available.<wbr/> This entry lists the valid modes for
4367<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
4368<p>All camera devices support ON,<wbr/> and all camera devices with flash
4369units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
4370<p>FULL mode camera devices always support OFF mode,<wbr/>
4371which enables application control of camera exposure time,<wbr/>
4372sensitivity,<wbr/> and frame duration.<wbr/></p>
4373<p>LEGACY mode camera devices never support OFF mode.<wbr/>
4374LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR
4375capability.<wbr/></p>
4376            </td>
4377          </tr>
4378
4379
4380          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4381           <!-- end of entry -->
4382        
4383                
4384          <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
4385            <td class="entry_name
4386             " rowspan="3">
4387              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
4388            </td>
4389            <td class="entry_type">
4390                <span class="entry_type_name">int32</span>
4391                <span class="entry_type_container">x</span>
4392
4393                <span class="entry_type_array">
4394                  2 x n
4395                </span>
4396              <span class="entry_type_visibility"> [public as rangeInt]</span>
4397
4398
4399              <span class="entry_type_hwlevel">[legacy] </span>
4400
4401
4402                <div class="entry_type_notes">list of pairs of frame rates</div>
4403
4404
4405            </td> <!-- entry_type -->
4406
4407            <td class="entry_description">
4408              <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
4409this camera device.<wbr/></p>
4410            </td>
4411
4412            <td class="entry_units">
4413              Frames per second (FPS)
4414            </td>
4415
4416            <td class="entry_range">
4417            </td>
4418
4419            <td class="entry_tags">
4420              <ul class="entry_tags">
4421                  <li><a href="#tag_BC">BC</a></li>
4422              </ul>
4423            </td>
4424
4425          </tr>
4426          <tr class="entries_header">
4427            <th class="th_details" colspan="5">Details</th>
4428          </tr>
4429          <tr class="entry_cont">
4430            <td class="entry_details" colspan="5">
4431              <p>For devices at the LEGACY level or above:</p>
4432<ul>
4433<li>
4434<p>For constant-framerate recording,<wbr/> for each normal
4435<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a
4436<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4437<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in
4438the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/>
4439<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is
4440supported by the device and has
4441<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will
4442always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p>
4443</li>
4444<li>
4445<p>Also,<wbr/> a camera device must either not support any
4446<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/>
4447or support at least one
4448normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4449<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> &gt;= 24.<wbr/></p>
4450</li>
4451</ul>
4452<p>For devices at the LIMITED level or above:</p>
4453<ul>
4454<li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>)
4455and (<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> &lt;= 15 and <code>max</code> = the maximum output frame rate of the
4456maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li>
4457</ul>
4458            </td>
4459          </tr>
4460
4461
4462          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4463           <!-- end of entry -->
4464        
4465                
4466          <tr class="entry" id="static_android.control.aeCompensationRange">
4467            <td class="entry_name
4468             " rowspan="1">
4469              android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
4470            </td>
4471            <td class="entry_type">
4472                <span class="entry_type_name">int32</span>
4473                <span class="entry_type_container">x</span>
4474
4475                <span class="entry_type_array">
4476                  2
4477                </span>
4478              <span class="entry_type_visibility"> [public as rangeInt]</span>
4479
4480
4481              <span class="entry_type_hwlevel">[legacy] </span>
4482
4483
4484
4485
4486            </td> <!-- entry_type -->
4487
4488            <td class="entry_description">
4489              <p>Maximum and minimum exposure compensation values for
4490<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/>
4491that are supported by this camera device.<wbr/></p>
4492            </td>
4493
4494            <td class="entry_units">
4495            </td>
4496
4497            <td class="entry_range">
4498              <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
4499<p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
4500compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
4501<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>
4502<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>
4503<p>LEGACY devices may support a smaller range than this.<wbr/></p>
4504            </td>
4505
4506            <td class="entry_tags">
4507              <ul class="entry_tags">
4508                  <li><a href="#tag_BC">BC</a></li>
4509              </ul>
4510            </td>
4511
4512          </tr>
4513
4514
4515          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4516           <!-- end of entry -->
4517        
4518                
4519          <tr class="entry" id="static_android.control.aeCompensationStep">
4520            <td class="entry_name
4521             " rowspan="5">
4522              android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
4523            </td>
4524            <td class="entry_type">
4525                <span class="entry_type_name">rational</span>
4526
4527              <span class="entry_type_visibility"> [public]</span>
4528
4529
4530              <span class="entry_type_hwlevel">[legacy] </span>
4531
4532
4533
4534
4535            </td> <!-- entry_type -->
4536
4537            <td class="entry_description">
4538              <p>Smallest step by which the exposure compensation
4539can be changed.<wbr/></p>
4540            </td>
4541
4542            <td class="entry_units">
4543              Exposure Value (EV)
4544            </td>
4545
4546            <td class="entry_range">
4547            </td>
4548
4549            <td class="entry_tags">
4550              <ul class="entry_tags">
4551                  <li><a href="#tag_BC">BC</a></li>
4552              </ul>
4553            </td>
4554
4555          </tr>
4556          <tr class="entries_header">
4557            <th class="th_details" colspan="5">Details</th>
4558          </tr>
4559          <tr class="entry_cont">
4560            <td class="entry_details" colspan="5">
4561              <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
4562a 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
4563that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
4564<p>One unit of EV compensation changes the brightness of the captured image by a factor
4565of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p>
4566            </td>
4567          </tr>
4568
4569          <tr class="entries_header">
4570            <th class="th_details" colspan="5">HAL Implementation Details</th>
4571          </tr>
4572          <tr class="entry_cont">
4573            <td class="entry_details" colspan="5">
4574              <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
4575            </td>
4576          </tr>
4577
4578          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4579           <!-- end of entry -->
4580        
4581                
4582          <tr class="entry" id="static_android.control.afAvailableModes">
4583            <td class="entry_name
4584             " rowspan="3">
4585              android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
4586            </td>
4587            <td class="entry_type">
4588                <span class="entry_type_name">byte</span>
4589                <span class="entry_type_container">x</span>
4590
4591                <span class="entry_type_array">
4592                  n
4593                </span>
4594              <span class="entry_type_visibility"> [public as enumList]</span>
4595
4596
4597              <span class="entry_type_hwlevel">[legacy] </span>
4598
4599
4600                <div class="entry_type_notes">List of enums</div>
4601
4602
4603            </td> <!-- entry_type -->
4604
4605            <td class="entry_description">
4606              <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are
4607supported by this camera device.<wbr/></p>
4608            </td>
4609
4610            <td class="entry_units">
4611            </td>
4612
4613            <td class="entry_range">
4614              <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
4615            </td>
4616
4617            <td class="entry_tags">
4618              <ul class="entry_tags">
4619                  <li><a href="#tag_BC">BC</a></li>
4620              </ul>
4621            </td>
4622
4623          </tr>
4624          <tr class="entries_header">
4625            <th class="th_details" colspan="5">Details</th>
4626          </tr>
4627          <tr class="entry_cont">
4628            <td class="entry_details" colspan="5">
4629              <p>Not all the auto-focus modes may be supported by a
4630given camera device.<wbr/> This entry lists the valid modes for
4631<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
4632<p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all
4633camera devices with adjustable focuser units
4634(<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>
4635<p>LEGACY devices will support OFF mode only if they support
4636focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to
4637<code>0.<wbr/>0f</code>).<wbr/></p>
4638            </td>
4639          </tr>
4640
4641
4642          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4643           <!-- end of entry -->
4644        
4645                
4646          <tr class="entry" id="static_android.control.availableEffects">
4647            <td class="entry_name
4648             " rowspan="3">
4649              android.<wbr/>control.<wbr/>available<wbr/>Effects
4650            </td>
4651            <td class="entry_type">
4652                <span class="entry_type_name">byte</span>
4653                <span class="entry_type_container">x</span>
4654
4655                <span class="entry_type_array">
4656                  n
4657                </span>
4658              <span class="entry_type_visibility"> [public as enumList]</span>
4659
4660
4661              <span class="entry_type_hwlevel">[legacy] </span>
4662
4663
4664                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
4665
4666
4667            </td> <!-- entry_type -->
4668
4669            <td class="entry_description">
4670              <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
4671device.<wbr/></p>
4672            </td>
4673
4674            <td class="entry_units">
4675            </td>
4676
4677            <td class="entry_range">
4678              <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
4679            </td>
4680
4681            <td class="entry_tags">
4682              <ul class="entry_tags">
4683                  <li><a href="#tag_BC">BC</a></li>
4684              </ul>
4685            </td>
4686
4687          </tr>
4688          <tr class="entries_header">
4689            <th class="th_details" colspan="5">Details</th>
4690          </tr>
4691          <tr class="entry_cont">
4692            <td class="entry_details" colspan="5">
4693              <p>This list contains the color effect modes that can be applied to
4694images produced by the camera device.<wbr/>
4695Implementations are not expected to be consistent across all devices.<wbr/>
4696If no color effect modes are available for a device,<wbr/> this will only list
4697OFF.<wbr/></p>
4698<p>A color effect will only be applied if
4699<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/>  OFF is always included in this list.<wbr/></p>
4700<p>This control has no effect on the operation of other control routines such
4701as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p>
4702            </td>
4703          </tr>
4704
4705
4706          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4707           <!-- end of entry -->
4708        
4709                
4710          <tr class="entry" id="static_android.control.availableSceneModes">
4711            <td class="entry_name
4712             " rowspan="3">
4713              android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
4714            </td>
4715            <td class="entry_type">
4716                <span class="entry_type_name">byte</span>
4717                <span class="entry_type_container">x</span>
4718
4719                <span class="entry_type_array">
4720                  n
4721                </span>
4722              <span class="entry_type_visibility"> [public as enumList]</span>
4723
4724
4725              <span class="entry_type_hwlevel">[legacy] </span>
4726
4727
4728                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
4729
4730
4731            </td> <!-- entry_type -->
4732
4733            <td class="entry_description">
4734              <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
4735device.<wbr/></p>
4736            </td>
4737
4738            <td class="entry_units">
4739            </td>
4740
4741            <td class="entry_range">
4742              <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
4743            </td>
4744
4745            <td class="entry_tags">
4746              <ul class="entry_tags">
4747                  <li><a href="#tag_BC">BC</a></li>
4748              </ul>
4749            </td>
4750
4751          </tr>
4752          <tr class="entries_header">
4753            <th class="th_details" colspan="5">Details</th>
4754          </tr>
4755          <tr class="entry_cont">
4756            <td class="entry_details" colspan="5">
4757              <p>This list contains scene modes that can be set for the camera device.<wbr/>
4758Only scene modes that have been fully implemented for the
4759camera device may be included here.<wbr/> Implementations are not expected
4760to be consistent across all devices.<wbr/></p>
4761<p>If no scene modes are supported by the camera device,<wbr/> this
4762will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p>
4763<p>FACE_<wbr/>PRIORITY is always listed if face detection is
4764supported (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;
47650</code>).<wbr/></p>
4766            </td>
4767          </tr>
4768
4769
4770          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4771           <!-- end of entry -->
4772        
4773                
4774          <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
4775            <td class="entry_name
4776             " rowspan="3">
4777              android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
4778            </td>
4779            <td class="entry_type">
4780                <span class="entry_type_name">byte</span>
4781                <span class="entry_type_container">x</span>
4782
4783                <span class="entry_type_array">
4784                  n
4785                </span>
4786              <span class="entry_type_visibility"> [public as enumList]</span>
4787
4788
4789              <span class="entry_type_hwlevel">[legacy] </span>
4790
4791
4792                <div class="entry_type_notes">List of enums.<wbr/></div>
4793
4794
4795            </td> <!-- entry_type -->
4796
4797            <td class="entry_description">
4798              <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>
4799that are supported by this camera device.<wbr/></p>
4800            </td>
4801
4802            <td class="entry_units">
4803            </td>
4804
4805            <td class="entry_range">
4806              <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
4807            </td>
4808
4809            <td class="entry_tags">
4810              <ul class="entry_tags">
4811                  <li><a href="#tag_BC">BC</a></li>
4812              </ul>
4813            </td>
4814
4815          </tr>
4816          <tr class="entries_header">
4817            <th class="th_details" colspan="5">Details</th>
4818          </tr>
4819          <tr class="entry_cont">
4820            <td class="entry_details" colspan="5">
4821              <p>OFF will always be listed.<wbr/></p>
4822            </td>
4823          </tr>
4824
4825
4826          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4827           <!-- end of entry -->
4828        
4829                
4830          <tr class="entry" id="static_android.control.awbAvailableModes">
4831            <td class="entry_name
4832             " rowspan="3">
4833              android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
4834            </td>
4835            <td class="entry_type">
4836                <span class="entry_type_name">byte</span>
4837                <span class="entry_type_container">x</span>
4838
4839                <span class="entry_type_array">
4840                  n
4841                </span>
4842              <span class="entry_type_visibility"> [public as enumList]</span>
4843
4844
4845              <span class="entry_type_hwlevel">[legacy] </span>
4846
4847
4848                <div class="entry_type_notes">List of enums</div>
4849
4850
4851            </td> <!-- entry_type -->
4852
4853            <td class="entry_description">
4854              <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
4855camera device.<wbr/></p>
4856            </td>
4857
4858            <td class="entry_units">
4859            </td>
4860
4861            <td class="entry_range">
4862              <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
4863            </td>
4864
4865            <td class="entry_tags">
4866              <ul class="entry_tags">
4867                  <li><a href="#tag_BC">BC</a></li>
4868              </ul>
4869            </td>
4870
4871          </tr>
4872          <tr class="entries_header">
4873            <th class="th_details" colspan="5">Details</th>
4874          </tr>
4875          <tr class="entry_cont">
4876            <td class="entry_details" colspan="5">
4877              <p>Not all the auto-white-balance modes may be supported by a
4878given camera device.<wbr/> This entry lists the valid modes for
4879<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
4880<p>All camera devices will support ON mode.<wbr/></p>
4881<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF
4882mode,<wbr/> which enables application control of white balance,<wbr/> by using
4883<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
4884mode camera devices.<wbr/></p>
4885            </td>
4886          </tr>
4887
4888
4889          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4890           <!-- end of entry -->
4891        
4892                
4893          <tr class="entry" id="static_android.control.maxRegions">
4894            <td class="entry_name
4895             " rowspan="1">
4896              android.<wbr/>control.<wbr/>max<wbr/>Regions
4897            </td>
4898            <td class="entry_type">
4899                <span class="entry_type_name">int32</span>
4900                <span class="entry_type_container">x</span>
4901
4902                <span class="entry_type_array">
4903                  3
4904                </span>
4905              <span class="entry_type_visibility"> [ndk_public]</span>
4906
4907
4908              <span class="entry_type_hwlevel">[legacy] </span>
4909
4910
4911
4912
4913            </td> <!-- entry_type -->
4914
4915            <td class="entry_description">
4916              <p>List of the maximum number of regions that can be used for metering in
4917auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
4918this corresponds to the the maximum number of elements in
4919<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/>
4920and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
4921            </td>
4922
4923            <td class="entry_units">
4924            </td>
4925
4926            <td class="entry_range">
4927              <p>Value must be &gt;= 0 for each element.<wbr/> For full-capability devices
4928this value must be &gt;= 1 for AE and AF.<wbr/> The order of the elements is:
4929<code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
4930            </td>
4931
4932            <td class="entry_tags">
4933              <ul class="entry_tags">
4934                  <li><a href="#tag_BC">BC</a></li>
4935              </ul>
4936            </td>
4937
4938          </tr>
4939
4940
4941          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4942           <!-- end of entry -->
4943        
4944                
4945          <tr class="entry" id="static_android.control.maxRegionsAe">
4946            <td class="entry_name
4947             " rowspan="5">
4948              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
4949            </td>
4950            <td class="entry_type">
4951                <span class="entry_type_name">int32</span>
4952
4953              <span class="entry_type_visibility"> [java_public]</span>
4954
4955              <span class="entry_type_synthetic">[synthetic] </span>
4956
4957              <span class="entry_type_hwlevel">[legacy] </span>
4958
4959
4960
4961
4962            </td> <!-- entry_type -->
4963
4964            <td class="entry_description">
4965              <p>The maximum number of metering regions that can be used by the auto-exposure (AE)
4966routine.<wbr/></p>
4967            </td>
4968
4969            <td class="entry_units">
4970            </td>
4971
4972            <td class="entry_range">
4973              <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
4974value will be &gt;= 1.<wbr/></p>
4975            </td>
4976
4977            <td class="entry_tags">
4978            </td>
4979
4980          </tr>
4981          <tr class="entries_header">
4982            <th class="th_details" colspan="5">Details</th>
4983          </tr>
4984          <tr class="entry_cont">
4985            <td class="entry_details" colspan="5">
4986              <p>This corresponds to the the maximum allowed number of elements in
4987<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
4988            </td>
4989          </tr>
4990
4991          <tr class="entries_header">
4992            <th class="th_details" colspan="5">HAL Implementation Details</th>
4993          </tr>
4994          <tr class="entry_cont">
4995            <td class="entry_details" colspan="5">
4996              <p>This entry is private to the framework.<wbr/> Fill in
4997maxRegions to have this entry be automatically populated.<wbr/></p>
4998            </td>
4999          </tr>
5000
5001          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5002           <!-- end of entry -->
5003        
5004                
5005          <tr class="entry" id="static_android.control.maxRegionsAwb">
5006            <td class="entry_name
5007             " rowspan="5">
5008              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
5009            </td>
5010            <td class="entry_type">
5011                <span class="entry_type_name">int32</span>
5012
5013              <span class="entry_type_visibility"> [java_public]</span>
5014
5015              <span class="entry_type_synthetic">[synthetic] </span>
5016
5017              <span class="entry_type_hwlevel">[legacy] </span>
5018
5019
5020
5021
5022            </td> <!-- entry_type -->
5023
5024            <td class="entry_description">
5025              <p>The maximum number of metering regions that can be used by the auto-white balance (AWB)
5026routine.<wbr/></p>
5027            </td>
5028
5029            <td class="entry_units">
5030            </td>
5031
5032            <td class="entry_range">
5033              <p>Value will be &gt;= 0.<wbr/></p>
5034            </td>
5035
5036            <td class="entry_tags">
5037            </td>
5038
5039          </tr>
5040          <tr class="entries_header">
5041            <th class="th_details" colspan="5">Details</th>
5042          </tr>
5043          <tr class="entry_cont">
5044            <td class="entry_details" colspan="5">
5045              <p>This corresponds to the the maximum allowed number of elements in
5046<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
5047            </td>
5048          </tr>
5049
5050          <tr class="entries_header">
5051            <th class="th_details" colspan="5">HAL Implementation Details</th>
5052          </tr>
5053          <tr class="entry_cont">
5054            <td class="entry_details" colspan="5">
5055              <p>This entry is private to the framework.<wbr/> Fill in
5056maxRegions to have this entry be automatically populated.<wbr/></p>
5057            </td>
5058          </tr>
5059
5060          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5061           <!-- end of entry -->
5062        
5063                
5064          <tr class="entry" id="static_android.control.maxRegionsAf">
5065            <td class="entry_name
5066             " rowspan="5">
5067              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
5068            </td>
5069            <td class="entry_type">
5070                <span class="entry_type_name">int32</span>
5071
5072              <span class="entry_type_visibility"> [java_public]</span>
5073
5074              <span class="entry_type_synthetic">[synthetic] </span>
5075
5076              <span class="entry_type_hwlevel">[legacy] </span>
5077
5078
5079
5080
5081            </td> <!-- entry_type -->
5082
5083            <td class="entry_description">
5084              <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p>
5085            </td>
5086
5087            <td class="entry_units">
5088            </td>
5089
5090            <td class="entry_range">
5091              <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
5092value will be &gt;= 1.<wbr/></p>
5093            </td>
5094
5095            <td class="entry_tags">
5096            </td>
5097
5098          </tr>
5099          <tr class="entries_header">
5100            <th class="th_details" colspan="5">Details</th>
5101          </tr>
5102          <tr class="entry_cont">
5103            <td class="entry_details" colspan="5">
5104              <p>This corresponds to the the maximum allowed number of elements in
5105<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5106            </td>
5107          </tr>
5108
5109          <tr class="entries_header">
5110            <th class="th_details" colspan="5">HAL Implementation Details</th>
5111          </tr>
5112          <tr class="entry_cont">
5113            <td class="entry_details" colspan="5">
5114              <p>This entry is private to the framework.<wbr/> Fill in
5115maxRegions to have this entry be automatically populated.<wbr/></p>
5116            </td>
5117          </tr>
5118
5119          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5120           <!-- end of entry -->
5121        
5122                
5123          <tr class="entry" id="static_android.control.sceneModeOverrides">
5124            <td class="entry_name
5125             " rowspan="5">
5126              android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
5127            </td>
5128            <td class="entry_type">
5129                <span class="entry_type_name">byte</span>
5130                <span class="entry_type_container">x</span>
5131
5132                <span class="entry_type_array">
5133                  3 x length(availableSceneModes)
5134                </span>
5135              <span class="entry_type_visibility"> [system]</span>
5136
5137
5138              <span class="entry_type_hwlevel">[limited] </span>
5139
5140
5141
5142
5143            </td> <!-- entry_type -->
5144
5145            <td class="entry_description">
5146              <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
5147settings to use with each available scene mode.<wbr/></p>
5148            </td>
5149
5150            <td class="entry_units">
5151            </td>
5152
5153            <td class="entry_range">
5154              <p>For each available scene mode,<wbr/> the list must contain three
5155entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5156<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
5157by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
5158where aeMode has the lowest index position.<wbr/></p>
5159            </td>
5160
5161            <td class="entry_tags">
5162              <ul class="entry_tags">
5163                  <li><a href="#tag_BC">BC</a></li>
5164              </ul>
5165            </td>
5166
5167          </tr>
5168          <tr class="entries_header">
5169            <th class="th_details" colspan="5">Details</th>
5170          </tr>
5171          <tr class="entry_cont">
5172            <td class="entry_details" colspan="5">
5173              <p>When a scene mode is enabled,<wbr/> the camera device is expected
5174to 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/>
5175and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
5176that scene mode.<wbr/></p>
5177<p>The order of this list matches that of availableSceneModes,<wbr/>
5178with 3 entries for each mode.<wbr/>  The overrides listed
5179for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/>
5180since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5181<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
5182used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
5183is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and
5184FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p>
5185<p>For example,<wbr/> if availableSceneModes contains
5186<code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/>  then the camera framework
5187expects sceneModeOverrides to have 9 entries formatted like:
5188<code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
5189ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
5190            </td>
5191          </tr>
5192
5193          <tr class="entries_header">
5194            <th class="th_details" colspan="5">HAL Implementation Details</th>
5195          </tr>
5196          <tr class="entry_cont">
5197            <td class="entry_details" colspan="5">
5198              <p>To maintain backward compatibility,<wbr/> this list will be made available
5199in the static metadata of the camera service.<wbr/>  The camera service will
5200use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5201<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
5202mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p>
5203            </td>
5204          </tr>
5205
5206          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5207           <!-- end of entry -->
5208        
5209                
5210          <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations">
5211            <td class="entry_name
5212             " rowspan="5">
5213              android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations
5214            </td>
5215            <td class="entry_type">
5216                <span class="entry_type_name">int32</span>
5217                <span class="entry_type_container">x</span>
5218
5219                <span class="entry_type_array">
5220                  5 x n
5221                </span>
5222              <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
5223
5224
5225              <span class="entry_type_hwlevel">[limited] </span>
5226
5227
5228
5229
5230            </td> <!-- entry_type -->
5231
5232            <td class="entry_description">
5233              <p>List of available high speed video size,<wbr/> fps range and max batch size configurations
5234supported 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>
5235            </td>
5236
5237            <td class="entry_units">
5238            </td>
5239
5240            <td class="entry_range">
5241              <p>For each configuration,<wbr/> the fps_<wbr/>max &gt;= 120fps.<wbr/></p>
5242            </td>
5243
5244            <td class="entry_tags">
5245              <ul class="entry_tags">
5246                  <li><a href="#tag_V1">V1</a></li>
5247              </ul>
5248            </td>
5249
5250          </tr>
5251          <tr class="entries_header">
5252            <th class="th_details" colspan="5">Details</th>
5253          </tr>
5254          <tr class="entry_cont">
5255            <td class="entry_details" colspan="5">
5256              <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/>
5257this metadata will list the supported high speed video size,<wbr/> fps range and max batch size
5258configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes
5259reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a>
5260for processed non-stalling formats.<wbr/></p>
5261<p>For the high speed video use case,<wbr/> the application must
5262select the video size and fps range from this metadata to configure the recording and
5263preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends
5264to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to
5265configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata
5266by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the
5267recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application
5268must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams
5269must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p>
5270<p>The min and max fps will be multiple times of 30fps.<wbr/></p>
5271<p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/>
5272to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate
5273multiple frames together and send to camera device for processing where the request
5274controls are same for all the frames in this batch.<wbr/> Max batch size indicates
5275the max possible number of frames the camera device will group together for this high
5276speed stream configuration.<wbr/> This max batch size will be used to generate a high speed
5277recording request list by
5278<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/>
5279The max batch size for each configuration will satisfy below conditions:</p>
5280<ul>
5281<li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/>
5282if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li>
5283<li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but
5284the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch
5285size is 8,<wbr/> the actual batch size used by camera device will only be 1,<wbr/> 2,<wbr/> 4,<wbr/> or 8.<wbr/></li>
5286<li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li>
5287</ul>
5288<p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/>
5289in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p>
5290<p>This fps ranges in this configuration list can only be used to create requests
5291that are submitted to a high speed camera capture session created by
5292<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
5293The fps ranges reported in this metadata must not be used to setup capture requests for
5294normal capture session,<wbr/> or it will cause request error.<wbr/></p>
5295            </td>
5296          </tr>
5297
5298          <tr class="entries_header">
5299            <th class="th_details" colspan="5">HAL Implementation Details</th>
5300          </tr>
5301          <tr class="entry_cont">
5302            <td class="entry_details" colspan="5">
5303              <p>All the sizes listed in this configuration will be a subset of the sizes reported by
5304<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
5305Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
5306of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p>
5307<p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps
5308sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application
5309usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused
5310stutter when starting recording as much as possible,<wbr/> the application may want to ensure
5311the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise
5312the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/>
5313For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise
5314[30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to
5315do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start
5316recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps
5317values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps
5318values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must
5319switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p>
5320            </td>
5321          </tr>
5322
5323          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5324           <!-- end of entry -->
5325        
5326                
5327          <tr class="entry" id="static_android.control.aeLockAvailable">
5328            <td class="entry_name
5329             " rowspan="3">
5330              android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available
5331            </td>
5332            <td class="entry_type">
5333                <span class="entry_type_name entry_type_name_enum">byte</span>
5334
5335              <span class="entry_type_visibility"> [public as boolean]</span>
5336
5337
5338              <span class="entry_type_hwlevel">[legacy] </span>
5339
5340
5341
5342                <ul class="entry_type_enum">
5343                  <li>
5344                    <span class="entry_type_enum_name">FALSE</span>
5345                  </li>
5346                  <li>
5347                    <span class="entry_type_enum_name">TRUE</span>
5348                  </li>
5349                </ul>
5350
5351            </td> <!-- entry_type -->
5352
5353            <td class="entry_description">
5354              <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p>
5355            </td>
5356
5357            <td class="entry_units">
5358            </td>
5359
5360            <td class="entry_range">
5361            </td>
5362
5363            <td class="entry_tags">
5364              <ul class="entry_tags">
5365                  <li><a href="#tag_BC">BC</a></li>
5366              </ul>
5367            </td>
5368
5369          </tr>
5370          <tr class="entries_header">
5371            <th class="th_details" colspan="5">Details</th>
5372          </tr>
5373          <tr class="entry_cont">
5374            <td class="entry_details" colspan="5">
5375              <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always
5376list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5377            </td>
5378          </tr>
5379
5380
5381          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5382           <!-- end of entry -->
5383        
5384                
5385          <tr class="entry" id="static_android.control.awbLockAvailable">
5386            <td class="entry_name
5387             " rowspan="3">
5388              android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available
5389            </td>
5390            <td class="entry_type">
5391                <span class="entry_type_name entry_type_name_enum">byte</span>
5392
5393              <span class="entry_type_visibility"> [public as boolean]</span>
5394
5395
5396              <span class="entry_type_hwlevel">[legacy] </span>
5397
5398
5399
5400                <ul class="entry_type_enum">
5401                  <li>
5402                    <span class="entry_type_enum_name">FALSE</span>
5403                  </li>
5404                  <li>
5405                    <span class="entry_type_enum_name">TRUE</span>
5406                  </li>
5407                </ul>
5408
5409            </td> <!-- entry_type -->
5410
5411            <td class="entry_description">
5412              <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p>
5413            </td>
5414
5415            <td class="entry_units">
5416            </td>
5417
5418            <td class="entry_range">
5419            </td>
5420
5421            <td class="entry_tags">
5422              <ul class="entry_tags">
5423                  <li><a href="#tag_BC">BC</a></li>
5424              </ul>
5425            </td>
5426
5427          </tr>
5428          <tr class="entries_header">
5429            <th class="th_details" colspan="5">Details</th>
5430          </tr>
5431          <tr class="entry_cont">
5432            <td class="entry_details" colspan="5">
5433              <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will
5434always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5435            </td>
5436          </tr>
5437
5438
5439          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5440           <!-- end of entry -->
5441        
5442                
5443          <tr class="entry" id="static_android.control.availableModes">
5444            <td class="entry_name
5445             " rowspan="3">
5446              android.<wbr/>control.<wbr/>available<wbr/>Modes
5447            </td>
5448            <td class="entry_type">
5449                <span class="entry_type_name">byte</span>
5450                <span class="entry_type_container">x</span>
5451
5452                <span class="entry_type_array">
5453                  n
5454                </span>
5455              <span class="entry_type_visibility"> [public as enumList]</span>
5456
5457
5458              <span class="entry_type_hwlevel">[legacy] </span>
5459
5460
5461                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div>
5462
5463
5464            </td> <!-- entry_type -->
5465
5466            <td class="entry_description">
5467              <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera
5468device.<wbr/></p>
5469            </td>
5470
5471            <td class="entry_units">
5472            </td>
5473
5474            <td class="entry_range">
5475              <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p>
5476            </td>
5477
5478            <td class="entry_tags">
5479            </td>
5480
5481          </tr>
5482          <tr class="entries_header">
5483            <th class="th_details" colspan="5">Details</th>
5484          </tr>
5485          <tr class="entry_cont">
5486            <td class="entry_details" colspan="5">
5487              <p>This list contains control modes that can be set for the camera device.<wbr/>
5488LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL
5489devices will always support OFF,<wbr/> AUTO modes.<wbr/></p>
5490            </td>
5491          </tr>
5492
5493
5494          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5495           <!-- end of entry -->
5496        
5497                
5498          <tr class="entry" id="static_android.control.postRawSensitivityBoostRange">
5499            <td class="entry_name
5500             " rowspan="5">
5501              android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range
5502            </td>
5503            <td class="entry_type">
5504                <span class="entry_type_name">int32</span>
5505                <span class="entry_type_container">x</span>
5506
5507                <span class="entry_type_array">
5508                  2
5509                </span>
5510              <span class="entry_type_visibility"> [public as rangeInt]</span>
5511
5512
5513
5514
5515                <div class="entry_type_notes">Range of supported post RAW sensitivitiy boosts</div>
5516
5517
5518            </td> <!-- entry_type -->
5519
5520            <td class="entry_description">
5521              <p>Range of boosts for <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> supported
5522by this camera device.<wbr/></p>
5523            </td>
5524
5525            <td class="entry_units">
5526              ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
5527            </td>
5528
5529            <td class="entry_range">
5530            </td>
5531
5532            <td class="entry_tags">
5533            </td>
5534
5535          </tr>
5536          <tr class="entries_header">
5537            <th class="th_details" colspan="5">Details</th>
5538          </tr>
5539          <tr class="entry_cont">
5540            <td class="entry_details" colspan="5">
5541              <p>Devices support post RAW sensitivity boost  will advertise
5542<a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> key for controling
5543post RAW sensitivity boost.<wbr/></p>
5544<p>This key will be <code>null</code> for devices that do not support any RAW format
5545outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
5546present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
5547list <code>(100,<wbr/> 100)</code> in this key.<wbr/></p>
5548            </td>
5549          </tr>
5550
5551          <tr class="entries_header">
5552            <th class="th_details" colspan="5">HAL Implementation Details</th>
5553          </tr>
5554          <tr class="entry_cont">
5555            <td class="entry_details" colspan="5">
5556              <p>This key is added in HAL3.<wbr/>4.<wbr/> For HAL3.<wbr/>3 or earlier devices,<wbr/> camera framework will
5557generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output formats.<wbr/>
5558All HAL3.<wbr/>4 and above devices should list this key if device supports any of RAW
5559output formats.<wbr/></p>
5560            </td>
5561          </tr>
5562
5563          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5564           <!-- end of entry -->
5565        
5566        
5567
5568      <!-- end of kind -->
5569      </tbody>
5570      <tr><td colspan="6" class="kind">dynamic</td></tr>
5571
5572      <thead class="entries_header">
5573        <tr>
5574          <th class="th_name">Property Name</th>
5575          <th class="th_type">Type</th>
5576          <th class="th_description">Description</th>
5577          <th class="th_units">Units</th>
5578          <th class="th_range">Range</th>
5579          <th class="th_tags">Tags</th>
5580        </tr>
5581      </thead>
5582
5583      <tbody>
5584
5585        
5586
5587        
5588
5589        
5590
5591        
5592
5593                
5594          <tr class="entry" id="dynamic_android.control.aePrecaptureId">
5595            <td class="entry_name
5596                entry_name_deprecated
5597             " rowspan="3">
5598              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
5599            </td>
5600            <td class="entry_type">
5601                <span class="entry_type_name">int32</span>
5602
5603              <span class="entry_type_visibility"> [system]</span>
5604
5605
5606
5607              <span class="entry_type_deprecated">[deprecated] </span>
5608
5609
5610
5611            </td> <!-- entry_type -->
5612
5613            <td class="entry_description">
5614              <p>The ID sent with the latest
5615CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
5616            </td>
5617
5618            <td class="entry_units">
5619            </td>
5620
5621            <td class="entry_range">
5622              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
5623            </td>
5624
5625            <td class="entry_tags">
5626            </td>
5627
5628          </tr>
5629          <tr class="entries_header">
5630            <th class="th_details" colspan="5">Details</th>
5631          </tr>
5632          <tr class="entry_cont">
5633            <td class="entry_details" colspan="5">
5634              <p>Must be 0 if no
5635CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
5636by HAL.<wbr/> Always updated even if AE algorithm ignores the
5637trigger</p>
5638            </td>
5639          </tr>
5640
5641
5642          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5643           <!-- end of entry -->
5644        
5645                
5646          <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
5647            <td class="entry_name
5648             " rowspan="5">
5649              android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
5650            </td>
5651            <td class="entry_type">
5652                <span class="entry_type_name entry_type_name_enum">byte</span>
5653
5654              <span class="entry_type_visibility"> [public]</span>
5655
5656
5657              <span class="entry_type_hwlevel">[legacy] </span>
5658
5659
5660
5661                <ul class="entry_type_enum">
5662                  <li>
5663                    <span class="entry_type_enum_name">OFF</span>
5664                    <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
5665avoid banding problems.<wbr/></p></span>
5666                  </li>
5667                  <li>
5668                    <span class="entry_type_enum_name">50HZ</span>
5669                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5670avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
5671                  </li>
5672                  <li>
5673                    <span class="entry_type_enum_name">60HZ</span>
5674                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5675avoid banding problems with 60Hz illumination
5676sources.<wbr/></p></span>
5677                  </li>
5678                  <li>
5679                    <span class="entry_type_enum_name">AUTO</span>
5680                    <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
5681antibanding routine to the current illumination
5682condition.<wbr/> This is the default mode if AUTO is
5683available on given camera device.<wbr/></p></span>
5684                  </li>
5685                </ul>
5686
5687            </td> <!-- entry_type -->
5688
5689            <td class="entry_description">
5690              <p>The desired setting for the camera device's auto-exposure
5691algorithm's antibanding compensation.<wbr/></p>
5692            </td>
5693
5694            <td class="entry_units">
5695            </td>
5696
5697            <td class="entry_range">
5698              <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
5699            </td>
5700
5701            <td class="entry_tags">
5702              <ul class="entry_tags">
5703                  <li><a href="#tag_BC">BC</a></li>
5704              </ul>
5705            </td>
5706
5707          </tr>
5708          <tr class="entries_header">
5709            <th class="th_details" colspan="5">Details</th>
5710          </tr>
5711          <tr class="entry_cont">
5712            <td class="entry_details" colspan="5">
5713              <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
5714lights,<wbr/> flicker at the rate of the power supply frequency
5715(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
5716typically not noticeable to a person,<wbr/> it can be visible to
5717a camera device.<wbr/> If a camera sets its exposure time to the
5718wrong value,<wbr/> the flicker may become visible in the
5719viewfinder as flicker or in a final captured image,<wbr/> as a
5720set of variable-brightness bands across the image.<wbr/></p>
5721<p>Therefore,<wbr/> the auto-exposure routines of camera devices
5722include antibanding routines that ensure that the chosen
5723exposure value will not cause such banding.<wbr/> The choice of
5724exposure time depends on the rate of flicker,<wbr/> which the
5725camera device can detect automatically,<wbr/> or the expected
5726rate can be selected by the application using this
5727control.<wbr/></p>
5728<p>A given camera device may not support all of the possible
5729options for the antibanding mode.<wbr/> The
5730<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
5731the available modes for a given camera device.<wbr/></p>
5732<p>AUTO mode is the default if it is available on given
5733camera device.<wbr/> When AUTO mode is not available,<wbr/> the
5734default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
5735and 60HZ will be available.<wbr/></p>
5736<p>If manual exposure control is enabled (by setting
5737<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/>
5738then this setting has no effect,<wbr/> and the application must
5739ensure it selects exposure times that do not cause banding
5740issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
5741the application in this.<wbr/></p>
5742            </td>
5743          </tr>
5744
5745          <tr class="entries_header">
5746            <th class="th_details" colspan="5">HAL Implementation Details</th>
5747          </tr>
5748          <tr class="entry_cont">
5749            <td class="entry_details" colspan="5">
5750              <p>For all capture request templates,<wbr/> this field must be set
5751to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
5752the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
575360HZ must be available.<wbr/></p>
5754<p>If manual exposure control is enabled (by setting
5755<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/>
5756then the exposure values provided by the application must not be
5757adjusted for antibanding.<wbr/></p>
5758            </td>
5759          </tr>
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.aeExposureCompensation">
5766            <td class="entry_name
5767             " rowspan="3">
5768              android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
5769            </td>
5770            <td class="entry_type">
5771                <span class="entry_type_name">int32</span>
5772
5773              <span class="entry_type_visibility"> [public]</span>
5774
5775
5776              <span class="entry_type_hwlevel">[legacy] </span>
5777
5778
5779
5780
5781            </td> <!-- entry_type -->
5782
5783            <td class="entry_description">
5784              <p>Adjustment to auto-exposure (AE) target image
5785brightness.<wbr/></p>
5786            </td>
5787
5788            <td class="entry_units">
5789              Compensation steps
5790            </td>
5791
5792            <td class="entry_range">
5793              <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
5794            </td>
5795
5796            <td class="entry_tags">
5797              <ul class="entry_tags">
5798                  <li><a href="#tag_BC">BC</a></li>
5799              </ul>
5800            </td>
5801
5802          </tr>
5803          <tr class="entries_header">
5804            <th class="th_details" colspan="5">Details</th>
5805          </tr>
5806          <tr class="entry_cont">
5807            <td class="entry_details" colspan="5">
5808              <p>The adjustment is measured as a count of steps,<wbr/> with the
5809step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
5810allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
5811<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
5812will mean an exposure compensation of +2 EV; -3 will mean an
5813exposure compensation of -1 EV.<wbr/> One EV represents a doubling
5814of image brightness.<wbr/> Note that this control will only be
5815effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
5816will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
5817<p>In the event of exposure compensation value being changed,<wbr/> camera device
5818may take several frames to reach the newly requested exposure target.<wbr/>
5819During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
5820state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
5821change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
5822FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
5823            </td>
5824          </tr>
5825
5826
5827          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5828           <!-- end of entry -->
5829        
5830                
5831          <tr class="entry" id="dynamic_android.control.aeLock">
5832            <td class="entry_name
5833             " rowspan="3">
5834              android.<wbr/>control.<wbr/>ae<wbr/>Lock
5835            </td>
5836            <td class="entry_type">
5837                <span class="entry_type_name entry_type_name_enum">byte</span>
5838
5839              <span class="entry_type_visibility"> [public as boolean]</span>
5840
5841
5842              <span class="entry_type_hwlevel">[legacy] </span>
5843
5844
5845
5846                <ul class="entry_type_enum">
5847                  <li>
5848                    <span class="entry_type_enum_name">OFF</span>
5849                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
5850is free to update its parameters.<wbr/></p></span>
5851                  </li>
5852                  <li>
5853                    <span class="entry_type_enum_name">ON</span>
5854                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
5855must not update the exposure and sensitivity parameters
5856while the lock is active.<wbr/></p>
5857<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
5858will still take effect while auto-exposure is locked.<wbr/></p>
5859<p>Some rare LEGACY devices may not support
5860this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
5861                  </li>
5862                </ul>
5863
5864            </td> <!-- entry_type -->
5865
5866            <td class="entry_description">
5867              <p>Whether auto-exposure (AE) is currently locked to its latest
5868calculated values.<wbr/></p>
5869            </td>
5870
5871            <td class="entry_units">
5872            </td>
5873
5874            <td class="entry_range">
5875            </td>
5876
5877            <td class="entry_tags">
5878              <ul class="entry_tags">
5879                  <li><a href="#tag_BC">BC</a></li>
5880              </ul>
5881            </td>
5882
5883          </tr>
5884          <tr class="entries_header">
5885            <th class="th_details" colspan="5">Details</th>
5886          </tr>
5887          <tr class="entry_cont">
5888            <td class="entry_details" colspan="5">
5889              <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
5890and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
5891<p>Note that even when AE is locked,<wbr/> the flash may be fired if
5892the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
5893ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
5894<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
5895is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
5896<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
5897when AE is already locked,<wbr/> the camera device will not change the exposure time
5898(<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>)
5899parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
5900is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
5901<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/>
5902Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
5903<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
5904the AE if AE is locked by the camera device internally during precapture metering
5905sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
5906ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
5907will never succeed in a sequence of preview requests where AE lock is always set
5908to <code>false</code>.<wbr/></p>
5909<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
5910get locked do not necessarily correspond to the settings that were present in the
5911latest capture result received from the camera device,<wbr/> since additional captures
5912and AE updates may have occurred even before the result was sent out.<wbr/> If an
5913application is switching between automatic and manual control and wishes to eliminate
5914any flicker during the switch,<wbr/> the following procedure is recommended:</p>
5915<ol>
5916<li>Starting in auto-AE mode:</li>
5917<li>Lock AE</li>
5918<li>Wait for the first result to be output that has the AE locked</li>
5919<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
5920<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
5921</ol>
5922<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>
5923            </td>
5924          </tr>
5925
5926
5927          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5928           <!-- end of entry -->
5929        
5930                
5931          <tr class="entry" id="dynamic_android.control.aeMode">
5932            <td class="entry_name
5933             " rowspan="3">
5934              android.<wbr/>control.<wbr/>ae<wbr/>Mode
5935            </td>
5936            <td class="entry_type">
5937                <span class="entry_type_name entry_type_name_enum">byte</span>
5938
5939              <span class="entry_type_visibility"> [public]</span>
5940
5941
5942              <span class="entry_type_hwlevel">[legacy] </span>
5943
5944
5945
5946                <ul class="entry_type_enum">
5947                  <li>
5948                    <span class="entry_type_enum_name">OFF</span>
5949                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
5950<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
5951<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
5952<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
5953device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
5954a flash unit for this camera device.<wbr/></p>
5955<p>Note that auto-white balance (AWB) and auto-focus (AF)
5956behavior is device dependent when AE is in OFF mode.<wbr/>
5957To have consistent behavior across different devices,<wbr/>
5958it is recommended to either set AWB and AF to OFF mode
5959or lock AWB and AF before setting AE to OFF.<wbr/>
5960See <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/>
5961<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>
5962for more details.<wbr/></p>
5963<p>LEGACY devices do not support the OFF mode and will
5964override attempts to use this value to ON.<wbr/></p></span>
5965                  </li>
5966                  <li>
5967                    <span class="entry_type_enum_name">ON</span>
5968                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
5969with no flash control.<wbr/></p>
5970<p>The application's values for
5971<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
5972<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
5973<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
5974application has control over the various
5975android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
5976                  </li>
5977                  <li>
5978                    <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
5979                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
5980the camera's flash unit,<wbr/> firing it in low-light
5981conditions.<wbr/></p>
5982<p>The flash may be fired during a precapture sequence
5983(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
5984may be fired for captures for which the
5985<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
5986STILL_<wbr/>CAPTURE</p></span>
5987                  </li>
5988                  <li>
5989                    <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
5990                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
5991the camera's flash unit,<wbr/> always firing it for still
5992captures.<wbr/></p>
5993<p>The flash may be fired during a precapture sequence
5994(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
5995will always be fired for captures for which the
5996<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
5997STILL_<wbr/>CAPTURE</p></span>
5998                  </li>
5999                  <li>
6000                    <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
6001                    <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
6002reduction.<wbr/></p>
6003<p>If deemed necessary by the camera device,<wbr/> a red eye
6004reduction flash will fire during the precapture
6005sequence.<wbr/></p></span>
6006                  </li>
6007                </ul>
6008
6009            </td> <!-- entry_type -->
6010
6011            <td class="entry_description">
6012              <p>The desired mode for the camera device's
6013auto-exposure routine.<wbr/></p>
6014            </td>
6015
6016            <td class="entry_units">
6017            </td>
6018
6019            <td class="entry_range">
6020              <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
6021            </td>
6022
6023            <td class="entry_tags">
6024              <ul class="entry_tags">
6025                  <li><a href="#tag_BC">BC</a></li>
6026              </ul>
6027            </td>
6028
6029          </tr>
6030          <tr class="entries_header">
6031            <th class="th_details" colspan="5">Details</th>
6032          </tr>
6033          <tr class="entry_cont">
6034            <td class="entry_details" colspan="5">
6035              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
6036AUTO.<wbr/></p>
6037<p>When set to any of the ON modes,<wbr/> the camera device's
6038auto-exposure routine is enabled,<wbr/> overriding the
6039application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
6040and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6041<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6042<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
6043is selected,<wbr/> the camera device's flash unit controls are
6044also overridden.<wbr/></p>
6045<p>The FLASH modes are only available if the camera device
6046has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
6047<p>If flash TORCH mode is desired,<wbr/> this field must be set to
6048ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
6049<p>When set to any of the ON modes,<wbr/> the values chosen by the
6050camera device auto-exposure routine for the overridden
6051fields for a given capture will be available in its
6052CaptureResult.<wbr/></p>
6053            </td>
6054          </tr>
6055
6056
6057          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6058           <!-- end of entry -->
6059        
6060                
6061          <tr class="entry" id="dynamic_android.control.aeRegions">
6062            <td class="entry_name
6063             " rowspan="5">
6064              android.<wbr/>control.<wbr/>ae<wbr/>Regions
6065            </td>
6066            <td class="entry_type">
6067                <span class="entry_type_name">int32</span>
6068                <span class="entry_type_container">x</span>
6069
6070                <span class="entry_type_array">
6071                  5 x area_count
6072                </span>
6073              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6074
6075
6076
6077
6078
6079
6080            </td> <!-- entry_type -->
6081
6082            <td class="entry_description">
6083              <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
6084            </td>
6085
6086            <td class="entry_units">
6087              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
6088            </td>
6089
6090            <td class="entry_range">
6091              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
6092<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
6093            </td>
6094
6095            <td class="entry_tags">
6096              <ul class="entry_tags">
6097                  <li><a href="#tag_BC">BC</a></li>
6098              </ul>
6099            </td>
6100
6101          </tr>
6102          <tr class="entries_header">
6103            <th class="th_details" colspan="5">Details</th>
6104          </tr>
6105          <tr class="entry_cont">
6106            <td class="entry_details" colspan="5">
6107              <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
6108Otherwise will always be present.<wbr/></p>
6109<p>The maximum number of regions supported by the device is determined by the value
6110of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
6111<p>The coordinate system is based on the active pixel array,<wbr/>
6112with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
6113(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6114<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
6115bottom-right pixel in the active pixel array.<wbr/></p>
6116<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
6117for every pixel in the area.<wbr/> This means that a large metering area
6118with the same weight as a smaller area will have more effect in
6119the metering result.<wbr/> Metering areas can partially overlap and the
6120camera device will add the weights in the overlap region.<wbr/></p>
6121<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
6122region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
6123weight is ignored.<wbr/></p>
6124<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
6125camera device.<wbr/></p>
6126<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
6127capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
6128region and output only the intersection rectangle as the metering region in the result
6129metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
6130not reported in the result metadata.<wbr/></p>
6131            </td>
6132          </tr>
6133
6134          <tr class="entries_header">
6135            <th class="th_details" colspan="5">HAL Implementation Details</th>
6136          </tr>
6137          <tr class="entry_cont">
6138            <td class="entry_details" colspan="5">
6139              <p>The HAL level representation of MeteringRectangle[] is a
6140int[5 * area_<wbr/>count].<wbr/>
6141Every five elements represent a metering region of
6142(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6143The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6144exclusive on xmax and ymax.<wbr/></p>
6145            </td>
6146          </tr>
6147
6148          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6149           <!-- end of entry -->
6150        
6151                
6152          <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
6153            <td class="entry_name
6154             " rowspan="3">
6155              android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
6156            </td>
6157            <td class="entry_type">
6158                <span class="entry_type_name">int32</span>
6159                <span class="entry_type_container">x</span>
6160
6161                <span class="entry_type_array">
6162                  2
6163                </span>
6164              <span class="entry_type_visibility"> [public as rangeInt]</span>
6165
6166
6167              <span class="entry_type_hwlevel">[legacy] </span>
6168
6169
6170
6171
6172            </td> <!-- entry_type -->
6173
6174            <td class="entry_description">
6175              <p>Range over which the auto-exposure routine can
6176adjust the capture frame rate to maintain good
6177exposure.<wbr/></p>
6178            </td>
6179
6180            <td class="entry_units">
6181              Frames per second (FPS)
6182            </td>
6183
6184            <td class="entry_range">
6185              <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>
6186            </td>
6187
6188            <td class="entry_tags">
6189              <ul class="entry_tags">
6190                  <li><a href="#tag_BC">BC</a></li>
6191              </ul>
6192            </td>
6193
6194          </tr>
6195          <tr class="entries_header">
6196            <th class="th_details" colspan="5">Details</th>
6197          </tr>
6198          <tr class="entry_cont">
6199            <td class="entry_details" colspan="5">
6200              <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
6201manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
6202<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
6203            </td>
6204          </tr>
6205
6206
6207          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6208           <!-- end of entry -->
6209        
6210                
6211          <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
6212            <td class="entry_name
6213             " rowspan="5">
6214              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
6215            </td>
6216            <td class="entry_type">
6217                <span class="entry_type_name entry_type_name_enum">byte</span>
6218
6219              <span class="entry_type_visibility"> [public]</span>
6220
6221
6222              <span class="entry_type_hwlevel">[limited] </span>
6223
6224
6225
6226                <ul class="entry_type_enum">
6227                  <li>
6228                    <span class="entry_type_enum_name">IDLE</span>
6229                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6230                  </li>
6231                  <li>
6232                    <span class="entry_type_enum_name">START</span>
6233                    <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
6234by the camera device.<wbr/></p>
6235<p>The exact effect of the precapture trigger depends on
6236the current AE mode and state.<wbr/></p></span>
6237                  </li>
6238                  <li>
6239                    <span class="entry_type_enum_name">CANCEL</span>
6240                    <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
6241precapture metering sequence,<wbr/> the auto-exposure routine will return to its
6242initial state.<wbr/></p></span>
6243                  </li>
6244                </ul>
6245
6246            </td> <!-- entry_type -->
6247
6248            <td class="entry_description">
6249              <p>Whether the camera device will trigger a precapture
6250metering sequence when it processes this request.<wbr/></p>
6251            </td>
6252
6253            <td class="entry_units">
6254            </td>
6255
6256            <td class="entry_range">
6257            </td>
6258
6259            <td class="entry_tags">
6260              <ul class="entry_tags">
6261                  <li><a href="#tag_BC">BC</a></li>
6262              </ul>
6263            </td>
6264
6265          </tr>
6266          <tr class="entries_header">
6267            <th class="th_details" colspan="5">Details</th>
6268          </tr>
6269          <tr class="entry_cont">
6270            <td class="entry_details" colspan="5">
6271              <p>This entry is normally set to IDLE,<wbr/> or is not
6272included at all in the request settings.<wbr/> When included and
6273set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
6274precapture metering sequence.<wbr/></p>
6275<p>When set to CANCEL,<wbr/> the camera device will cancel any active
6276precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
6277If a precapture metering sequence is already completed,<wbr/> and the camera
6278device has implicitly locked the AE for subsequent still capture,<wbr/> the
6279CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
6280<p>The precapture sequence should be triggered before starting a
6281high-quality still capture for final metering decisions to
6282be made,<wbr/> and for firing pre-capture flash pulses to estimate
6283scene brightness and required final capture flash power,<wbr/> when
6284the flash is enabled.<wbr/></p>
6285<p>Normally,<wbr/> this entry should be set to START for only a
6286single request,<wbr/> and the application should wait until the
6287sequence completes before starting a new one.<wbr/></p>
6288<p>When a precapture metering sequence is finished,<wbr/> the camera device
6289may lock the auto-exposure routine internally to be able to accurately expose the
6290subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
6291For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
6292submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
6293submit 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
6294with <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
6295still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
6296API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
6297internally locked AE if the application doesn't submit a still capture request after
6298the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
6299be used in devices that have earlier API levels.<wbr/></p>
6300<p>The exact effect of auto-exposure (AE) precapture trigger
6301depends on the current AE mode and state; see
6302<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
6303details.<wbr/></p>
6304<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
6305capturing a high-resolution JPEG image will automatically trigger a
6306precapture sequence before the high-resolution capture,<wbr/> including
6307potentially firing a pre-capture flash.<wbr/></p>
6308<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
6309simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
6310the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
6311focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
6312trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
6313changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
6314example.<wbr/></p>
6315<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
6316the camera device will complete them in the optimal order for that device.<wbr/></p>
6317            </td>
6318          </tr>
6319
6320          <tr class="entries_header">
6321            <th class="th_details" colspan="5">HAL Implementation Details</th>
6322          </tr>
6323          <tr class="entry_cont">
6324            <td class="entry_details" colspan="5">
6325              <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
6326(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
6327treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
6328AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
6329to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
6330            </td>
6331          </tr>
6332
6333          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6334           <!-- end of entry -->
6335        
6336                
6337          <tr class="entry" id="dynamic_android.control.aeState">
6338            <td class="entry_name
6339             " rowspan="3">
6340              android.<wbr/>control.<wbr/>ae<wbr/>State
6341            </td>
6342            <td class="entry_type">
6343                <span class="entry_type_name entry_type_name_enum">byte</span>
6344
6345              <span class="entry_type_visibility"> [public]</span>
6346
6347
6348              <span class="entry_type_hwlevel">[limited] </span>
6349
6350
6351
6352                <ul class="entry_type_enum">
6353                  <li>
6354                    <span class="entry_type_enum_name">INACTIVE</span>
6355                    <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
6356<p>When a camera device is opened,<wbr/> it starts in
6357this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
6358this state in capture result.<wbr/></p></span>
6359                  </li>
6360                  <li>
6361                    <span class="entry_type_enum_name">SEARCHING</span>
6362                    <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
6363for the current scene.<wbr/></p>
6364<p>This is a transient state,<wbr/> the camera device may skip
6365reporting this state in capture result.<wbr/></p></span>
6366                  </li>
6367                  <li>
6368                    <span class="entry_type_enum_name">CONVERGED</span>
6369                    <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
6370current scene.<wbr/></p></span>
6371                  </li>
6372                  <li>
6373                    <span class="entry_type_enum_name">LOCKED</span>
6374                    <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
6375                  </li>
6376                  <li>
6377                    <span class="entry_type_enum_name">FLASH_REQUIRED</span>
6378                    <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
6379needs to be fired for good quality still
6380capture.<wbr/></p></span>
6381                  </li>
6382                  <li>
6383                    <span class="entry_type_enum_name">PRECAPTURE</span>
6384                    <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
6385and is currently executing it.<wbr/></p>
6386<p>Precapture can be triggered through setting
6387<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently
6388active and completed (if it causes camera device internal AE lock) precapture
6389metering sequence can be canceled through setting
6390<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p>
6391<p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED
6392or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient
6393state,<wbr/> the camera device may skip reporting this state in
6394capture result.<wbr/></p></span>
6395                  </li>
6396                </ul>
6397
6398            </td> <!-- entry_type -->
6399
6400            <td class="entry_description">
6401              <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p>
6402            </td>
6403
6404            <td class="entry_units">
6405            </td>
6406
6407            <td class="entry_range">
6408            </td>
6409
6410            <td class="entry_tags">
6411            </td>
6412
6413          </tr>
6414          <tr class="entries_header">
6415            <th class="th_details" colspan="5">Details</th>
6416          </tr>
6417          <tr class="entry_cont">
6418            <td class="entry_details" colspan="5">
6419              <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
6420resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6421or <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
6422the algorithm states to INACTIVE.<wbr/></p>
6423<p>The camera device can do several state transitions between two results,<wbr/> if it is
6424allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6425seen in a result.<wbr/></p>
6426<p>The state in the result is the state for this image (in sync with this image): if
6427AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
6428be good to use.<wbr/></p>
6429<p>Below are state transition tables for different AE modes.<wbr/></p>
6430<table>
6431<thead>
6432<tr>
6433<th align="center">State</th>
6434<th align="center">Transition Cause</th>
6435<th align="center">New State</th>
6436<th align="center">Notes</th>
6437</tr>
6438</thead>
6439<tbody>
6440<tr>
6441<td align="center">INACTIVE</td>
6442<td align="center"></td>
6443<td align="center">INACTIVE</td>
6444<td align="center">Camera device auto exposure algorithm is disabled</td>
6445</tr>
6446</tbody>
6447</table>
6448<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p>
6449<table>
6450<thead>
6451<tr>
6452<th align="center">State</th>
6453<th align="center">Transition Cause</th>
6454<th align="center">New State</th>
6455<th align="center">Notes</th>
6456</tr>
6457</thead>
6458<tbody>
6459<tr>
6460<td align="center">INACTIVE</td>
6461<td align="center">Camera device initiates AE scan</td>
6462<td align="center">SEARCHING</td>
6463<td align="center">Values changing</td>
6464</tr>
6465<tr>
6466<td align="center">INACTIVE</td>
6467<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6468<td align="center">LOCKED</td>
6469<td align="center">Values locked</td>
6470</tr>
6471<tr>
6472<td align="center">SEARCHING</td>
6473<td align="center">Camera device finishes AE scan</td>
6474<td align="center">CONVERGED</td>
6475<td align="center">Good values,<wbr/> not changing</td>
6476</tr>
6477<tr>
6478<td align="center">SEARCHING</td>
6479<td align="center">Camera device finishes AE scan</td>
6480<td align="center">FLASH_<wbr/>REQUIRED</td>
6481<td align="center">Converged but too dark w/<wbr/>o flash</td>
6482</tr>
6483<tr>
6484<td align="center">SEARCHING</td>
6485<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6486<td align="center">LOCKED</td>
6487<td align="center">Values locked</td>
6488</tr>
6489<tr>
6490<td align="center">CONVERGED</td>
6491<td align="center">Camera device initiates AE scan</td>
6492<td align="center">SEARCHING</td>
6493<td align="center">Values changing</td>
6494</tr>
6495<tr>
6496<td align="center">CONVERGED</td>
6497<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6498<td align="center">LOCKED</td>
6499<td align="center">Values locked</td>
6500</tr>
6501<tr>
6502<td align="center">FLASH_<wbr/>REQUIRED</td>
6503<td align="center">Camera device initiates AE scan</td>
6504<td align="center">SEARCHING</td>
6505<td align="center">Values changing</td>
6506</tr>
6507<tr>
6508<td align="center">FLASH_<wbr/>REQUIRED</td>
6509<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6510<td align="center">LOCKED</td>
6511<td align="center">Values locked</td>
6512</tr>
6513<tr>
6514<td align="center">LOCKED</td>
6515<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6516<td align="center">SEARCHING</td>
6517<td align="center">Values not good after unlock</td>
6518</tr>
6519<tr>
6520<td align="center">LOCKED</td>
6521<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6522<td align="center">CONVERGED</td>
6523<td align="center">Values good after unlock</td>
6524</tr>
6525<tr>
6526<td align="center">LOCKED</td>
6527<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6528<td align="center">FLASH_<wbr/>REQUIRED</td>
6529<td align="center">Exposure good,<wbr/> but too dark</td>
6530</tr>
6531<tr>
6532<td align="center">PRECAPTURE</td>
6533<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6534<td align="center">CONVERGED</td>
6535<td align="center">Ready for high-quality capture</td>
6536</tr>
6537<tr>
6538<td align="center">PRECAPTURE</td>
6539<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6540<td align="center">LOCKED</td>
6541<td align="center">Ready for high-quality capture</td>
6542</tr>
6543<tr>
6544<td align="center">LOCKED</td>
6545<td align="center">aeLock is ON and aePrecaptureTrigger is START</td>
6546<td align="center">LOCKED</td>
6547<td align="center">Precapture trigger is ignored when AE is already locked</td>
6548</tr>
6549<tr>
6550<td align="center">LOCKED</td>
6551<td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td>
6552<td align="center">LOCKED</td>
6553<td align="center">Precapture trigger is ignored when AE is already locked</td>
6554</tr>
6555<tr>
6556<td align="center">Any state (excluding LOCKED)</td>
6557<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
6558<td align="center">PRECAPTURE</td>
6559<td align="center">Start AE precapture metering sequence</td>
6560</tr>
6561<tr>
6562<td align="center">Any state (excluding LOCKED)</td>
6563<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td>
6564<td align="center">INACTIVE</td>
6565<td align="center">Currently active precapture metering sequence is canceled</td>
6566</tr>
6567</tbody>
6568</table>
6569<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
6570without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
6571can be skipped in that manner is called a transient state.<wbr/></p>
6572<p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions
6573listed in above table,<wbr/> it is also legal for the camera device to skip one or more
6574transient states between two results.<wbr/> See below table for examples:</p>
6575<table>
6576<thead>
6577<tr>
6578<th align="center">State</th>
6579<th align="center">Transition Cause</th>
6580<th align="center">New State</th>
6581<th align="center">Notes</th>
6582</tr>
6583</thead>
6584<tbody>
6585<tr>
6586<td align="center">INACTIVE</td>
6587<td align="center">Camera device finished AE scan</td>
6588<td align="center">CONVERGED</td>
6589<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
6590</tr>
6591<tr>
6592<td align="center">Any state (excluding LOCKED)</td>
6593<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>
6594<td align="center">FLASH_<wbr/>REQUIRED</td>
6595<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>
6596</tr>
6597<tr>
6598<td align="center">Any state (excluding LOCKED)</td>
6599<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>
6600<td align="center">CONVERGED</td>
6601<td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
6602</tr>
6603<tr>
6604<td align="center">Any state (excluding LOCKED)</td>
6605<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6606<td align="center">FLASH_<wbr/>REQUIRED</td>
6607<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>
6608</tr>
6609<tr>
6610<td align="center">Any state (excluding LOCKED)</td>
6611<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6612<td align="center">CONVERGED</td>
6613<td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
6614</tr>
6615<tr>
6616<td align="center">CONVERGED</td>
6617<td align="center">Camera device finished AE scan</td>
6618<td align="center">FLASH_<wbr/>REQUIRED</td>
6619<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>
6620</tr>
6621<tr>
6622<td align="center">FLASH_<wbr/>REQUIRED</td>
6623<td align="center">Camera device finished AE scan</td>
6624<td align="center">CONVERGED</td>
6625<td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
6626</tr>
6627</tbody>
6628</table>
6629            </td>
6630          </tr>
6631
6632
6633          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6634           <!-- end of entry -->
6635        
6636                
6637          <tr class="entry" id="dynamic_android.control.afMode">
6638            <td class="entry_name
6639             " rowspan="5">
6640              android.<wbr/>control.<wbr/>af<wbr/>Mode
6641            </td>
6642            <td class="entry_type">
6643                <span class="entry_type_name entry_type_name_enum">byte</span>
6644
6645              <span class="entry_type_visibility"> [public]</span>
6646
6647
6648              <span class="entry_type_hwlevel">[legacy] </span>
6649
6650
6651
6652                <ul class="entry_type_enum">
6653                  <li>
6654                    <span class="entry_type_enum_name">OFF</span>
6655                    <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
6656<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
6657application.<wbr/></p></span>
6658                  </li>
6659                  <li>
6660                    <span class="entry_type_enum_name">AUTO</span>
6661                    <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
6662<p>In this mode,<wbr/> the lens does not move unless
6663the autofocus trigger action is called.<wbr/> When that trigger
6664is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
6665the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
6666<p>Always supported if lens is not fixed focus.<wbr/></p>
6667<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
6668is fixed-focus.<wbr/></p>
6669<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
6670and sets the AF state to INACTIVE.<wbr/></p></span>
6671                  </li>
6672                  <li>
6673                    <span class="entry_type_enum_name">MACRO</span>
6674                    <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
6675<p>In this mode,<wbr/> the lens does not move unless the
6676autofocus trigger action is called.<wbr/> When that trigger is
6677activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
6678the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
6679mode is optimized for focusing on objects very close to
6680the camera.<wbr/></p>
6681<p>When that trigger is activated,<wbr/> AF will transition to
6682ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
6683NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
6684position to default,<wbr/> and sets the AF state to
6685INACTIVE.<wbr/></p></span>
6686                  </li>
6687                  <li>
6688                    <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
6689                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
6690position continually to attempt to provide a
6691constantly-in-focus image stream.<wbr/></p>
6692<p>The focusing behavior should be suitable for good quality
6693video recording; typically this means slower focus
6694movement and no overshoots.<wbr/> When the AF trigger is not
6695involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
6696and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
6697states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
6698the algorithm should immediately transition into
6699AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
6700lens position until a cancel AF trigger is received.<wbr/></p>
6701<p>Once cancel is received,<wbr/> the algorithm should transition
6702back to INACTIVE and resume passive scan.<wbr/> Note that this
6703behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
6704ongoing PASSIVE_<wbr/>SCAN must immediately be
6705canceled.<wbr/></p></span>
6706                  </li>
6707                  <li>
6708                    <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
6709                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
6710position continually to attempt to provide a
6711constantly-in-focus image stream.<wbr/></p>
6712<p>The focusing behavior should be suitable for still image
6713capture; typically this means focusing as fast as
6714possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
6715algorithm should start in INACTIVE state,<wbr/> and then
6716transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
6717appropriate as it attempts to maintain focus.<wbr/> When the AF
6718trigger is activated,<wbr/> the algorithm should finish its
6719PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
6720AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
6721lens position until a cancel AF trigger is received.<wbr/></p>
6722<p>When the AF cancel trigger is activated,<wbr/> the algorithm
6723should transition back to INACTIVE and then act as if it
6724has just been started.<wbr/></p></span>
6725                  </li>
6726                  <li>
6727                    <span class="entry_type_enum_name">EDOF</span>
6728                    <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
6729<p>The camera device will produce images with an extended
6730depth of field automatically; no special focusing
6731operations need to be done before taking a picture.<wbr/></p>
6732<p>AF triggers are ignored,<wbr/> and the AF state will always be
6733INACTIVE.<wbr/></p></span>
6734                  </li>
6735                </ul>
6736
6737            </td> <!-- entry_type -->
6738
6739            <td class="entry_description">
6740              <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
6741mode it is set to.<wbr/></p>
6742            </td>
6743
6744            <td class="entry_units">
6745            </td>
6746
6747            <td class="entry_range">
6748              <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
6749            </td>
6750
6751            <td class="entry_tags">
6752              <ul class="entry_tags">
6753                  <li><a href="#tag_BC">BC</a></li>
6754              </ul>
6755            </td>
6756
6757          </tr>
6758          <tr class="entries_header">
6759            <th class="th_details" colspan="5">Details</th>
6760          </tr>
6761          <tr class="entry_cont">
6762            <td class="entry_details" colspan="5">
6763              <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
6764(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
6765when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
6766dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
6767setting <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>
6768<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
6769the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
6770in result metadata.<wbr/></p>
6771            </td>
6772          </tr>
6773
6774          <tr class="entries_header">
6775            <th class="th_details" colspan="5">HAL Implementation Details</th>
6776          </tr>
6777          <tr class="entry_cont">
6778            <td class="entry_details" colspan="5">
6779              <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
6780request (<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
6781up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
6782<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
6783locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
6784after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
6785the same focal plane remains in focus.<wbr/></p>
6786<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
6787scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
6788(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
6789same lock behavior as above.<wbr/></p>
6790<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
6791focus 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/>
6792However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
6793manual control.<wbr/></p>
6794<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
6795camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
6796remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
6797by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
6798that will arise on camera modules with open-loop VCMs.<wbr/></p>
6799            </td>
6800          </tr>
6801
6802          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6803           <!-- end of entry -->
6804        
6805                
6806          <tr class="entry" id="dynamic_android.control.afRegions">
6807            <td class="entry_name
6808             " rowspan="5">
6809              android.<wbr/>control.<wbr/>af<wbr/>Regions
6810            </td>
6811            <td class="entry_type">
6812                <span class="entry_type_name">int32</span>
6813                <span class="entry_type_container">x</span>
6814
6815                <span class="entry_type_array">
6816                  5 x area_count
6817                </span>
6818              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6819
6820
6821
6822
6823
6824
6825            </td> <!-- entry_type -->
6826
6827            <td class="entry_description">
6828              <p>List of metering areas to use for auto-focus.<wbr/></p>
6829            </td>
6830
6831            <td class="entry_units">
6832              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
6833            </td>
6834
6835            <td class="entry_range">
6836              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
6837<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
6838            </td>
6839
6840            <td class="entry_tags">
6841              <ul class="entry_tags">
6842                  <li><a href="#tag_BC">BC</a></li>
6843              </ul>
6844            </td>
6845
6846          </tr>
6847          <tr class="entries_header">
6848            <th class="th_details" colspan="5">Details</th>
6849          </tr>
6850          <tr class="entry_cont">
6851            <td class="entry_details" colspan="5">
6852              <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
6853Otherwise will always be present.<wbr/></p>
6854<p>The maximum number of focus areas supported by the device is determined by the value
6855of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
6856<p>The coordinate system is based on the active pixel array,<wbr/>
6857with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
6858(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6859<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
6860bottom-right pixel in the active pixel array.<wbr/></p>
6861<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
6862for every pixel in the area.<wbr/> This means that a large metering area
6863with the same weight as a smaller area will have more effect in
6864the metering result.<wbr/> Metering areas can partially overlap and the
6865camera device will add the weights in the overlap region.<wbr/></p>
6866<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
6867is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
6868ignored.<wbr/></p>
6869<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
6870camera device.<wbr/></p>
6871<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
6872capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
6873region and output only the intersection rectangle as the metering region in the result
6874metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
6875not reported in the result metadata.<wbr/></p>
6876            </td>
6877          </tr>
6878
6879          <tr class="entries_header">
6880            <th class="th_details" colspan="5">HAL Implementation Details</th>
6881          </tr>
6882          <tr class="entry_cont">
6883            <td class="entry_details" colspan="5">
6884              <p>The HAL level representation of MeteringRectangle[] is a
6885int[5 * area_<wbr/>count].<wbr/>
6886Every five elements represent a metering region of
6887(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6888The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6889exclusive on xmax and ymax.<wbr/></p>
6890            </td>
6891          </tr>
6892
6893          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6894           <!-- end of entry -->
6895        
6896                
6897          <tr class="entry" id="dynamic_android.control.afTrigger">
6898            <td class="entry_name
6899             " rowspan="5">
6900              android.<wbr/>control.<wbr/>af<wbr/>Trigger
6901            </td>
6902            <td class="entry_type">
6903                <span class="entry_type_name entry_type_name_enum">byte</span>
6904
6905              <span class="entry_type_visibility"> [public]</span>
6906
6907
6908              <span class="entry_type_hwlevel">[legacy] </span>
6909
6910
6911
6912                <ul class="entry_type_enum">
6913                  <li>
6914                    <span class="entry_type_enum_name">IDLE</span>
6915                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6916                  </li>
6917                  <li>
6918                    <span class="entry_type_enum_name">START</span>
6919                    <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
6920                  </li>
6921                  <li>
6922                    <span class="entry_type_enum_name">CANCEL</span>
6923                    <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
6924state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
6925                  </li>
6926                </ul>
6927
6928            </td> <!-- entry_type -->
6929
6930            <td class="entry_description">
6931              <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
6932            </td>
6933
6934            <td class="entry_units">
6935            </td>
6936
6937            <td class="entry_range">
6938            </td>
6939
6940            <td class="entry_tags">
6941              <ul class="entry_tags">
6942                  <li><a href="#tag_BC">BC</a></li>
6943              </ul>
6944            </td>
6945
6946          </tr>
6947          <tr class="entries_header">
6948            <th class="th_details" colspan="5">Details</th>
6949          </tr>
6950          <tr class="entry_cont">
6951            <td class="entry_details" colspan="5">
6952              <p>This entry is normally set to IDLE,<wbr/> or is not
6953included at all in the request settings.<wbr/></p>
6954<p>When included and set to START,<wbr/> the camera device will trigger the
6955autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
6956<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
6957and return to its initial AF state.<wbr/></p>
6958<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
6959single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
6960START for multiple captures in a row means restarting the AF operation over
6961and over again.<wbr/></p>
6962<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>
6963<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>
6964simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
6965the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
6966focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
6967trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
6968changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
6969            </td>
6970          </tr>
6971
6972          <tr class="entries_header">
6973            <th class="th_details" colspan="5">HAL Implementation Details</th>
6974          </tr>
6975          <tr class="entry_cont">
6976            <td class="entry_details" colspan="5">
6977              <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
6978(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
6979treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
6980AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
6981to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
6982            </td>
6983          </tr>
6984
6985          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6986           <!-- end of entry -->
6987        
6988                
6989          <tr class="entry" id="dynamic_android.control.afState">
6990            <td class="entry_name
6991             " rowspan="3">
6992              android.<wbr/>control.<wbr/>af<wbr/>State
6993            </td>
6994            <td class="entry_type">
6995                <span class="entry_type_name entry_type_name_enum">byte</span>
6996
6997              <span class="entry_type_visibility"> [public]</span>
6998
6999
7000              <span class="entry_type_hwlevel">[legacy] </span>
7001
7002
7003
7004                <ul class="entry_type_enum">
7005                  <li>
7006                    <span class="entry_type_enum_name">INACTIVE</span>
7007                    <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
7008to scan.<wbr/></p>
7009<p>When a camera device is opened,<wbr/> it starts in this
7010state.<wbr/> This is a transient state,<wbr/> the camera device may
7011skip reporting this state in capture
7012result.<wbr/></p></span>
7013                  </li>
7014                  <li>
7015                    <span class="entry_type_enum_name">PASSIVE_SCAN</span>
7016                    <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
7017camera device in a continuous autofocus mode.<wbr/></p>
7018<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7019state,<wbr/> the camera device may skip reporting this state in
7020capture result.<wbr/></p></span>
7021                  </li>
7022                  <li>
7023                    <span class="entry_type_enum_name">PASSIVE_FOCUSED</span>
7024                    <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
7025restart scanning at any time.<wbr/></p>
7026<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7027state,<wbr/> the camera device may skip reporting this state in
7028capture result.<wbr/></p></span>
7029                  </li>
7030                  <li>
7031                    <span class="entry_type_enum_name">ACTIVE_SCAN</span>
7032                    <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
7033triggered by AF trigger.<wbr/></p>
7034<p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
7035state,<wbr/> the camera device may skip reporting this state in
7036capture result.<wbr/></p></span>
7037                  </li>
7038                  <li>
7039                    <span class="entry_type_enum_name">FOCUSED_LOCKED</span>
7040                    <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
7041focus.<wbr/></p>
7042<p>This state is reached only after an explicit START AF trigger has been
7043sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p>
7044<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
7045a 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>
7046                  </li>
7047                  <li>
7048                    <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span>
7049                    <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
7050focus.<wbr/></p>
7051<p>This state is reached only after an explicit START AF trigger has been
7052sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p>
7053<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
7054a 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>
7055                  </li>
7056                  <li>
7057                    <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span>
7058                    <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
7059and may restart scanning at any time.<wbr/></p>
7060<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
7061device may skip reporting this state in capture result.<wbr/></p>
7062<p>LEGACY camera devices do not support this state.<wbr/> When a passive
7063scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span>
7064                  </li>
7065                </ul>
7066
7067            </td> <!-- entry_type -->
7068
7069            <td class="entry_description">
7070              <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
7071            </td>
7072
7073            <td class="entry_units">
7074            </td>
7075
7076            <td class="entry_range">
7077            </td>
7078
7079            <td class="entry_tags">
7080            </td>
7081
7082          </tr>
7083          <tr class="entries_header">
7084            <th class="th_details" colspan="5">Details</th>
7085          </tr>
7086          <tr class="entry_cont">
7087            <td class="entry_details" colspan="5">
7088              <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
7089resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
7090or <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
7091the algorithm states to INACTIVE.<wbr/></p>
7092<p>The camera device can do several state transitions between two results,<wbr/> if it is
7093allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
7094seen in a result.<wbr/></p>
7095<p>The state in the result is the state for this image (in sync with this image): if
7096AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
7097be sharp.<wbr/></p>
7098<p>Below are state transition tables for different AF modes.<wbr/></p>
7099<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>
7100<table>
7101<thead>
7102<tr>
7103<th align="center">State</th>
7104<th align="center">Transition Cause</th>
7105<th align="center">New State</th>
7106<th align="center">Notes</th>
7107</tr>
7108</thead>
7109<tbody>
7110<tr>
7111<td align="center">INACTIVE</td>
7112<td align="center"></td>
7113<td align="center">INACTIVE</td>
7114<td align="center">Never changes</td>
7115</tr>
7116</tbody>
7117</table>
7118<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>
7119<table>
7120<thead>
7121<tr>
7122<th align="center">State</th>
7123<th align="center">Transition Cause</th>
7124<th align="center">New State</th>
7125<th align="center">Notes</th>
7126</tr>
7127</thead>
7128<tbody>
7129<tr>
7130<td align="center">INACTIVE</td>
7131<td align="center">AF_<wbr/>TRIGGER</td>
7132<td align="center">ACTIVE_<wbr/>SCAN</td>
7133<td align="center">Start AF sweep,<wbr/> Lens now moving</td>
7134</tr>
7135<tr>
7136<td align="center">ACTIVE_<wbr/>SCAN</td>
7137<td align="center">AF sweep done</td>
7138<td align="center">FOCUSED_<wbr/>LOCKED</td>
7139<td align="center">Focused,<wbr/> Lens now locked</td>
7140</tr>
7141<tr>
7142<td align="center">ACTIVE_<wbr/>SCAN</td>
7143<td align="center">AF sweep done</td>
7144<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7145<td align="center">Not focused,<wbr/> Lens now locked</td>
7146</tr>
7147<tr>
7148<td align="center">ACTIVE_<wbr/>SCAN</td>
7149<td align="center">AF_<wbr/>CANCEL</td>
7150<td align="center">INACTIVE</td>
7151<td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
7152</tr>
7153<tr>
7154<td align="center">FOCUSED_<wbr/>LOCKED</td>
7155<td align="center">AF_<wbr/>CANCEL</td>
7156<td align="center">INACTIVE</td>
7157<td align="center">Cancel/<wbr/>reset AF</td>
7158</tr>
7159<tr>
7160<td align="center">FOCUSED_<wbr/>LOCKED</td>
7161<td align="center">AF_<wbr/>TRIGGER</td>
7162<td align="center">ACTIVE_<wbr/>SCAN</td>
7163<td align="center">Start new sweep,<wbr/> Lens now moving</td>
7164</tr>
7165<tr>
7166<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7167<td align="center">AF_<wbr/>CANCEL</td>
7168<td align="center">INACTIVE</td>
7169<td align="center">Cancel/<wbr/>reset AF</td>
7170</tr>
7171<tr>
7172<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7173<td align="center">AF_<wbr/>TRIGGER</td>
7174<td align="center">ACTIVE_<wbr/>SCAN</td>
7175<td align="center">Start new sweep,<wbr/> Lens now moving</td>
7176</tr>
7177<tr>
7178<td align="center">Any state</td>
7179<td align="center">Mode change</td>
7180<td align="center">INACTIVE</td>
7181<td align="center"></td>
7182</tr>
7183</tbody>
7184</table>
7185<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7186without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7187can be skipped in that manner is called a transient state.<wbr/></p>
7188<p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
7189state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
7190one or more transient states between two results.<wbr/> See below table for examples:</p>
7191<table>
7192<thead>
7193<tr>
7194<th align="center">State</th>
7195<th align="center">Transition Cause</th>
7196<th align="center">New State</th>
7197<th align="center">Notes</th>
7198</tr>
7199</thead>
7200<tbody>
7201<tr>
7202<td align="center">INACTIVE</td>
7203<td align="center">AF_<wbr/>TRIGGER</td>
7204<td align="center">FOCUSED_<wbr/>LOCKED</td>
7205<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7206</tr>
7207<tr>
7208<td align="center">INACTIVE</td>
7209<td align="center">AF_<wbr/>TRIGGER</td>
7210<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7211<td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
7212</tr>
7213<tr>
7214<td align="center">FOCUSED_<wbr/>LOCKED</td>
7215<td align="center">AF_<wbr/>TRIGGER</td>
7216<td align="center">FOCUSED_<wbr/>LOCKED</td>
7217<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7218</tr>
7219<tr>
7220<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7221<td align="center">AF_<wbr/>TRIGGER</td>
7222<td align="center">FOCUSED_<wbr/>LOCKED</td>
7223<td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
7224</tr>
7225</tbody>
7226</table>
7227<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>
7228<table>
7229<thead>
7230<tr>
7231<th align="center">State</th>
7232<th align="center">Transition Cause</th>
7233<th align="center">New State</th>
7234<th align="center">Notes</th>
7235</tr>
7236</thead>
7237<tbody>
7238<tr>
7239<td align="center">INACTIVE</td>
7240<td align="center">Camera device initiates new scan</td>
7241<td align="center">PASSIVE_<wbr/>SCAN</td>
7242<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7243</tr>
7244<tr>
7245<td align="center">INACTIVE</td>
7246<td align="center">AF_<wbr/>TRIGGER</td>
7247<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7248<td align="center">AF state query,<wbr/> Lens now locked</td>
7249</tr>
7250<tr>
7251<td align="center">PASSIVE_<wbr/>SCAN</td>
7252<td align="center">Camera device completes current scan</td>
7253<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7254<td align="center">End AF scan,<wbr/> Lens now locked</td>
7255</tr>
7256<tr>
7257<td align="center">PASSIVE_<wbr/>SCAN</td>
7258<td align="center">Camera device fails current scan</td>
7259<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7260<td align="center">End AF scan,<wbr/> Lens now locked</td>
7261</tr>
7262<tr>
7263<td align="center">PASSIVE_<wbr/>SCAN</td>
7264<td align="center">AF_<wbr/>TRIGGER</td>
7265<td align="center">FOCUSED_<wbr/>LOCKED</td>
7266<td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td>
7267</tr>
7268<tr>
7269<td align="center">PASSIVE_<wbr/>SCAN</td>
7270<td align="center">AF_<wbr/>TRIGGER</td>
7271<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7272<td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td>
7273</tr>
7274<tr>
7275<td align="center">PASSIVE_<wbr/>SCAN</td>
7276<td align="center">AF_<wbr/>CANCEL</td>
7277<td align="center">INACTIVE</td>
7278<td align="center">Reset lens position,<wbr/> Lens now locked</td>
7279</tr>
7280<tr>
7281<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7282<td align="center">Camera device initiates new scan</td>
7283<td align="center">PASSIVE_<wbr/>SCAN</td>
7284<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7285</tr>
7286<tr>
7287<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7288<td align="center">Camera device initiates new scan</td>
7289<td align="center">PASSIVE_<wbr/>SCAN</td>
7290<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7291</tr>
7292<tr>
7293<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7294<td align="center">AF_<wbr/>TRIGGER</td>
7295<td align="center">FOCUSED_<wbr/>LOCKED</td>
7296<td align="center">Immediate transition,<wbr/> lens now locked</td>
7297</tr>
7298<tr>
7299<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7300<td align="center">AF_<wbr/>TRIGGER</td>
7301<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7302<td align="center">Immediate transition,<wbr/> lens now locked</td>
7303</tr>
7304<tr>
7305<td align="center">FOCUSED_<wbr/>LOCKED</td>
7306<td align="center">AF_<wbr/>TRIGGER</td>
7307<td align="center">FOCUSED_<wbr/>LOCKED</td>
7308<td align="center">No effect</td>
7309</tr>
7310<tr>
7311<td align="center">FOCUSED_<wbr/>LOCKED</td>
7312<td align="center">AF_<wbr/>CANCEL</td>
7313<td align="center">INACTIVE</td>
7314<td align="center">Restart AF scan</td>
7315</tr>
7316<tr>
7317<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7318<td align="center">AF_<wbr/>TRIGGER</td>
7319<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7320<td align="center">No effect</td>
7321</tr>
7322<tr>
7323<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7324<td align="center">AF_<wbr/>CANCEL</td>
7325<td align="center">INACTIVE</td>
7326<td align="center">Restart AF scan</td>
7327</tr>
7328</tbody>
7329</table>
7330<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>
7331<table>
7332<thead>
7333<tr>
7334<th align="center">State</th>
7335<th align="center">Transition Cause</th>
7336<th align="center">New State</th>
7337<th align="center">Notes</th>
7338</tr>
7339</thead>
7340<tbody>
7341<tr>
7342<td align="center">INACTIVE</td>
7343<td align="center">Camera device initiates new scan</td>
7344<td align="center">PASSIVE_<wbr/>SCAN</td>
7345<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7346</tr>
7347<tr>
7348<td align="center">INACTIVE</td>
7349<td align="center">AF_<wbr/>TRIGGER</td>
7350<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7351<td align="center">AF state query,<wbr/> Lens now locked</td>
7352</tr>
7353<tr>
7354<td align="center">PASSIVE_<wbr/>SCAN</td>
7355<td align="center">Camera device completes current scan</td>
7356<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7357<td align="center">End AF scan,<wbr/> Lens now locked</td>
7358</tr>
7359<tr>
7360<td align="center">PASSIVE_<wbr/>SCAN</td>
7361<td align="center">Camera device fails current scan</td>
7362<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7363<td align="center">End AF scan,<wbr/> Lens now locked</td>
7364</tr>
7365<tr>
7366<td align="center">PASSIVE_<wbr/>SCAN</td>
7367<td align="center">AF_<wbr/>TRIGGER</td>
7368<td align="center">FOCUSED_<wbr/>LOCKED</td>
7369<td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td>
7370</tr>
7371<tr>
7372<td align="center">PASSIVE_<wbr/>SCAN</td>
7373<td align="center">AF_<wbr/>TRIGGER</td>
7374<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7375<td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td>
7376</tr>
7377<tr>
7378<td align="center">PASSIVE_<wbr/>SCAN</td>
7379<td align="center">AF_<wbr/>CANCEL</td>
7380<td align="center">INACTIVE</td>
7381<td align="center">Reset lens position,<wbr/> Lens now locked</td>
7382</tr>
7383<tr>
7384<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7385<td align="center">Camera device initiates new scan</td>
7386<td align="center">PASSIVE_<wbr/>SCAN</td>
7387<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7388</tr>
7389<tr>
7390<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7391<td align="center">Camera device initiates new scan</td>
7392<td align="center">PASSIVE_<wbr/>SCAN</td>
7393<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7394</tr>
7395<tr>
7396<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7397<td align="center">AF_<wbr/>TRIGGER</td>
7398<td align="center">FOCUSED_<wbr/>LOCKED</td>
7399<td align="center">Immediate trans.<wbr/> Lens now locked</td>
7400</tr>
7401<tr>
7402<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7403<td align="center">AF_<wbr/>TRIGGER</td>
7404<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7405<td align="center">Immediate trans.<wbr/> Lens now locked</td>
7406</tr>
7407<tr>
7408<td align="center">FOCUSED_<wbr/>LOCKED</td>
7409<td align="center">AF_<wbr/>TRIGGER</td>
7410<td align="center">FOCUSED_<wbr/>LOCKED</td>
7411<td align="center">No effect</td>
7412</tr>
7413<tr>
7414<td align="center">FOCUSED_<wbr/>LOCKED</td>
7415<td align="center">AF_<wbr/>CANCEL</td>
7416<td align="center">INACTIVE</td>
7417<td align="center">Restart AF scan</td>
7418</tr>
7419<tr>
7420<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7421<td align="center">AF_<wbr/>TRIGGER</td>
7422<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7423<td align="center">No effect</td>
7424</tr>
7425<tr>
7426<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7427<td align="center">AF_<wbr/>CANCEL</td>
7428<td align="center">INACTIVE</td>
7429<td align="center">Restart AF scan</td>
7430</tr>
7431</tbody>
7432</table>
7433<p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
7434(AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
7435camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
7436will be evaluated in the context of the new mode in the request.<wbr/>
7437See below table for examples:</p>
7438<table>
7439<thead>
7440<tr>
7441<th align="center">State</th>
7442<th align="center">Transition Cause</th>
7443<th align="center">New State</th>
7444<th align="center">Notes</th>
7445</tr>
7446</thead>
7447<tbody>
7448<tr>
7449<td align="center">any state</td>
7450<td align="center">CAF--&gt;AUTO mode switch</td>
7451<td align="center">INACTIVE</td>
7452<td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
7453</tr>
7454<tr>
7455<td align="center">any state</td>
7456<td align="center">CAF--&gt;AUTO mode switch with AF_<wbr/>TRIGGER</td>
7457<td align="center">trigger-reachable states from INACTIVE</td>
7458<td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
7459</tr>
7460<tr>
7461<td align="center">any state</td>
7462<td align="center">AUTO--&gt;CAF mode switch</td>
7463<td align="center">passively reachable states from INACTIVE</td>
7464<td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
7465</tr>
7466</tbody>
7467</table>
7468            </td>
7469          </tr>
7470
7471
7472          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7473           <!-- end of entry -->
7474        
7475                
7476          <tr class="entry" id="dynamic_android.control.afTriggerId">
7477            <td class="entry_name
7478                entry_name_deprecated
7479             " rowspan="3">
7480              android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
7481            </td>
7482            <td class="entry_type">
7483                <span class="entry_type_name">int32</span>
7484
7485              <span class="entry_type_visibility"> [system]</span>
7486
7487
7488
7489              <span class="entry_type_deprecated">[deprecated] </span>
7490
7491
7492
7493            </td> <!-- entry_type -->
7494
7495            <td class="entry_description">
7496              <p>The ID sent with the latest
7497CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
7498            </td>
7499
7500            <td class="entry_units">
7501            </td>
7502
7503            <td class="entry_range">
7504              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
7505            </td>
7506
7507            <td class="entry_tags">
7508            </td>
7509
7510          </tr>
7511          <tr class="entries_header">
7512            <th class="th_details" colspan="5">Details</th>
7513          </tr>
7514          <tr class="entry_cont">
7515            <td class="entry_details" colspan="5">
7516              <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
7517received yet by HAL.<wbr/> Always updated even if AF algorithm
7518ignores the trigger</p>
7519            </td>
7520          </tr>
7521
7522
7523          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7524           <!-- end of entry -->
7525        
7526                
7527          <tr class="entry" id="dynamic_android.control.awbLock">
7528            <td class="entry_name
7529             " rowspan="3">
7530              android.<wbr/>control.<wbr/>awb<wbr/>Lock
7531            </td>
7532            <td class="entry_type">
7533                <span class="entry_type_name entry_type_name_enum">byte</span>
7534
7535              <span class="entry_type_visibility"> [public as boolean]</span>
7536
7537
7538              <span class="entry_type_hwlevel">[legacy] </span>
7539
7540
7541
7542                <ul class="entry_type_enum">
7543                  <li>
7544                    <span class="entry_type_enum_name">OFF</span>
7545                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
7546algorithm is free to update its parameters if in AUTO
7547mode.<wbr/></p></span>
7548                  </li>
7549                  <li>
7550                    <span class="entry_type_enum_name">ON</span>
7551                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
7552algorithm will not update its parameters while the lock
7553is active.<wbr/></p></span>
7554                  </li>
7555                </ul>
7556
7557            </td> <!-- entry_type -->
7558
7559            <td class="entry_description">
7560              <p>Whether auto-white balance (AWB) is currently locked to its
7561latest calculated values.<wbr/></p>
7562            </td>
7563
7564            <td class="entry_units">
7565            </td>
7566
7567            <td class="entry_range">
7568            </td>
7569
7570            <td class="entry_tags">
7571              <ul class="entry_tags">
7572                  <li><a href="#tag_BC">BC</a></li>
7573              </ul>
7574            </td>
7575
7576          </tr>
7577          <tr class="entries_header">
7578            <th class="th_details" colspan="5">Details</th>
7579          </tr>
7580          <tr class="entry_cont">
7581            <td class="entry_details" colspan="5">
7582              <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
7583and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
7584<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
7585get locked do not necessarily correspond to the settings that were present in the
7586latest capture result received from the camera device,<wbr/> since additional captures
7587and AWB updates may have occurred even before the result was sent out.<wbr/> If an
7588application is switching between automatic and manual control and wishes to eliminate
7589any flicker during the switch,<wbr/> the following procedure is recommended:</p>
7590<ol>
7591<li>Starting in auto-AWB mode:</li>
7592<li>Lock AWB</li>
7593<li>Wait for the first result to be output that has the AWB locked</li>
7594<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
7595<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
7596</ol>
7597<p>Note that AWB lock is only meaningful when
7598<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
7599AWB is already fixed to a specific setting.<wbr/></p>
7600<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
7601            </td>
7602          </tr>
7603
7604
7605          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7606           <!-- end of entry -->
7607        
7608                
7609          <tr class="entry" id="dynamic_android.control.awbMode">
7610            <td class="entry_name
7611             " rowspan="3">
7612              android.<wbr/>control.<wbr/>awb<wbr/>Mode
7613            </td>
7614            <td class="entry_type">
7615                <span class="entry_type_name entry_type_name_enum">byte</span>
7616
7617              <span class="entry_type_visibility"> [public]</span>
7618
7619
7620              <span class="entry_type_hwlevel">[legacy] </span>
7621
7622
7623
7624                <ul class="entry_type_enum">
7625                  <li>
7626                    <span class="entry_type_enum_name">OFF</span>
7627                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
7628<p>The application-selected color transform matrix
7629(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
7630(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
7631device for manual white balance control.<wbr/></p></span>
7632                  </li>
7633                  <li>
7634                    <span class="entry_type_enum_name">AUTO</span>
7635                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
7636<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7637and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7638For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7639values used by the camera device for the transform and gains
7640will be available in the capture result for this request.<wbr/></p></span>
7641                  </li>
7642                  <li>
7643                    <span class="entry_type_enum_name">INCANDESCENT</span>
7644                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7645the camera device uses incandescent light as the assumed scene
7646illumination for white balance.<wbr/></p>
7647<p>While the exact white balance transforms are up to the
7648camera device,<wbr/> they will approximately match the CIE
7649standard illuminant A.<wbr/></p>
7650<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7651and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7652For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7653values used by the camera device for the transform and gains
7654will be available in the capture result for this request.<wbr/></p></span>
7655                  </li>
7656                  <li>
7657                    <span class="entry_type_enum_name">FLUORESCENT</span>
7658                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7659the camera device uses fluorescent light as the assumed scene
7660illumination for white balance.<wbr/></p>
7661<p>While the exact white balance transforms are up to the
7662camera device,<wbr/> they will approximately match the CIE
7663standard illuminant F2.<wbr/></p>
7664<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7665and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7666For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7667values used by the camera device for the transform and gains
7668will be available in the capture result for this request.<wbr/></p></span>
7669                  </li>
7670                  <li>
7671                    <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
7672                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7673the camera device uses warm fluorescent light as the assumed scene
7674illumination for white balance.<wbr/></p>
7675<p>While the exact white balance transforms are up to the
7676camera device,<wbr/> they will approximately match the CIE
7677standard illuminant F4.<wbr/></p>
7678<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7679and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7680For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7681values used by the camera device for the transform and gains
7682will be available in the capture result for this request.<wbr/></p></span>
7683                  </li>
7684                  <li>
7685                    <span class="entry_type_enum_name">DAYLIGHT</span>
7686                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7687the camera device uses daylight light as the assumed scene
7688illumination for white balance.<wbr/></p>
7689<p>While the exact white balance transforms are up to the
7690camera device,<wbr/> they will approximately match the CIE
7691standard illuminant D65.<wbr/></p>
7692<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7693and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7694For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7695values used by the camera device for the transform and gains
7696will be available in the capture result for this request.<wbr/></p></span>
7697                  </li>
7698                  <li>
7699                    <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
7700                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7701the camera device uses cloudy daylight light as the assumed scene
7702illumination for white balance.<wbr/></p>
7703<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7704and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7705For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7706values used by the camera device for the transform and gains
7707will be available in the capture result for this request.<wbr/></p></span>
7708                  </li>
7709                  <li>
7710                    <span class="entry_type_enum_name">TWILIGHT</span>
7711                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7712the camera device uses twilight light as the assumed scene
7713illumination for white balance.<wbr/></p>
7714<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7715and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7716For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7717values used by the camera device for the transform and gains
7718will be available in the capture result for this request.<wbr/></p></span>
7719                  </li>
7720                  <li>
7721                    <span class="entry_type_enum_name">SHADE</span>
7722                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7723the camera device uses shade light as the assumed scene
7724illumination for white balance.<wbr/></p>
7725<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7726and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7727For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7728values used by the camera device for the transform and gains
7729will be available in the capture result for this request.<wbr/></p></span>
7730                  </li>
7731                </ul>
7732
7733            </td> <!-- entry_type -->
7734
7735            <td class="entry_description">
7736              <p>Whether auto-white balance (AWB) is currently setting the color
7737transform fields,<wbr/> and what its illumination target
7738is.<wbr/></p>
7739            </td>
7740
7741            <td class="entry_units">
7742            </td>
7743
7744            <td class="entry_range">
7745              <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
7746            </td>
7747
7748            <td class="entry_tags">
7749              <ul class="entry_tags">
7750                  <li><a href="#tag_BC">BC</a></li>
7751              </ul>
7752            </td>
7753
7754          </tr>
7755          <tr class="entries_header">
7756            <th class="th_details" colspan="5">Details</th>
7757          </tr>
7758          <tr class="entry_cont">
7759            <td class="entry_details" colspan="5">
7760              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
7761<p>When set to the ON mode,<wbr/> the camera device's auto-white balance
7762routine is enabled,<wbr/> overriding the application's selected
7763<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
7764<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>
7765is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
7766also 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
7767setting AE mode to OFF.<wbr/></p>
7768<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
7769routine is disabled.<wbr/> The application manually controls the white
7770balance 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>
7771and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
7772<p>When set to any other modes,<wbr/> the camera device's auto-white
7773balance routine is disabled.<wbr/> The camera device uses each
7774particular illumination target for white balance
7775adjustment.<wbr/> The application's values for
7776<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
7777<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
7778<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
7779            </td>
7780          </tr>
7781
7782
7783          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7784           <!-- end of entry -->
7785        
7786                
7787          <tr class="entry" id="dynamic_android.control.awbRegions">
7788            <td class="entry_name
7789             " rowspan="5">
7790              android.<wbr/>control.<wbr/>awb<wbr/>Regions
7791            </td>
7792            <td class="entry_type">
7793                <span class="entry_type_name">int32</span>
7794                <span class="entry_type_container">x</span>
7795
7796                <span class="entry_type_array">
7797                  5 x area_count
7798                </span>
7799              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
7800
7801
7802
7803
7804
7805
7806            </td> <!-- entry_type -->
7807
7808            <td class="entry_description">
7809              <p>List of metering areas to use for auto-white-balance illuminant
7810estimation.<wbr/></p>
7811            </td>
7812
7813            <td class="entry_units">
7814              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
7815            </td>
7816
7817            <td class="entry_range">
7818              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
7819<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
7820            </td>
7821
7822            <td class="entry_tags">
7823              <ul class="entry_tags">
7824                  <li><a href="#tag_BC">BC</a></li>
7825              </ul>
7826            </td>
7827
7828          </tr>
7829          <tr class="entries_header">
7830            <th class="th_details" colspan="5">Details</th>
7831          </tr>
7832          <tr class="entry_cont">
7833            <td class="entry_details" colspan="5">
7834              <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
7835Otherwise will always be present.<wbr/></p>
7836<p>The maximum number of regions supported by the device is determined by the value
7837of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
7838<p>The coordinate system is based on the active pixel array,<wbr/>
7839with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
7840(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7841<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
7842bottom-right pixel in the active pixel array.<wbr/></p>
7843<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
7844for every pixel in the area.<wbr/> This means that a large metering area
7845with the same weight as a smaller area will have more effect in
7846the metering result.<wbr/> Metering areas can partially overlap and the
7847camera device will add the weights in the overlap region.<wbr/></p>
7848<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
7849only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
78500 weight is ignored.<wbr/></p>
7851<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
7852camera device.<wbr/></p>
7853<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
7854capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
7855region and output only the intersection rectangle as the metering region in the result
7856metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
7857not reported in the result metadata.<wbr/></p>
7858            </td>
7859          </tr>
7860
7861          <tr class="entries_header">
7862            <th class="th_details" colspan="5">HAL Implementation Details</th>
7863          </tr>
7864          <tr class="entry_cont">
7865            <td class="entry_details" colspan="5">
7866              <p>The HAL level representation of MeteringRectangle[] is a
7867int[5 * area_<wbr/>count].<wbr/>
7868Every five elements represent a metering region of
7869(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
7870The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
7871exclusive on xmax and ymax.<wbr/></p>
7872            </td>
7873          </tr>
7874
7875          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7876           <!-- end of entry -->
7877        
7878                
7879          <tr class="entry" id="dynamic_android.control.captureIntent">
7880            <td class="entry_name
7881             " rowspan="3">
7882              android.<wbr/>control.<wbr/>capture<wbr/>Intent
7883            </td>
7884            <td class="entry_type">
7885                <span class="entry_type_name entry_type_name_enum">byte</span>
7886
7887              <span class="entry_type_visibility"> [public]</span>
7888
7889
7890              <span class="entry_type_hwlevel">[legacy] </span>
7891
7892
7893
7894                <ul class="entry_type_enum">
7895                  <li>
7896                    <span class="entry_type_enum_name">CUSTOM</span>
7897                    <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
7898categories.<wbr/> The camera device will default to preview-like
7899behavior.<wbr/></p></span>
7900                  </li>
7901                  <li>
7902                    <span class="entry_type_enum_name">PREVIEW</span>
7903                    <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
7904<p>The precapture trigger may be used to start off a metering
7905w/<wbr/>flash sequence.<wbr/></p></span>
7906                  </li>
7907                  <li>
7908                    <span class="entry_type_enum_name">STILL_CAPTURE</span>
7909                    <span class="entry_type_enum_notes"><p>This request is for a still capture-type
7910use case.<wbr/></p>
7911<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
7912                  </li>
7913                  <li>
7914                    <span class="entry_type_enum_name">VIDEO_RECORD</span>
7915                    <span class="entry_type_enum_notes"><p>This request is for a video recording
7916use case.<wbr/></p></span>
7917                  </li>
7918                  <li>
7919                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
7920                    <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
7921image while recording video) use case.<wbr/></p>
7922<p>The camera device should take the highest-quality image
7923possible (given the other settings) without disrupting the
7924frame rate of video recording.<wbr/>  </p></span>
7925                  </li>
7926                  <li>
7927                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
7928                    <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
7929application will stream full-resolution images and
7930reprocess one or several later for a final
7931capture.<wbr/></p></span>
7932                  </li>
7933                  <li>
7934                    <span class="entry_type_enum_name">MANUAL</span>
7935                    <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
7936the applications want to directly control the capture parameters.<wbr/></p>
7937<p>For example,<wbr/> the application may wish to manually control
7938<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>
7939                  </li>
7940                </ul>
7941
7942            </td> <!-- entry_type -->
7943
7944            <td class="entry_description">
7945              <p>Information to the camera device 3A (auto-exposure,<wbr/>
7946auto-focus,<wbr/> auto-white balance) routines about the purpose
7947of this capture,<wbr/> to help the camera device to decide optimal 3A
7948strategy.<wbr/></p>
7949            </td>
7950
7951            <td class="entry_units">
7952            </td>
7953
7954            <td class="entry_range">
7955            </td>
7956
7957            <td class="entry_tags">
7958              <ul class="entry_tags">
7959                  <li><a href="#tag_BC">BC</a></li>
7960              </ul>
7961            </td>
7962
7963          </tr>
7964          <tr class="entries_header">
7965            <th class="th_details" colspan="5">Details</th>
7966          </tr>
7967          <tr class="entry_cont">
7968            <td class="entry_details" colspan="5">
7969              <p>This control (except for MANUAL) is only effective if
7970<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
7971<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
7972contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
7973<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
7974always supported.<wbr/></p>
7975            </td>
7976          </tr>
7977
7978
7979          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7980           <!-- end of entry -->
7981        
7982                
7983          <tr class="entry" id="dynamic_android.control.awbState">
7984            <td class="entry_name
7985             " rowspan="3">
7986              android.<wbr/>control.<wbr/>awb<wbr/>State
7987            </td>
7988            <td class="entry_type">
7989                <span class="entry_type_name entry_type_name_enum">byte</span>
7990
7991              <span class="entry_type_visibility"> [public]</span>
7992
7993
7994              <span class="entry_type_hwlevel">[limited] </span>
7995
7996
7997
7998                <ul class="entry_type_enum">
7999                  <li>
8000                    <span class="entry_type_enum_name">INACTIVE</span>
8001                    <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
8002<p>When a camera device is opened,<wbr/> it starts in this
8003state.<wbr/> This is a transient state,<wbr/> the camera device may
8004skip reporting this state in capture
8005result.<wbr/></p></span>
8006                  </li>
8007                  <li>
8008                    <span class="entry_type_enum_name">SEARCHING</span>
8009                    <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
8010values for the current scene.<wbr/></p>
8011<p>This is a transient state,<wbr/> the camera device
8012may skip reporting this state in capture result.<wbr/></p></span>
8013                  </li>
8014                  <li>
8015                    <span class="entry_type_enum_name">CONVERGED</span>
8016                    <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
8017current scene.<wbr/></p></span>
8018                  </li>
8019                  <li>
8020                    <span class="entry_type_enum_name">LOCKED</span>
8021                    <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
8022                  </li>
8023                </ul>
8024
8025            </td> <!-- entry_type -->
8026
8027            <td class="entry_description">
8028              <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
8029            </td>
8030
8031            <td class="entry_units">
8032            </td>
8033
8034            <td class="entry_range">
8035            </td>
8036
8037            <td class="entry_tags">
8038            </td>
8039
8040          </tr>
8041          <tr class="entries_header">
8042            <th class="th_details" colspan="5">Details</th>
8043          </tr>
8044          <tr class="entry_cont">
8045            <td class="entry_details" colspan="5">
8046              <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
8047resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
8048or <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
8049the algorithm states to INACTIVE.<wbr/></p>
8050<p>The camera device can do several state transitions between two results,<wbr/> if it is
8051allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
8052a result.<wbr/></p>
8053<p>The state in the result is the state for this image (in sync with this image): if
8054AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
8055be good to use.<wbr/></p>
8056<p>Below are state transition tables for different AWB modes.<wbr/></p>
8057<p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p>
8058<table>
8059<thead>
8060<tr>
8061<th align="center">State</th>
8062<th align="center">Transition Cause</th>
8063<th align="center">New State</th>
8064<th align="center">Notes</th>
8065</tr>
8066</thead>
8067<tbody>
8068<tr>
8069<td align="center">INACTIVE</td>
8070<td align="center"></td>
8071<td align="center">INACTIVE</td>
8072<td align="center">Camera device auto white balance algorithm is disabled</td>
8073</tr>
8074</tbody>
8075</table>
8076<p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
8077<table>
8078<thead>
8079<tr>
8080<th align="center">State</th>
8081<th align="center">Transition Cause</th>
8082<th align="center">New State</th>
8083<th align="center">Notes</th>
8084</tr>
8085</thead>
8086<tbody>
8087<tr>
8088<td align="center">INACTIVE</td>
8089<td align="center">Camera device initiates AWB scan</td>
8090<td align="center">SEARCHING</td>
8091<td align="center">Values changing</td>
8092</tr>
8093<tr>
8094<td align="center">INACTIVE</td>
8095<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8096<td align="center">LOCKED</td>
8097<td align="center">Values locked</td>
8098</tr>
8099<tr>
8100<td align="center">SEARCHING</td>
8101<td align="center">Camera device finishes AWB scan</td>
8102<td align="center">CONVERGED</td>
8103<td align="center">Good values,<wbr/> not changing</td>
8104</tr>
8105<tr>
8106<td align="center">SEARCHING</td>
8107<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8108<td align="center">LOCKED</td>
8109<td align="center">Values locked</td>
8110</tr>
8111<tr>
8112<td align="center">CONVERGED</td>
8113<td align="center">Camera device initiates AWB scan</td>
8114<td align="center">SEARCHING</td>
8115<td align="center">Values changing</td>
8116</tr>
8117<tr>
8118<td align="center">CONVERGED</td>
8119<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8120<td align="center">LOCKED</td>
8121<td align="center">Values locked</td>
8122</tr>
8123<tr>
8124<td align="center">LOCKED</td>
8125<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8126<td align="center">SEARCHING</td>
8127<td align="center">Values not good after unlock</td>
8128</tr>
8129</tbody>
8130</table>
8131<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
8132without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
8133can be skipped in that manner is called a transient state.<wbr/></p>
8134<p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
8135listed in above table,<wbr/> it is also legal for the camera device to skip one or more
8136transient states between two results.<wbr/> See below table for examples:</p>
8137<table>
8138<thead>
8139<tr>
8140<th align="center">State</th>
8141<th align="center">Transition Cause</th>
8142<th align="center">New State</th>
8143<th align="center">Notes</th>
8144</tr>
8145</thead>
8146<tbody>
8147<tr>
8148<td align="center">INACTIVE</td>
8149<td align="center">Camera device finished AWB scan</td>
8150<td align="center">CONVERGED</td>
8151<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
8152</tr>
8153<tr>
8154<td align="center">LOCKED</td>
8155<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8156<td align="center">CONVERGED</td>
8157<td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
8158</tr>
8159</tbody>
8160</table>
8161            </td>
8162          </tr>
8163
8164
8165          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8166           <!-- end of entry -->
8167        
8168                
8169          <tr class="entry" id="dynamic_android.control.effectMode">
8170            <td class="entry_name
8171             " rowspan="3">
8172              android.<wbr/>control.<wbr/>effect<wbr/>Mode
8173            </td>
8174            <td class="entry_type">
8175                <span class="entry_type_name entry_type_name_enum">byte</span>
8176
8177              <span class="entry_type_visibility"> [public]</span>
8178
8179
8180              <span class="entry_type_hwlevel">[legacy] </span>
8181
8182
8183
8184                <ul class="entry_type_enum">
8185                  <li>
8186                    <span class="entry_type_enum_name">OFF</span>
8187                    <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
8188                  </li>
8189                  <li>
8190                    <span class="entry_type_enum_name">MONO</span>
8191                    <span class="entry_type_enum_optional">[optional]</span>
8192                    <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
8193a single color.<wbr/></p>
8194<p>This will typically be grayscale.<wbr/></p></span>
8195                  </li>
8196                  <li>
8197                    <span class="entry_type_enum_name">NEGATIVE</span>
8198                    <span class="entry_type_enum_optional">[optional]</span>
8199                    <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
8200are inverted.<wbr/></p></span>
8201                  </li>
8202                  <li>
8203                    <span class="entry_type_enum_name">SOLARIZE</span>
8204                    <span class="entry_type_enum_optional">[optional]</span>
8205                    <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
8206image is wholly or partially reversed in
8207tone.<wbr/></p></span>
8208                  </li>
8209                  <li>
8210                    <span class="entry_type_enum_name">SEPIA</span>
8211                    <span class="entry_type_enum_optional">[optional]</span>
8212                    <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
8213gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
8214                  </li>
8215                  <li>
8216                    <span class="entry_type_enum_name">POSTERIZE</span>
8217                    <span class="entry_type_enum_optional">[optional]</span>
8218                    <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
8219discrete regions of tone rather than a continuous
8220gradient of tones.<wbr/></p></span>
8221                  </li>
8222                  <li>
8223                    <span class="entry_type_enum_name">WHITEBOARD</span>
8224                    <span class="entry_type_enum_optional">[optional]</span>
8225                    <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
8226as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
8227                  </li>
8228                  <li>
8229                    <span class="entry_type_enum_name">BLACKBOARD</span>
8230                    <span class="entry_type_enum_optional">[optional]</span>
8231                    <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
8232as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
8233                  </li>
8234                  <li>
8235                    <span class="entry_type_enum_name">AQUA</span>
8236                    <span class="entry_type_enum_optional">[optional]</span>
8237                    <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
8238                  </li>
8239                </ul>
8240
8241            </td> <!-- entry_type -->
8242
8243            <td class="entry_description">
8244              <p>A special color effect to apply.<wbr/></p>
8245            </td>
8246
8247            <td class="entry_units">
8248            </td>
8249
8250            <td class="entry_range">
8251              <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
8252            </td>
8253
8254            <td class="entry_tags">
8255              <ul class="entry_tags">
8256                  <li><a href="#tag_BC">BC</a></li>
8257              </ul>
8258            </td>
8259
8260          </tr>
8261          <tr class="entries_header">
8262            <th class="th_details" colspan="5">Details</th>
8263          </tr>
8264          <tr class="entry_cont">
8265            <td class="entry_details" colspan="5">
8266              <p>When this mode is set,<wbr/> a color effect will be applied
8267to images produced by the camera device.<wbr/> The interpretation
8268and implementation of these color effects is left to the
8269implementor of the camera device,<wbr/> and should not be
8270depended on to be consistent (or present) across all
8271devices.<wbr/></p>
8272            </td>
8273          </tr>
8274
8275
8276          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8277           <!-- end of entry -->
8278        
8279                
8280          <tr class="entry" id="dynamic_android.control.mode">
8281            <td class="entry_name
8282             " rowspan="3">
8283              android.<wbr/>control.<wbr/>mode
8284            </td>
8285            <td class="entry_type">
8286                <span class="entry_type_name entry_type_name_enum">byte</span>
8287
8288              <span class="entry_type_visibility"> [public]</span>
8289
8290
8291              <span class="entry_type_hwlevel">[legacy] </span>
8292
8293
8294
8295                <ul class="entry_type_enum">
8296                  <li>
8297                    <span class="entry_type_enum_name">OFF</span>
8298                    <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
8299<p>All control by the device's metering and focusing (3A)
8300routines is disabled,<wbr/> and no other settings in
8301android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
8302<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
8303device to select post-processing values for processing
8304blocks that do not allow for manual control,<wbr/> or are not
8305exposed by the camera API.<wbr/></p>
8306<p>However,<wbr/> the camera device's 3A routines may continue to
8307collect statistics and update their internal state so that
8308when control is switched to AUTO mode,<wbr/> good control values
8309can be immediately applied.<wbr/></p></span>
8310                  </li>
8311                  <li>
8312                    <span class="entry_type_enum_name">AUTO</span>
8313                    <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
8314<p>Manual control of capture parameters is disabled.<wbr/> All
8315controls in android.<wbr/>control.<wbr/>* besides sceneMode take
8316effect.<wbr/></p></span>
8317                  </li>
8318                  <li>
8319                    <span class="entry_type_enum_name">USE_SCENE_MODE</span>
8320                    <span class="entry_type_enum_optional">[optional]</span>
8321                    <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
8322<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
8323control.<wbr/>afMode controls; the camera device will ignore
8324those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
8325FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
8326This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
8327<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
8328contain some modes other than DISABLED).<wbr/></p></span>
8329                  </li>
8330                  <li>
8331                    <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
8332                    <span class="entry_type_enum_optional">[optional]</span>
8333                    <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
8334used by camera device background auto-exposure,<wbr/> auto-white balance and
8335auto-focus algorithms (3A) to update their statistics.<wbr/></p>
8336<p>Specifically,<wbr/> the 3A routines are locked to the last
8337values set from a request with AUTO,<wbr/> OFF,<wbr/> or
8338USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
8339collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
8340discarded by the camera device.<wbr/></p></span>
8341                  </li>
8342                </ul>
8343
8344            </td> <!-- entry_type -->
8345
8346            <td class="entry_description">
8347              <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
8348routines.<wbr/></p>
8349            </td>
8350
8351            <td class="entry_units">
8352            </td>
8353
8354            <td class="entry_range">
8355              <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
8356            </td>
8357
8358            <td class="entry_tags">
8359              <ul class="entry_tags">
8360                  <li><a href="#tag_BC">BC</a></li>
8361              </ul>
8362            </td>
8363
8364          </tr>
8365          <tr class="entries_header">
8366            <th class="th_details" colspan="5">Details</th>
8367          </tr>
8368          <tr class="entry_cont">
8369            <td class="entry_details" colspan="5">
8370              <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
8371by the camera device is disabled.<wbr/> The application must set the fields for
8372capture parameters itself.<wbr/></p>
8373<p>When set to AUTO,<wbr/> the individual algorithm controls in
8374android.<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>
8375<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
8376android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
8377one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
8378as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
8379<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
8380<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
8381is that this frame will not be used by camera device background 3A statistics
8382update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
8383where the application doesn't want a 3A manual control capture to affect
8384the subsequent auto 3A capture results.<wbr/></p>
8385            </td>
8386          </tr>
8387
8388
8389          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8390           <!-- end of entry -->
8391        
8392                
8393          <tr class="entry" id="dynamic_android.control.sceneMode">
8394            <td class="entry_name
8395             " rowspan="5">
8396              android.<wbr/>control.<wbr/>scene<wbr/>Mode
8397            </td>
8398            <td class="entry_type">
8399                <span class="entry_type_name entry_type_name_enum">byte</span>
8400
8401              <span class="entry_type_visibility"> [public]</span>
8402
8403
8404              <span class="entry_type_hwlevel">[legacy] </span>
8405
8406
8407
8408                <ul class="entry_type_enum">
8409                  <li>
8410                    <span class="entry_type_enum_name">DISABLED</span>
8411                    <span class="entry_type_enum_value">0</span>
8412                    <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
8413                  </li>
8414                  <li>
8415                    <span class="entry_type_enum_name">FACE_PRIORITY</span>
8416                    <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
8417detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
8418auto-exposure routines.<wbr/></p>
8419<p>If face detection statistics are disabled
8420(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/>
8421this should still operate correctly (but will not return
8422face detection statistics to the framework).<wbr/></p>
8423<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8424<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>
8425remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
8426                  </li>
8427                  <li>
8428                    <span class="entry_type_enum_name">ACTION</span>
8429                    <span class="entry_type_enum_optional">[optional]</span>
8430                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
8431<p>Similar to SPORTS.<wbr/></p></span>
8432                  </li>
8433                  <li>
8434                    <span class="entry_type_enum_name">PORTRAIT</span>
8435                    <span class="entry_type_enum_optional">[optional]</span>
8436                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
8437                  </li>
8438                  <li>
8439                    <span class="entry_type_enum_name">LANDSCAPE</span>
8440                    <span class="entry_type_enum_optional">[optional]</span>
8441                    <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
8442                  </li>
8443                  <li>
8444                    <span class="entry_type_enum_name">NIGHT</span>
8445                    <span class="entry_type_enum_optional">[optional]</span>
8446                    <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
8447                  </li>
8448                  <li>
8449                    <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
8450                    <span class="entry_type_enum_optional">[optional]</span>
8451                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
8452settings.<wbr/></p></span>
8453                  </li>
8454                  <li>
8455                    <span class="entry_type_enum_name">THEATRE</span>
8456                    <span class="entry_type_enum_optional">[optional]</span>
8457                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
8458remain off.<wbr/></p></span>
8459                  </li>
8460                  <li>
8461                    <span class="entry_type_enum_name">BEACH</span>
8462                    <span class="entry_type_enum_optional">[optional]</span>
8463                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
8464                  </li>
8465                  <li>
8466                    <span class="entry_type_enum_name">SNOW</span>
8467                    <span class="entry_type_enum_optional">[optional]</span>
8468                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
8469                  </li>
8470                  <li>
8471                    <span class="entry_type_enum_name">SUNSET</span>
8472                    <span class="entry_type_enum_optional">[optional]</span>
8473                    <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
8474                  </li>
8475                  <li>
8476                    <span class="entry_type_enum_name">STEADYPHOTO</span>
8477                    <span class="entry_type_enum_optional">[optional]</span>
8478                    <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
8479device motion (for example: due to hand shake).<wbr/></p></span>
8480                  </li>
8481                  <li>
8482                    <span class="entry_type_enum_name">FIREWORKS</span>
8483                    <span class="entry_type_enum_optional">[optional]</span>
8484                    <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
8485                  </li>
8486                  <li>
8487                    <span class="entry_type_enum_name">SPORTS</span>
8488                    <span class="entry_type_enum_optional">[optional]</span>
8489                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
8490<p>Similar to ACTION.<wbr/></p></span>
8491                  </li>
8492                  <li>
8493                    <span class="entry_type_enum_name">PARTY</span>
8494                    <span class="entry_type_enum_optional">[optional]</span>
8495                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
8496people.<wbr/></p></span>
8497                  </li>
8498                  <li>
8499                    <span class="entry_type_enum_name">CANDLELIGHT</span>
8500                    <span class="entry_type_enum_optional">[optional]</span>
8501                    <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
8502is a flame.<wbr/></p></span>
8503                  </li>
8504                  <li>
8505                    <span class="entry_type_enum_name">BARCODE</span>
8506                    <span class="entry_type_enum_optional">[optional]</span>
8507                    <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
8508for use by camera applications that wish to read the
8509barcode value.<wbr/></p></span>
8510                  </li>
8511                  <li>
8512                    <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
8513                    <span class="entry_type_enum_deprecated">[deprecated]</span>
8514                    <span class="entry_type_enum_optional">[optional]</span>
8515                    <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>
8516and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
8517for high speed video recording.<wbr/></p>
8518<p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
8519<p>The supported high speed video sizes and fps ranges are specified in
8520<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
8521output frame rates,<wbr/> the application is only allowed to select video size
8522and fps range combinations listed in this static metadata.<wbr/> The fps range
8523can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
8524<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
8525ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
8526controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
8527and post-processing parameters is possible.<wbr/> All other controls operate the
8528same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
8529android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
8530<ul>
8531<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
8532<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
8533<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
8534<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
8535<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
8536<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
8537<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
8538<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
8539<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
8540<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
8541</ul>
8542<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
8543<ul>
8544<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>
8545<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
8546<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
8547<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
8548</ul>
8549<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
8550be lower than what camera can output,<wbr/> depending on the destination Surfaces for
8551the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
8552the application need check if the video encoder is capable of supporting the
8553high frame rate for a given video size,<wbr/> or it will end up with lower recording
8554frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
8555rate will be bounded by the screen refresh rate.<wbr/></p>
8556<p>The camera device will only support up to 2 output high speed streams
8557(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
8558in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
8559<ul>
8560<li>The application created no more than maxNumHighSpeedStreams processed non-stalling
8561format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
8562min(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>
8563<li>The stream sizes are selected from the sizes reported by
8564<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
8565<li>No processed non-stalling or raw streams are configured.<wbr/></li>
8566</ul>
8567<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
8568<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/>
8569the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
8570and the returned capture result metadata will give the fps range choosen
8571by the camera device.<wbr/></p>
8572<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
8573reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
8574the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
8575                  </li>
8576                  <li>
8577                    <span class="entry_type_enum_name">HDR</span>
8578                    <span class="entry_type_enum_optional">[optional]</span>
8579                    <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
8580<p>In this scene mode,<wbr/> the camera device captures images
8581that keep a larger range of scene illumination levels
8582visible in the final image.<wbr/> For example,<wbr/> when taking a
8583picture of a object in front of a bright window,<wbr/> both
8584the object and the scene through the window may be
8585visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
8586one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
8587HDR mode generally takes much longer to capture a single
8588image,<wbr/> has no user control,<wbr/> and may have other artifacts
8589depending on the HDR method used.<wbr/></p>
8590<p>Therefore,<wbr/> HDR captures operate at a much slower rate
8591than regular captures.<wbr/></p>
8592<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
8593is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
8594STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
8595using a high dynamic range capture technique.<wbr/>  On LEGACY
8596devices,<wbr/> captures that target a JPEG-format output will
8597be captured with HDR,<wbr/> and the capture intent is not
8598relevant.<wbr/></p>
8599<p>The HDR capture may involve the device capturing a burst
8600of images internally and combining them into one,<wbr/> or it
8601may involve the device using specialized high dynamic
8602range capture hardware.<wbr/> In all cases,<wbr/> a single image is
8603produced in response to a capture request submitted
8604while in HDR mode.<wbr/></p>
8605<p>Since substantial post-processing is generally needed to
8606produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
8607outputs are supported for LIMITED/<wbr/>FULL device HDR
8608captures,<wbr/> and only JPEG outputs are supported for LEGACY
8609HDR captures.<wbr/> Using a RAW output for HDR capture is not
8610supported.<wbr/></p>
8611<p>Some devices may also support always-on HDR,<wbr/> which
8612applies HDR processing at full frame rate.<wbr/>  For these
8613devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
8614produce an HDR output with no frame rate impact compared
8615to normal operation,<wbr/> though the quality may be lower
8616than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
8617<p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
8618or capture intents,<wbr/> the images captured will be as if
8619the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
8620                  </li>
8621                  <li>
8622                    <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span>
8623                    <span class="entry_type_enum_optional">[optional]</span>
8624                    <span class="entry_type_enum_hidden">[hidden]</span>
8625                    <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
8626device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
8627under low light conditions.<wbr/></p>
8628<p>The camera device may be tuned to expose the images in a reduced
8629sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
8630if 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/>
8631the camera device auto-exposure routine tuning process may limit the actual
8632exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
8633exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
8634low light may be under-exposed when the sensor max exposure time (bounded by the
8635<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
8636ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
8637camera device auto-exposure routine to increase the sensitivity up to the max
8638sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
8639dark and the max exposure time is reached.<wbr/> The captured images may be noisier
8640compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
8641recommended that the application only use this scene mode when it is capable of
8642reducing the noise level of the captured images.<wbr/></p>
8643<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8644<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>
8645remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
8646                  </li>
8647                  <li>
8648                    <span class="entry_type_enum_name">DEVICE_CUSTOM_START</span>
8649                    <span class="entry_type_enum_optional">[optional]</span>
8650                    <span class="entry_type_enum_hidden">[hidden]</span>
8651                    <span class="entry_type_enum_value">100</span>
8652                    <span class="entry_type_enum_notes"><p>Scene mode values within the range of
8653<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
8654customized scene modes.<wbr/></p></span>
8655                  </li>
8656                  <li>
8657                    <span class="entry_type_enum_name">DEVICE_CUSTOM_END</span>
8658                    <span class="entry_type_enum_optional">[optional]</span>
8659                    <span class="entry_type_enum_hidden">[hidden]</span>
8660                    <span class="entry_type_enum_value">127</span>
8661                    <span class="entry_type_enum_notes"><p>Scene mode values within the range of
8662<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
8663customized scene modes.<wbr/></p></span>
8664                  </li>
8665                </ul>
8666
8667            </td> <!-- entry_type -->
8668
8669            <td class="entry_description">
8670              <p>Control for which scene mode is currently active.<wbr/></p>
8671            </td>
8672
8673            <td class="entry_units">
8674            </td>
8675
8676            <td class="entry_range">
8677              <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
8678            </td>
8679
8680            <td class="entry_tags">
8681              <ul class="entry_tags">
8682                  <li><a href="#tag_BC">BC</a></li>
8683              </ul>
8684            </td>
8685
8686          </tr>
8687          <tr class="entries_header">
8688            <th class="th_details" colspan="5">Details</th>
8689          </tr>
8690          <tr class="entry_cont">
8691            <td class="entry_details" colspan="5">
8692              <p>Scene modes are custom camera modes optimized for a certain set of conditions and
8693capture settings.<wbr/></p>
8694<p>This is the mode that that is active when
8695<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
8696disable <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>
8697while in use.<wbr/></p>
8698<p>The interpretation and implementation of these scene modes is left
8699to the implementor of the camera device.<wbr/> Their behavior will not be
8700consistent across all devices,<wbr/> and any given device may only implement
8701a subset of these modes.<wbr/></p>
8702            </td>
8703          </tr>
8704
8705          <tr class="entries_header">
8706            <th class="th_details" colspan="5">HAL Implementation Details</th>
8707          </tr>
8708          <tr class="entry_cont">
8709            <td class="entry_details" colspan="5">
8710              <p>HAL implementations that include scene modes are expected to provide
8711the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8712<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
8713<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
8714<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/>
8715the HAL must list supported video size and fps range in
8716<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/>
87171280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming
8718mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture
8719requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/>
8720This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
8721<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
8722capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
8723            </td>
8724          </tr>
8725
8726          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8727           <!-- end of entry -->
8728        
8729                
8730          <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
8731            <td class="entry_name
8732             " rowspan="3">
8733              android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
8734            </td>
8735            <td class="entry_type">
8736                <span class="entry_type_name entry_type_name_enum">byte</span>
8737
8738              <span class="entry_type_visibility"> [public]</span>
8739
8740
8741              <span class="entry_type_hwlevel">[legacy] </span>
8742
8743
8744
8745                <ul class="entry_type_enum">
8746                  <li>
8747                    <span class="entry_type_enum_name">OFF</span>
8748                    <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
8749                  </li>
8750                  <li>
8751                    <span class="entry_type_enum_name">ON</span>
8752                    <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
8753                  </li>
8754                </ul>
8755
8756            </td> <!-- entry_type -->
8757
8758            <td class="entry_description">
8759              <p>Whether video stabilization is
8760active.<wbr/></p>
8761            </td>
8762
8763            <td class="entry_units">
8764            </td>
8765
8766            <td class="entry_range">
8767            </td>
8768
8769            <td class="entry_tags">
8770              <ul class="entry_tags">
8771                  <li><a href="#tag_BC">BC</a></li>
8772              </ul>
8773            </td>
8774
8775          </tr>
8776          <tr class="entries_header">
8777            <th class="th_details" colspan="5">Details</th>
8778          </tr>
8779          <tr class="entry_cont">
8780            <td class="entry_details" colspan="5">
8781              <p>Video stabilization automatically warps images from
8782the camera in order to stabilize motion between consecutive frames.<wbr/></p>
8783<p>If enabled,<wbr/> video stabilization can modify the
8784<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
8785<p>Switching between different video stabilization modes may take several
8786frames to initialize,<wbr/> the camera device will report the current mode
8787in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
8788the video stabilization modes in the first several capture results may
8789still be "OFF",<wbr/> and it will become "ON" when the initialization is
8790done.<wbr/></p>
8791<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
8792stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
8793that an output targeting a MediaRecorder or MediaCodec will be stabilized if
8794the recording resolution is less than or equal to 1920 x 1080 (width less than
8795or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
8796frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
8797<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
8798OFF if the recording output is not stabilized,<wbr/> or if there are no output
8799Surface types that can be stabilized.<wbr/></p>
8800<p>If a camera device supports both this mode and OIS
8801(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
8802produce undesirable interaction,<wbr/> so it is recommended not to enable
8803both at the same time.<wbr/></p>
8804            </td>
8805          </tr>
8806
8807
8808          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8809           <!-- end of entry -->
8810        
8811                
8812          <tr class="entry" id="dynamic_android.control.postRawSensitivityBoost">
8813            <td class="entry_name
8814             " rowspan="3">
8815              android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
8816            </td>
8817            <td class="entry_type">
8818                <span class="entry_type_name">int32</span>
8819
8820              <span class="entry_type_visibility"> [public]</span>
8821
8822
8823
8824
8825
8826
8827            </td> <!-- entry_type -->
8828
8829            <td class="entry_description">
8830              <p>The amount of additional sensitivity boost applied to output images
8831after RAW sensor data is captured.<wbr/></p>
8832            </td>
8833
8834            <td class="entry_units">
8835              ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
8836            </td>
8837
8838            <td class="entry_range">
8839              <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
8840            </td>
8841
8842            <td class="entry_tags">
8843            </td>
8844
8845          </tr>
8846          <tr class="entries_header">
8847            <th class="th_details" colspan="5">Details</th>
8848          </tr>
8849          <tr class="entry_cont">
8850            <td class="entry_details" colspan="5">
8851              <p>Some camera devices support additional digital sensitivity boosting in the
8852camera processing pipeline after sensor RAW image is captured.<wbr/>
8853Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
8854have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
8855<p>This key will be <code>null</code> for devices that do not support any RAW format
8856outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
8857present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
8858list <code>100</code> in this key.<wbr/></p>
8859<p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
8860boost to the nearest supported value.<wbr/>
8861The final boost value used will be available in the output capture result.<wbr/></p>
8862<p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
8863of such device will have the total sensitivity of
8864<code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> * <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> /<wbr/> 100</code>
8865The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
8866<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
8867OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
8868            </td>
8869          </tr>
8870
8871
8872          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8873           <!-- end of entry -->
8874        
8875        
8876
8877      <!-- end of kind -->
8878      </tbody>
8879
8880  <!-- end of section -->
8881  <tr><td colspan="6" id="section_demosaic" class="section">demosaic</td></tr>
8882
8883
8884      <tr><td colspan="6" class="kind">controls</td></tr>
8885
8886      <thead class="entries_header">
8887        <tr>
8888          <th class="th_name">Property Name</th>
8889          <th class="th_type">Type</th>
8890          <th class="th_description">Description</th>
8891          <th class="th_units">Units</th>
8892          <th class="th_range">Range</th>
8893          <th class="th_tags">Tags</th>
8894        </tr>
8895      </thead>
8896
8897      <tbody>
8898
8899        
8900
8901        
8902
8903        
8904
8905        
8906
8907                
8908          <tr class="entry" id="controls_android.demosaic.mode">
8909            <td class="entry_name
8910             " rowspan="1">
8911              android.<wbr/>demosaic.<wbr/>mode
8912            </td>
8913            <td class="entry_type">
8914                <span class="entry_type_name entry_type_name_enum">byte</span>
8915
8916              <span class="entry_type_visibility"> [system]</span>
8917
8918
8919
8920
8921
8922                <ul class="entry_type_enum">
8923                  <li>
8924                    <span class="entry_type_enum_name">FAST</span>
8925                    <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
8926Bayer RAW output.<wbr/></p></span>
8927                  </li>
8928                  <li>
8929                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
8930                    <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down
8931relative to raw output.<wbr/></p></span>
8932                  </li>
8933                </ul>
8934
8935            </td> <!-- entry_type -->
8936
8937            <td class="entry_description">
8938              <p>Controls the quality of the demosaicing
8939processing.<wbr/></p>
8940            </td>
8941
8942            <td class="entry_units">
8943            </td>
8944
8945            <td class="entry_range">
8946            </td>
8947
8948            <td class="entry_tags">
8949              <ul class="entry_tags">
8950                  <li><a href="#tag_FUTURE">FUTURE</a></li>
8951              </ul>
8952            </td>
8953
8954          </tr>
8955
8956
8957          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8958           <!-- end of entry -->
8959        
8960        
8961
8962      <!-- end of kind -->
8963      </tbody>
8964
8965  <!-- end of section -->
8966  <tr><td colspan="6" id="section_edge" class="section">edge</td></tr>
8967
8968
8969      <tr><td colspan="6" class="kind">controls</td></tr>
8970
8971      <thead class="entries_header">
8972        <tr>
8973          <th class="th_name">Property Name</th>
8974          <th class="th_type">Type</th>
8975          <th class="th_description">Description</th>
8976          <th class="th_units">Units</th>
8977          <th class="th_range">Range</th>
8978          <th class="th_tags">Tags</th>
8979        </tr>
8980      </thead>
8981
8982      <tbody>
8983
8984        
8985
8986        
8987
8988        
8989
8990        
8991
8992                
8993          <tr class="entry" id="controls_android.edge.mode">
8994            <td class="entry_name
8995             " rowspan="5">
8996              android.<wbr/>edge.<wbr/>mode
8997            </td>
8998            <td class="entry_type">
8999                <span class="entry_type_name entry_type_name_enum">byte</span>
9000
9001              <span class="entry_type_visibility"> [public]</span>
9002
9003
9004              <span class="entry_type_hwlevel">[full] </span>
9005
9006
9007
9008                <ul class="entry_type_enum">
9009                  <li>
9010                    <span class="entry_type_enum_name">OFF</span>
9011                    <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9012                  </li>
9013                  <li>
9014                    <span class="entry_type_enum_name">FAST</span>
9015                    <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9016relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9017slow down frame rate relative to sensor.<wbr/></p></span>
9018                  </li>
9019                  <li>
9020                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
9021                    <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>
9022                  </li>
9023                  <li>
9024                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
9025                    <span class="entry_type_enum_optional">[optional]</span>
9026                    <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/>
9027based 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
9028edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement
9029applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that
9030frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it
9031is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9032<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9033with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9034high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9035produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
9036high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9037preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9038buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9039reasonable preview quality.<wbr/></p>
9040<p>This mode is guaranteed to be supported by devices that support either the
9041YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9042(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9043be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9044                  </li>
9045                </ul>
9046
9047            </td> <!-- entry_type -->
9048
9049            <td class="entry_description">
9050              <p>Operation mode for edge
9051enhancement.<wbr/></p>
9052            </td>
9053
9054            <td class="entry_units">
9055            </td>
9056
9057            <td class="entry_range">
9058              <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9059            </td>
9060
9061            <td class="entry_tags">
9062              <ul class="entry_tags">
9063                  <li><a href="#tag_V1">V1</a></li>
9064                  <li><a href="#tag_REPROC">REPROC</a></li>
9065              </ul>
9066            </td>
9067
9068          </tr>
9069          <tr class="entries_header">
9070            <th class="th_details" colspan="5">Details</th>
9071          </tr>
9072          <tr class="entry_cont">
9073            <td class="entry_details" colspan="5">
9074              <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9075no enhancement will be applied by the camera device.<wbr/></p>
9076<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9077will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9078camera device will use the highest-quality enhancement algorithms,<wbr/>
9079even if it slows down capture rate.<wbr/> FAST means the camera device will
9080not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9081edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9082amount of enhancement applied.<wbr/></p>
9083<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9084buffer of high-resolution images during preview and reprocess image(s) from that buffer
9085into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9086edge enhancement to low-resolution streams (below maximum recording resolution) to
9087maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9088since those will be reprocessed later if necessary.<wbr/></p>
9089<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9090device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9091The camera device may adjust its internal edge enhancement parameters for best
9092image 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>
9093            </td>
9094          </tr>
9095
9096          <tr class="entries_header">
9097            <th class="th_details" colspan="5">HAL Implementation Details</th>
9098          </tr>
9099          <tr class="entry_cont">
9100            <td class="entry_details" colspan="5">
9101              <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
9102adjust the internal edge enhancement reduction parameters appropriately to get the best
9103quality images.<wbr/></p>
9104            </td>
9105          </tr>
9106
9107          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9108           <!-- end of entry -->
9109        
9110                
9111          <tr class="entry" id="controls_android.edge.strength">
9112            <td class="entry_name
9113             " rowspan="1">
9114              android.<wbr/>edge.<wbr/>strength
9115            </td>
9116            <td class="entry_type">
9117                <span class="entry_type_name">byte</span>
9118
9119              <span class="entry_type_visibility"> [system]</span>
9120
9121
9122
9123
9124
9125
9126            </td> <!-- entry_type -->
9127
9128            <td class="entry_description">
9129              <p>Control the amount of edge enhancement
9130applied to the images</p>
9131            </td>
9132
9133            <td class="entry_units">
9134              1-10; 10 is maximum sharpening
9135            </td>
9136
9137            <td class="entry_range">
9138            </td>
9139
9140            <td class="entry_tags">
9141              <ul class="entry_tags">
9142                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9143              </ul>
9144            </td>
9145
9146          </tr>
9147
9148
9149          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9150           <!-- end of entry -->
9151        
9152        
9153
9154      <!-- end of kind -->
9155      </tbody>
9156      <tr><td colspan="6" class="kind">static</td></tr>
9157
9158      <thead class="entries_header">
9159        <tr>
9160          <th class="th_name">Property Name</th>
9161          <th class="th_type">Type</th>
9162          <th class="th_description">Description</th>
9163          <th class="th_units">Units</th>
9164          <th class="th_range">Range</th>
9165          <th class="th_tags">Tags</th>
9166        </tr>
9167      </thead>
9168
9169      <tbody>
9170
9171        
9172
9173        
9174
9175        
9176
9177        
9178
9179                
9180          <tr class="entry" id="static_android.edge.availableEdgeModes">
9181            <td class="entry_name
9182             " rowspan="5">
9183              android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
9184            </td>
9185            <td class="entry_type">
9186                <span class="entry_type_name">byte</span>
9187                <span class="entry_type_container">x</span>
9188
9189                <span class="entry_type_array">
9190                  n
9191                </span>
9192              <span class="entry_type_visibility"> [public as enumList]</span>
9193
9194
9195              <span class="entry_type_hwlevel">[full] </span>
9196
9197
9198                <div class="entry_type_notes">list of enums</div>
9199
9200
9201            </td> <!-- entry_type -->
9202
9203            <td class="entry_description">
9204              <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
9205device.<wbr/></p>
9206            </td>
9207
9208            <td class="entry_units">
9209            </td>
9210
9211            <td class="entry_range">
9212              <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
9213            </td>
9214
9215            <td class="entry_tags">
9216              <ul class="entry_tags">
9217                  <li><a href="#tag_V1">V1</a></li>
9218                  <li><a href="#tag_REPROC">REPROC</a></li>
9219              </ul>
9220            </td>
9221
9222          </tr>
9223          <tr class="entries_header">
9224            <th class="th_details" colspan="5">Details</th>
9225          </tr>
9226          <tr class="entry_cont">
9227            <td class="entry_details" colspan="5">
9228              <p>Full-capability camera devices must always support OFF; camera devices that support
9229YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will
9230list FAST.<wbr/></p>
9231            </td>
9232          </tr>
9233
9234          <tr class="entries_header">
9235            <th class="th_details" colspan="5">HAL Implementation Details</th>
9236          </tr>
9237          <tr class="entry_cont">
9238            <td class="entry_details" colspan="5">
9239              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available
9240on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
9241That is,<wbr/> if the highest quality implementation on the camera device does not slow down
9242capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
9243            </td>
9244          </tr>
9245
9246          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9247           <!-- end of entry -->
9248        
9249        
9250
9251      <!-- end of kind -->
9252      </tbody>
9253      <tr><td colspan="6" class="kind">dynamic</td></tr>
9254
9255      <thead class="entries_header">
9256        <tr>
9257          <th class="th_name">Property Name</th>
9258          <th class="th_type">Type</th>
9259          <th class="th_description">Description</th>
9260          <th class="th_units">Units</th>
9261          <th class="th_range">Range</th>
9262          <th class="th_tags">Tags</th>
9263        </tr>
9264      </thead>
9265
9266      <tbody>
9267
9268        
9269
9270        
9271
9272        
9273
9274        
9275
9276                
9277          <tr class="entry" id="dynamic_android.edge.mode">
9278            <td class="entry_name
9279             " rowspan="5">
9280              android.<wbr/>edge.<wbr/>mode
9281            </td>
9282            <td class="entry_type">
9283                <span class="entry_type_name entry_type_name_enum">byte</span>
9284
9285              <span class="entry_type_visibility"> [public]</span>
9286
9287
9288              <span class="entry_type_hwlevel">[full] </span>
9289
9290
9291
9292                <ul class="entry_type_enum">
9293                  <li>
9294                    <span class="entry_type_enum_name">OFF</span>
9295                    <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9296                  </li>
9297                  <li>
9298                    <span class="entry_type_enum_name">FAST</span>
9299                    <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9300relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9301slow down frame rate relative to sensor.<wbr/></p></span>
9302                  </li>
9303                  <li>
9304                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
9305                    <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>
9306                  </li>
9307                  <li>
9308                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
9309                    <span class="entry_type_enum_optional">[optional]</span>
9310                    <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/>
9311based 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
9312edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement
9313applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that
9314frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it
9315is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9316<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9317with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9318high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9319produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
9320high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9321preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9322buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9323reasonable preview quality.<wbr/></p>
9324<p>This mode is guaranteed to be supported by devices that support either the
9325YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9326(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9327be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9328                  </li>
9329                </ul>
9330
9331            </td> <!-- entry_type -->
9332
9333            <td class="entry_description">
9334              <p>Operation mode for edge
9335enhancement.<wbr/></p>
9336            </td>
9337
9338            <td class="entry_units">
9339            </td>
9340
9341            <td class="entry_range">
9342              <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9343            </td>
9344
9345            <td class="entry_tags">
9346              <ul class="entry_tags">
9347                  <li><a href="#tag_V1">V1</a></li>
9348                  <li><a href="#tag_REPROC">REPROC</a></li>
9349              </ul>
9350            </td>
9351
9352          </tr>
9353          <tr class="entries_header">
9354            <th class="th_details" colspan="5">Details</th>
9355          </tr>
9356          <tr class="entry_cont">
9357            <td class="entry_details" colspan="5">
9358              <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9359no enhancement will be applied by the camera device.<wbr/></p>
9360<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9361will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9362camera device will use the highest-quality enhancement algorithms,<wbr/>
9363even if it slows down capture rate.<wbr/> FAST means the camera device will
9364not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9365edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9366amount of enhancement applied.<wbr/></p>
9367<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9368buffer of high-resolution images during preview and reprocess image(s) from that buffer
9369into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9370edge enhancement to low-resolution streams (below maximum recording resolution) to
9371maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9372since those will be reprocessed later if necessary.<wbr/></p>
9373<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9374device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9375The camera device may adjust its internal edge enhancement parameters for best
9376image 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>
9377            </td>
9378          </tr>
9379
9380          <tr class="entries_header">
9381            <th class="th_details" colspan="5">HAL Implementation Details</th>
9382          </tr>
9383          <tr class="entry_cont">
9384            <td class="entry_details" colspan="5">
9385              <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
9386adjust the internal edge enhancement reduction parameters appropriately to get the best
9387quality images.<wbr/></p>
9388            </td>
9389          </tr>
9390
9391          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9392           <!-- end of entry -->
9393        
9394        
9395
9396      <!-- end of kind -->
9397      </tbody>
9398
9399  <!-- end of section -->
9400  <tr><td colspan="6" id="section_flash" class="section">flash</td></tr>
9401
9402
9403      <tr><td colspan="6" class="kind">controls</td></tr>
9404
9405      <thead class="entries_header">
9406        <tr>
9407          <th class="th_name">Property Name</th>
9408          <th class="th_type">Type</th>
9409          <th class="th_description">Description</th>
9410          <th class="th_units">Units</th>
9411          <th class="th_range">Range</th>
9412          <th class="th_tags">Tags</th>
9413        </tr>
9414      </thead>
9415
9416      <tbody>
9417
9418        
9419
9420        
9421
9422        
9423
9424        
9425
9426                
9427          <tr class="entry" id="controls_android.flash.firingPower">
9428            <td class="entry_name
9429             " rowspan="3">
9430              android.<wbr/>flash.<wbr/>firing<wbr/>Power
9431            </td>
9432            <td class="entry_type">
9433                <span class="entry_type_name">byte</span>
9434
9435              <span class="entry_type_visibility"> [system]</span>
9436
9437
9438
9439
9440
9441
9442            </td> <!-- entry_type -->
9443
9444            <td class="entry_description">
9445              <p>Power for flash firing/<wbr/>torch</p>
9446            </td>
9447
9448            <td class="entry_units">
9449              10 is max power; 0 is no flash.<wbr/> Linear
9450            </td>
9451
9452            <td class="entry_range">
9453              <p>0 - 10</p>
9454            </td>
9455
9456            <td class="entry_tags">
9457              <ul class="entry_tags">
9458                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9459              </ul>
9460            </td>
9461
9462          </tr>
9463          <tr class="entries_header">
9464            <th class="th_details" colspan="5">Details</th>
9465          </tr>
9466          <tr class="entry_cont">
9467            <td class="entry_details" colspan="5">
9468              <p>Power for snapshot may use a different scale than
9469for torch mode.<wbr/> Only one entry for torch mode will be
9470used</p>
9471            </td>
9472          </tr>
9473
9474
9475          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9476           <!-- end of entry -->
9477        
9478                
9479          <tr class="entry" id="controls_android.flash.firingTime">
9480            <td class="entry_name
9481             " rowspan="3">
9482              android.<wbr/>flash.<wbr/>firing<wbr/>Time
9483            </td>
9484            <td class="entry_type">
9485                <span class="entry_type_name">int64</span>
9486
9487              <span class="entry_type_visibility"> [system]</span>
9488
9489
9490
9491
9492
9493
9494            </td> <!-- entry_type -->
9495
9496            <td class="entry_description">
9497              <p>Firing time of flash relative to start of
9498exposure</p>
9499            </td>
9500
9501            <td class="entry_units">
9502              nanoseconds
9503            </td>
9504
9505            <td class="entry_range">
9506              <p>0-(exposure time-flash duration)</p>
9507            </td>
9508
9509            <td class="entry_tags">
9510              <ul class="entry_tags">
9511                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9512              </ul>
9513            </td>
9514
9515          </tr>
9516          <tr class="entries_header">
9517            <th class="th_details" colspan="5">Details</th>
9518          </tr>
9519          <tr class="entry_cont">
9520            <td class="entry_details" colspan="5">
9521              <p>Clamped to (0,<wbr/> exposure time - flash
9522duration).<wbr/></p>
9523            </td>
9524          </tr>
9525
9526
9527          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9528           <!-- end of entry -->
9529        
9530                
9531          <tr class="entry" id="controls_android.flash.mode">
9532            <td class="entry_name
9533             " rowspan="3">
9534              android.<wbr/>flash.<wbr/>mode
9535            </td>
9536            <td class="entry_type">
9537                <span class="entry_type_name entry_type_name_enum">byte</span>
9538
9539              <span class="entry_type_visibility"> [public]</span>
9540
9541
9542              <span class="entry_type_hwlevel">[legacy] </span>
9543
9544
9545
9546                <ul class="entry_type_enum">
9547                  <li>
9548                    <span class="entry_type_enum_name">OFF</span>
9549                    <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
9550                  </li>
9551                  <li>
9552                    <span class="entry_type_enum_name">SINGLE</span>
9553                    <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
9554for this capture.<wbr/></p></span>
9555                  </li>
9556                  <li>
9557                    <span class="entry_type_enum_name">TORCH</span>
9558                    <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
9559                  </li>
9560                </ul>
9561
9562            </td> <!-- entry_type -->
9563
9564            <td class="entry_description">
9565              <p>The desired mode for for the camera device's flash control.<wbr/></p>
9566            </td>
9567
9568            <td class="entry_units">
9569            </td>
9570
9571            <td class="entry_range">
9572            </td>
9573
9574            <td class="entry_tags">
9575              <ul class="entry_tags">
9576                  <li><a href="#tag_BC">BC</a></li>
9577              </ul>
9578            </td>
9579
9580          </tr>
9581          <tr class="entries_header">
9582            <th class="th_details" colspan="5">Details</th>
9583          </tr>
9584          <tr class="entry_cont">
9585            <td class="entry_details" colspan="5">
9586              <p>This control is only effective when flash unit is available
9587(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
9588<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/>
9589Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
9590ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
9591<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
9592<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
9593device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
9594control should be used along with auto-exposure (AE) precapture metering sequence
9595(<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>
9596<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
9597for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
9598<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>
9599            </td>
9600          </tr>
9601
9602
9603          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9604           <!-- end of entry -->
9605        
9606        
9607
9608      <!-- end of kind -->
9609      </tbody>
9610      <tr><td colspan="6" class="kind">static</td></tr>
9611
9612      <thead class="entries_header">
9613        <tr>
9614          <th class="th_name">Property Name</th>
9615          <th class="th_type">Type</th>
9616          <th class="th_description">Description</th>
9617          <th class="th_units">Units</th>
9618          <th class="th_range">Range</th>
9619          <th class="th_tags">Tags</th>
9620        </tr>
9621      </thead>
9622
9623      <tbody>
9624
9625        
9626
9627        
9628
9629        
9630
9631        
9632                
9633            
9634
9635                
9636          <tr class="entry" id="static_android.flash.info.available">
9637            <td class="entry_name
9638             " rowspan="3">
9639              android.<wbr/>flash.<wbr/>info.<wbr/>available
9640            </td>
9641            <td class="entry_type">
9642                <span class="entry_type_name entry_type_name_enum">byte</span>
9643
9644              <span class="entry_type_visibility"> [public as boolean]</span>
9645
9646
9647              <span class="entry_type_hwlevel">[legacy] </span>
9648
9649
9650
9651                <ul class="entry_type_enum">
9652                  <li>
9653                    <span class="entry_type_enum_name">FALSE</span>
9654                  </li>
9655                  <li>
9656                    <span class="entry_type_enum_name">TRUE</span>
9657                  </li>
9658                </ul>
9659
9660            </td> <!-- entry_type -->
9661
9662            <td class="entry_description">
9663              <p>Whether this camera device has a
9664flash unit.<wbr/></p>
9665            </td>
9666
9667            <td class="entry_units">
9668            </td>
9669
9670            <td class="entry_range">
9671            </td>
9672
9673            <td class="entry_tags">
9674              <ul class="entry_tags">
9675                  <li><a href="#tag_BC">BC</a></li>
9676              </ul>
9677            </td>
9678
9679          </tr>
9680          <tr class="entries_header">
9681            <th class="th_details" colspan="5">Details</th>
9682          </tr>
9683          <tr class="entry_cont">
9684            <td class="entry_details" colspan="5">
9685              <p>Will be <code>false</code> if no flash is available.<wbr/></p>
9686<p>If there is no flash unit,<wbr/> none of the flash controls do
9687anything.<wbr/></p>
9688            </td>
9689          </tr>
9690
9691
9692          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9693           <!-- end of entry -->
9694        
9695                
9696          <tr class="entry" id="static_android.flash.info.chargeDuration">
9697            <td class="entry_name
9698             " rowspan="3">
9699              android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
9700            </td>
9701            <td class="entry_type">
9702                <span class="entry_type_name">int64</span>
9703
9704              <span class="entry_type_visibility"> [system]</span>
9705
9706
9707
9708
9709
9710
9711            </td> <!-- entry_type -->
9712
9713            <td class="entry_description">
9714              <p>Time taken before flash can fire
9715again</p>
9716            </td>
9717
9718            <td class="entry_units">
9719              nanoseconds
9720            </td>
9721
9722            <td class="entry_range">
9723              <p>0-1e9</p>
9724            </td>
9725
9726            <td class="entry_tags">
9727              <ul class="entry_tags">
9728                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9729              </ul>
9730            </td>
9731
9732          </tr>
9733          <tr class="entries_header">
9734            <th class="th_details" colspan="5">Details</th>
9735          </tr>
9736          <tr class="entry_cont">
9737            <td class="entry_details" colspan="5">
9738              <p>1 second too long/<wbr/>too short for recharge? Should
9739this be power-dependent?</p>
9740            </td>
9741          </tr>
9742
9743
9744          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9745           <!-- end of entry -->
9746        
9747        
9748        
9749
9750                
9751          <tr class="entry" id="static_android.flash.colorTemperature">
9752            <td class="entry_name
9753             " rowspan="1">
9754              android.<wbr/>flash.<wbr/>color<wbr/>Temperature
9755            </td>
9756            <td class="entry_type">
9757                <span class="entry_type_name">byte</span>
9758
9759              <span class="entry_type_visibility"> [system]</span>
9760
9761
9762
9763
9764
9765
9766            </td> <!-- entry_type -->
9767
9768            <td class="entry_description">
9769              <p>The x,<wbr/>y whitepoint of the
9770flash</p>
9771            </td>
9772
9773            <td class="entry_units">
9774              pair of floats
9775            </td>
9776
9777            <td class="entry_range">
9778              <p>0-1 for both</p>
9779            </td>
9780
9781            <td class="entry_tags">
9782              <ul class="entry_tags">
9783                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9784              </ul>
9785            </td>
9786
9787          </tr>
9788
9789
9790          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9791           <!-- end of entry -->
9792        
9793                
9794          <tr class="entry" id="static_android.flash.maxEnergy">
9795            <td class="entry_name
9796             " rowspan="1">
9797              android.<wbr/>flash.<wbr/>max<wbr/>Energy
9798            </td>
9799            <td class="entry_type">
9800                <span class="entry_type_name">byte</span>
9801
9802              <span class="entry_type_visibility"> [system]</span>
9803
9804
9805
9806
9807
9808
9809            </td> <!-- entry_type -->
9810
9811            <td class="entry_description">
9812              <p>Max energy output of the flash for a full
9813power single flash</p>
9814            </td>
9815
9816            <td class="entry_units">
9817              lumen-seconds
9818            </td>
9819
9820            <td class="entry_range">
9821              <p>&gt;= 0</p>
9822            </td>
9823
9824            <td class="entry_tags">
9825              <ul class="entry_tags">
9826                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9827              </ul>
9828            </td>
9829
9830          </tr>
9831
9832
9833          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9834           <!-- end of entry -->
9835        
9836        
9837
9838      <!-- end of kind -->
9839      </tbody>
9840      <tr><td colspan="6" class="kind">dynamic</td></tr>
9841
9842      <thead class="entries_header">
9843        <tr>
9844          <th class="th_name">Property Name</th>
9845          <th class="th_type">Type</th>
9846          <th class="th_description">Description</th>
9847          <th class="th_units">Units</th>
9848          <th class="th_range">Range</th>
9849          <th class="th_tags">Tags</th>
9850        </tr>
9851      </thead>
9852
9853      <tbody>
9854
9855        
9856
9857        
9858
9859        
9860
9861        
9862
9863                
9864          <tr class="entry" id="dynamic_android.flash.firingPower">
9865            <td class="entry_name
9866             " rowspan="3">
9867              android.<wbr/>flash.<wbr/>firing<wbr/>Power
9868            </td>
9869            <td class="entry_type">
9870                <span class="entry_type_name">byte</span>
9871
9872              <span class="entry_type_visibility"> [system]</span>
9873
9874
9875
9876
9877
9878
9879            </td> <!-- entry_type -->
9880
9881            <td class="entry_description">
9882              <p>Power for flash firing/<wbr/>torch</p>
9883            </td>
9884
9885            <td class="entry_units">
9886              10 is max power; 0 is no flash.<wbr/> Linear
9887            </td>
9888
9889            <td class="entry_range">
9890              <p>0 - 10</p>
9891            </td>
9892
9893            <td class="entry_tags">
9894              <ul class="entry_tags">
9895                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9896              </ul>
9897            </td>
9898
9899          </tr>
9900          <tr class="entries_header">
9901            <th class="th_details" colspan="5">Details</th>
9902          </tr>
9903          <tr class="entry_cont">
9904            <td class="entry_details" colspan="5">
9905              <p>Power for snapshot may use a different scale than
9906for torch mode.<wbr/> Only one entry for torch mode will be
9907used</p>
9908            </td>
9909          </tr>
9910
9911
9912          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9913           <!-- end of entry -->
9914        
9915                
9916          <tr class="entry" id="dynamic_android.flash.firingTime">
9917            <td class="entry_name
9918             " rowspan="3">
9919              android.<wbr/>flash.<wbr/>firing<wbr/>Time
9920            </td>
9921            <td class="entry_type">
9922                <span class="entry_type_name">int64</span>
9923
9924              <span class="entry_type_visibility"> [system]</span>
9925
9926
9927
9928
9929
9930
9931            </td> <!-- entry_type -->
9932
9933            <td class="entry_description">
9934              <p>Firing time of flash relative to start of
9935exposure</p>
9936            </td>
9937
9938            <td class="entry_units">
9939              nanoseconds
9940            </td>
9941
9942            <td class="entry_range">
9943              <p>0-(exposure time-flash duration)</p>
9944            </td>
9945
9946            <td class="entry_tags">
9947              <ul class="entry_tags">
9948                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9949              </ul>
9950            </td>
9951
9952          </tr>
9953          <tr class="entries_header">
9954            <th class="th_details" colspan="5">Details</th>
9955          </tr>
9956          <tr class="entry_cont">
9957            <td class="entry_details" colspan="5">
9958              <p>Clamped to (0,<wbr/> exposure time - flash
9959duration).<wbr/></p>
9960            </td>
9961          </tr>
9962
9963
9964          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9965           <!-- end of entry -->
9966        
9967                
9968          <tr class="entry" id="dynamic_android.flash.mode">
9969            <td class="entry_name
9970             " rowspan="3">
9971              android.<wbr/>flash.<wbr/>mode
9972            </td>
9973            <td class="entry_type">
9974                <span class="entry_type_name entry_type_name_enum">byte</span>
9975
9976              <span class="entry_type_visibility"> [public]</span>
9977
9978
9979              <span class="entry_type_hwlevel">[legacy] </span>
9980
9981
9982
9983                <ul class="entry_type_enum">
9984                  <li>
9985                    <span class="entry_type_enum_name">OFF</span>
9986                    <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
9987                  </li>
9988                  <li>
9989                    <span class="entry_type_enum_name">SINGLE</span>
9990                    <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
9991for this capture.<wbr/></p></span>
9992                  </li>
9993                  <li>
9994                    <span class="entry_type_enum_name">TORCH</span>
9995                    <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
9996                  </li>
9997                </ul>
9998
9999            </td> <!-- entry_type -->
10000
10001            <td class="entry_description">
10002              <p>The desired mode for for the camera device's flash control.<wbr/></p>
10003            </td>
10004
10005            <td class="entry_units">
10006            </td>
10007
10008            <td class="entry_range">
10009            </td>
10010
10011            <td class="entry_tags">
10012              <ul class="entry_tags">
10013                  <li><a href="#tag_BC">BC</a></li>
10014              </ul>
10015            </td>
10016
10017          </tr>
10018          <tr class="entries_header">
10019            <th class="th_details" colspan="5">Details</th>
10020          </tr>
10021          <tr class="entry_cont">
10022            <td class="entry_details" colspan="5">
10023              <p>This control is only effective when flash unit is available
10024(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10025<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/>
10026Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10027ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10028<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10029<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10030device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10031control should be used along with auto-exposure (AE) precapture metering sequence
10032(<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>
10033<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10034for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10035<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>
10036            </td>
10037          </tr>
10038
10039
10040          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10041           <!-- end of entry -->
10042        
10043                
10044          <tr class="entry" id="dynamic_android.flash.state">
10045            <td class="entry_name
10046             " rowspan="3">
10047              android.<wbr/>flash.<wbr/>state
10048            </td>
10049            <td class="entry_type">
10050                <span class="entry_type_name entry_type_name_enum">byte</span>
10051
10052              <span class="entry_type_visibility"> [public]</span>
10053
10054
10055              <span class="entry_type_hwlevel">[limited] </span>
10056
10057
10058
10059                <ul class="entry_type_enum">
10060                  <li>
10061                    <span class="entry_type_enum_name">UNAVAILABLE</span>
10062                    <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
10063                  </li>
10064                  <li>
10065                    <span class="entry_type_enum_name">CHARGING</span>
10066                    <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
10067                  </li>
10068                  <li>
10069                    <span class="entry_type_enum_name">READY</span>
10070                    <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
10071                  </li>
10072                  <li>
10073                    <span class="entry_type_enum_name">FIRED</span>
10074                    <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
10075                  </li>
10076                  <li>
10077                    <span class="entry_type_enum_name">PARTIAL</span>
10078                    <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
10079<p>This is usually due to the next or previous frame having
10080the flash fire,<wbr/> and the flash spilling into this capture
10081due to hardware limitations.<wbr/></p></span>
10082                  </li>
10083                </ul>
10084
10085            </td> <!-- entry_type -->
10086
10087            <td class="entry_description">
10088              <p>Current state of the flash
10089unit.<wbr/></p>
10090            </td>
10091
10092            <td class="entry_units">
10093            </td>
10094
10095            <td class="entry_range">
10096            </td>
10097
10098            <td class="entry_tags">
10099            </td>
10100
10101          </tr>
10102          <tr class="entries_header">
10103            <th class="th_details" colspan="5">Details</th>
10104          </tr>
10105          <tr class="entry_cont">
10106            <td class="entry_details" colspan="5">
10107              <p>When the camera device doesn't have flash unit
10108(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/>
10109Other states indicate the current flash status.<wbr/></p>
10110<p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p>
10111<ul>
10112<li>Flash-less cameras always return UNAVAILABLE.<wbr/></li>
10113<li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH
10114   will always return FIRED.<wbr/></li>
10115<li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH
10116   will always return FIRED.<wbr/></li>
10117</ul>
10118<p>In all other conditions the state will not be available on
10119LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p>
10120            </td>
10121          </tr>
10122
10123
10124          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10125           <!-- end of entry -->
10126        
10127        
10128
10129      <!-- end of kind -->
10130      </tbody>
10131
10132  <!-- end of section -->
10133  <tr><td colspan="6" id="section_hotPixel" class="section">hotPixel</td></tr>
10134
10135
10136      <tr><td colspan="6" class="kind">controls</td></tr>
10137
10138      <thead class="entries_header">
10139        <tr>
10140          <th class="th_name">Property Name</th>
10141          <th class="th_type">Type</th>
10142          <th class="th_description">Description</th>
10143          <th class="th_units">Units</th>
10144          <th class="th_range">Range</th>
10145          <th class="th_tags">Tags</th>
10146        </tr>
10147      </thead>
10148
10149      <tbody>
10150
10151        
10152
10153        
10154
10155        
10156
10157        
10158
10159                
10160          <tr class="entry" id="controls_android.hotPixel.mode">
10161            <td class="entry_name
10162             " rowspan="3">
10163              android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
10164            </td>
10165            <td class="entry_type">
10166                <span class="entry_type_name entry_type_name_enum">byte</span>
10167
10168              <span class="entry_type_visibility"> [public]</span>
10169
10170
10171
10172
10173
10174                <ul class="entry_type_enum">
10175                  <li>
10176                    <span class="entry_type_enum_name">OFF</span>
10177                    <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
10178<p>The frame rate must not be reduced relative to sensor raw output
10179for this option.<wbr/></p>
10180<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>
10181                  </li>
10182                  <li>
10183                    <span class="entry_type_enum_name">FAST</span>
10184                    <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
10185rate relative to sensor raw output.<wbr/></p>
10186<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>
10187                  </li>
10188                  <li>
10189                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
10190                    <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
10191of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
10192<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>
10193                  </li>
10194                </ul>
10195
10196            </td> <!-- entry_type -->
10197
10198            <td class="entry_description">
10199              <p>Operational mode for hot pixel correction.<wbr/></p>
10200            </td>
10201
10202            <td class="entry_units">
10203            </td>
10204
10205            <td class="entry_range">
10206              <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
10207            </td>
10208
10209            <td class="entry_tags">
10210              <ul class="entry_tags">
10211                  <li><a href="#tag_V1">V1</a></li>
10212                  <li><a href="#tag_RAW">RAW</a></li>
10213              </ul>
10214            </td>
10215
10216          </tr>
10217          <tr class="entries_header">
10218            <th class="th_details" colspan="5">Details</th>
10219          </tr>
10220          <tr class="entry_cont">
10221            <td class="entry_details" colspan="5">
10222              <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
10223that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
10224are stuck at an arbitrary value or are oversensitive).<wbr/></p>
10225            </td>
10226          </tr>
10227
10228
10229          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10230           <!-- end of entry -->
10231        
10232        
10233
10234      <!-- end of kind -->
10235      </tbody>
10236      <tr><td colspan="6" class="kind">static</td></tr>
10237
10238      <thead class="entries_header">
10239        <tr>
10240          <th class="th_name">Property Name</th>
10241          <th class="th_type">Type</th>
10242          <th class="th_description">Description</th>
10243          <th class="th_units">Units</th>
10244          <th class="th_range">Range</th>
10245          <th class="th_tags">Tags</th>
10246        </tr>
10247      </thead>
10248
10249      <tbody>
10250
10251        
10252
10253        
10254
10255        
10256
10257        
10258
10259                
10260          <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
10261            <td class="entry_name
10262             " rowspan="5">
10263              android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
10264            </td>
10265            <td class="entry_type">
10266                <span class="entry_type_name">byte</span>
10267                <span class="entry_type_container">x</span>
10268
10269                <span class="entry_type_array">
10270                  n
10271                </span>
10272              <span class="entry_type_visibility"> [public as enumList]</span>
10273
10274
10275
10276
10277                <div class="entry_type_notes">list of enums</div>
10278
10279
10280            </td> <!-- entry_type -->
10281
10282            <td class="entry_description">
10283              <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
10284camera device.<wbr/></p>
10285            </td>
10286
10287            <td class="entry_units">
10288            </td>
10289
10290            <td class="entry_range">
10291              <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
10292            </td>
10293
10294            <td class="entry_tags">
10295              <ul class="entry_tags">
10296                  <li><a href="#tag_V1">V1</a></li>
10297                  <li><a href="#tag_RAW">RAW</a></li>
10298              </ul>
10299            </td>
10300
10301          </tr>
10302          <tr class="entries_header">
10303            <th class="th_details" colspan="5">Details</th>
10304          </tr>
10305          <tr class="entry_cont">
10306            <td class="entry_details" colspan="5">
10307              <p>FULL mode camera devices will always support FAST.<wbr/></p>
10308            </td>
10309          </tr>
10310
10311          <tr class="entries_header">
10312            <th class="th_details" colspan="5">HAL Implementation Details</th>
10313          </tr>
10314          <tr class="entry_cont">
10315            <td class="entry_details" colspan="5">
10316              <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
10317pixels than actual pixels on the camera sensor.<wbr/>
10318HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available
10319on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
10320That is,<wbr/> if the highest quality implementation on the camera device does not slow down
10321capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
10322            </td>
10323          </tr>
10324
10325          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10326           <!-- end of entry -->
10327        
10328        
10329
10330      <!-- end of kind -->
10331      </tbody>
10332      <tr><td colspan="6" class="kind">dynamic</td></tr>
10333
10334      <thead class="entries_header">
10335        <tr>
10336          <th class="th_name">Property Name</th>
10337          <th class="th_type">Type</th>
10338          <th class="th_description">Description</th>
10339          <th class="th_units">Units</th>
10340          <th class="th_range">Range</th>
10341          <th class="th_tags">Tags</th>
10342        </tr>
10343      </thead>
10344
10345      <tbody>
10346
10347        
10348
10349        
10350
10351        
10352
10353        
10354
10355                
10356          <tr class="entry" id="dynamic_android.hotPixel.mode">
10357            <td class="entry_name
10358             " rowspan="3">
10359              android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
10360            </td>
10361            <td class="entry_type">
10362                <span class="entry_type_name entry_type_name_enum">byte</span>
10363
10364              <span class="entry_type_visibility"> [public]</span>
10365
10366
10367
10368
10369
10370                <ul class="entry_type_enum">
10371                  <li>
10372                    <span class="entry_type_enum_name">OFF</span>
10373                    <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
10374<p>The frame rate must not be reduced relative to sensor raw output
10375for this option.<wbr/></p>
10376<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>
10377                  </li>
10378                  <li>
10379                    <span class="entry_type_enum_name">FAST</span>
10380                    <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
10381rate relative to sensor raw output.<wbr/></p>
10382<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>
10383                  </li>
10384                  <li>
10385                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
10386                    <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
10387of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
10388<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>
10389                  </li>
10390                </ul>
10391
10392            </td> <!-- entry_type -->
10393
10394            <td class="entry_description">
10395              <p>Operational mode for hot pixel correction.<wbr/></p>
10396            </td>
10397
10398            <td class="entry_units">
10399            </td>
10400
10401            <td class="entry_range">
10402              <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
10403            </td>
10404
10405            <td class="entry_tags">
10406              <ul class="entry_tags">
10407                  <li><a href="#tag_V1">V1</a></li>
10408                  <li><a href="#tag_RAW">RAW</a></li>
10409              </ul>
10410            </td>
10411
10412          </tr>
10413          <tr class="entries_header">
10414            <th class="th_details" colspan="5">Details</th>
10415          </tr>
10416          <tr class="entry_cont">
10417            <td class="entry_details" colspan="5">
10418              <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
10419that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
10420are stuck at an arbitrary value or are oversensitive).<wbr/></p>
10421            </td>
10422          </tr>
10423
10424
10425          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10426           <!-- end of entry -->
10427        
10428        
10429
10430      <!-- end of kind -->
10431      </tbody>
10432
10433  <!-- end of section -->
10434  <tr><td colspan="6" id="section_jpeg" class="section">jpeg</td></tr>
10435
10436
10437      <tr><td colspan="6" class="kind">controls</td></tr>
10438
10439      <thead class="entries_header">
10440        <tr>
10441          <th class="th_name">Property Name</th>
10442          <th class="th_type">Type</th>
10443          <th class="th_description">Description</th>
10444          <th class="th_units">Units</th>
10445          <th class="th_range">Range</th>
10446          <th class="th_tags">Tags</th>
10447        </tr>
10448      </thead>
10449
10450      <tbody>
10451
10452        
10453
10454        
10455
10456        
10457
10458        
10459
10460                
10461          <tr class="entry" id="controls_android.jpeg.gpsLocation">
10462            <td class="entry_name
10463             " rowspan="3">
10464              android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
10465            </td>
10466            <td class="entry_type">
10467                <span class="entry_type_name">byte</span>
10468
10469              <span class="entry_type_visibility"> [java_public as location]</span>
10470
10471              <span class="entry_type_synthetic">[synthetic] </span>
10472
10473              <span class="entry_type_hwlevel">[legacy] </span>
10474
10475
10476
10477
10478            </td> <!-- entry_type -->
10479
10480            <td class="entry_description">
10481              <p>A location object to use when generating image GPS metadata.<wbr/></p>
10482            </td>
10483
10484            <td class="entry_units">
10485            </td>
10486
10487            <td class="entry_range">
10488            </td>
10489
10490            <td class="entry_tags">
10491            </td>
10492
10493          </tr>
10494          <tr class="entries_header">
10495            <th class="th_details" colspan="5">Details</th>
10496          </tr>
10497          <tr class="entry_cont">
10498            <td class="entry_details" colspan="5">
10499              <p>Setting a location object in a request will include the GPS coordinates of the location
10500into any JPEG images captured based on the request.<wbr/> These coordinates can then be
10501viewed by anyone who receives the JPEG image.<wbr/></p>
10502            </td>
10503          </tr>
10504
10505
10506          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10507           <!-- end of entry -->
10508        
10509                
10510          <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
10511            <td class="entry_name
10512             " rowspan="1">
10513              android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
10514            </td>
10515            <td class="entry_type">
10516                <span class="entry_type_name">double</span>
10517                <span class="entry_type_container">x</span>
10518
10519                <span class="entry_type_array">
10520                  3
10521                </span>
10522              <span class="entry_type_visibility"> [ndk_public]</span>
10523
10524
10525              <span class="entry_type_hwlevel">[legacy] </span>
10526
10527
10528                <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
10529
10530
10531            </td> <!-- entry_type -->
10532
10533            <td class="entry_description">
10534              <p>GPS coordinates to include in output JPEG
10535EXIF.<wbr/></p>
10536            </td>
10537
10538            <td class="entry_units">
10539            </td>
10540
10541            <td class="entry_range">
10542              <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
10543            </td>
10544
10545            <td class="entry_tags">
10546              <ul class="entry_tags">
10547                  <li><a href="#tag_BC">BC</a></li>
10548              </ul>
10549            </td>
10550
10551          </tr>
10552
10553
10554          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10555           <!-- end of entry -->
10556        
10557                
10558          <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
10559            <td class="entry_name
10560             " rowspan="1">
10561              android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
10562            </td>
10563            <td class="entry_type">
10564                <span class="entry_type_name">byte</span>
10565
10566              <span class="entry_type_visibility"> [ndk_public as string]</span>
10567
10568
10569              <span class="entry_type_hwlevel">[legacy] </span>
10570
10571
10572
10573
10574            </td> <!-- entry_type -->
10575
10576            <td class="entry_description">
10577              <p>32 characters describing GPS algorithm to
10578include in EXIF.<wbr/></p>
10579            </td>
10580
10581            <td class="entry_units">
10582              UTF-8 null-terminated string
10583            </td>
10584
10585            <td class="entry_range">
10586            </td>
10587
10588            <td class="entry_tags">
10589              <ul class="entry_tags">
10590                  <li><a href="#tag_BC">BC</a></li>
10591              </ul>
10592            </td>
10593
10594          </tr>
10595
10596
10597          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10598           <!-- end of entry -->
10599        
10600                
10601          <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
10602            <td class="entry_name
10603             " rowspan="1">
10604              android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
10605            </td>
10606            <td class="entry_type">
10607                <span class="entry_type_name">int64</span>
10608
10609              <span class="entry_type_visibility"> [ndk_public]</span>
10610
10611
10612              <span class="entry_type_hwlevel">[legacy] </span>
10613
10614
10615
10616
10617            </td> <!-- entry_type -->
10618
10619            <td class="entry_description">
10620              <p>Time GPS fix was made to include in
10621EXIF.<wbr/></p>
10622            </td>
10623
10624            <td class="entry_units">
10625              UTC in seconds since January 1,<wbr/> 1970
10626            </td>
10627
10628            <td class="entry_range">
10629            </td>
10630
10631            <td class="entry_tags">
10632              <ul class="entry_tags">
10633                  <li><a href="#tag_BC">BC</a></li>
10634              </ul>
10635            </td>
10636
10637          </tr>
10638
10639
10640          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10641           <!-- end of entry -->
10642        
10643                
10644          <tr class="entry" id="controls_android.jpeg.orientation">
10645            <td class="entry_name
10646             " rowspan="3">
10647              android.<wbr/>jpeg.<wbr/>orientation
10648            </td>
10649            <td class="entry_type">
10650                <span class="entry_type_name">int32</span>
10651
10652              <span class="entry_type_visibility"> [public]</span>
10653
10654
10655              <span class="entry_type_hwlevel">[legacy] </span>
10656
10657
10658
10659
10660            </td> <!-- entry_type -->
10661
10662            <td class="entry_description">
10663              <p>The orientation for a JPEG image.<wbr/></p>
10664            </td>
10665
10666            <td class="entry_units">
10667              Degrees in multiples of 90
10668            </td>
10669
10670            <td class="entry_range">
10671              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
10672            </td>
10673
10674            <td class="entry_tags">
10675              <ul class="entry_tags">
10676                  <li><a href="#tag_BC">BC</a></li>
10677              </ul>
10678            </td>
10679
10680          </tr>
10681          <tr class="entries_header">
10682            <th class="th_details" colspan="5">Details</th>
10683          </tr>
10684          <tr class="entry_cont">
10685            <td class="entry_details" colspan="5">
10686              <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
10687to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
10688upright.<wbr/></p>
10689<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
10690rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
10691the thumbnail data will also be rotated.<wbr/></p>
10692<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
10693by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
10694<p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
10695sample code may be used:</p>
10696<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
10697    if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
10698    int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
10699
10700    //<wbr/> Round device orientation to a multiple of 90
10701    deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
10702
10703    //<wbr/> Reverse device orientation for front-facing cameras
10704    boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
10705    if (facingFront) deviceOrientation = -deviceOrientation;
10706
10707    //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
10708    //<wbr/> the image upright relative to the device orientation
10709    int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
10710
10711    return jpegOrientation;
10712}
10713</code></pre>
10714            </td>
10715          </tr>
10716
10717
10718          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10719           <!-- end of entry -->
10720        
10721                
10722          <tr class="entry" id="controls_android.jpeg.quality">
10723            <td class="entry_name
10724             " rowspan="3">
10725              android.<wbr/>jpeg.<wbr/>quality
10726            </td>
10727            <td class="entry_type">
10728                <span class="entry_type_name">byte</span>
10729
10730              <span class="entry_type_visibility"> [public]</span>
10731
10732
10733              <span class="entry_type_hwlevel">[legacy] </span>
10734
10735
10736
10737
10738            </td> <!-- entry_type -->
10739
10740            <td class="entry_description">
10741              <p>Compression quality of the final JPEG
10742image.<wbr/></p>
10743            </td>
10744
10745            <td class="entry_units">
10746            </td>
10747
10748            <td class="entry_range">
10749              <p>1-100; larger is higher quality</p>
10750            </td>
10751
10752            <td class="entry_tags">
10753              <ul class="entry_tags">
10754                  <li><a href="#tag_BC">BC</a></li>
10755              </ul>
10756            </td>
10757
10758          </tr>
10759          <tr class="entries_header">
10760            <th class="th_details" colspan="5">Details</th>
10761          </tr>
10762          <tr class="entry_cont">
10763            <td class="entry_details" colspan="5">
10764              <p>85-95 is typical usage range.<wbr/></p>
10765            </td>
10766          </tr>
10767
10768
10769          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10770           <!-- end of entry -->
10771        
10772                
10773          <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
10774            <td class="entry_name
10775             " rowspan="1">
10776              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
10777            </td>
10778            <td class="entry_type">
10779                <span class="entry_type_name">byte</span>
10780
10781              <span class="entry_type_visibility"> [public]</span>
10782
10783
10784              <span class="entry_type_hwlevel">[legacy] </span>
10785
10786
10787
10788
10789            </td> <!-- entry_type -->
10790
10791            <td class="entry_description">
10792              <p>Compression quality of JPEG
10793thumbnail.<wbr/></p>
10794            </td>
10795
10796            <td class="entry_units">
10797            </td>
10798
10799            <td class="entry_range">
10800              <p>1-100; larger is higher quality</p>
10801            </td>
10802
10803            <td class="entry_tags">
10804              <ul class="entry_tags">
10805                  <li><a href="#tag_BC">BC</a></li>
10806              </ul>
10807            </td>
10808
10809          </tr>
10810
10811
10812          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10813           <!-- end of entry -->
10814        
10815                
10816          <tr class="entry" id="controls_android.jpeg.thumbnailSize">
10817            <td class="entry_name
10818             " rowspan="5">
10819              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
10820            </td>
10821            <td class="entry_type">
10822                <span class="entry_type_name">int32</span>
10823                <span class="entry_type_container">x</span>
10824
10825                <span class="entry_type_array">
10826                  2
10827                </span>
10828              <span class="entry_type_visibility"> [public as size]</span>
10829
10830
10831              <span class="entry_type_hwlevel">[legacy] </span>
10832
10833
10834
10835
10836            </td> <!-- entry_type -->
10837
10838            <td class="entry_description">
10839              <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
10840            </td>
10841
10842            <td class="entry_units">
10843            </td>
10844
10845            <td class="entry_range">
10846              <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
10847            </td>
10848
10849            <td class="entry_tags">
10850              <ul class="entry_tags">
10851                  <li><a href="#tag_BC">BC</a></li>
10852              </ul>
10853            </td>
10854
10855          </tr>
10856          <tr class="entries_header">
10857            <th class="th_details" colspan="5">Details</th>
10858          </tr>
10859          <tr class="entry_cont">
10860            <td class="entry_details" colspan="5">
10861              <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
10862but the captured JPEG will still be a valid image.<wbr/></p>
10863<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
10864should have the same aspect ratio as the main JPEG output.<wbr/></p>
10865<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
10866ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
10867For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
1086816:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
10869generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
10870Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
10871<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
10872the camera device will handle thumbnail rotation in one of the following ways:</p>
10873<ul>
10874<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
10875  and keep jpeg and thumbnail image data unrotated.<wbr/></li>
10876<li>Rotate the jpeg and thumbnail image data and not set
10877  <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
10878  case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
10879  capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
10880  orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
10881  size.<wbr/></li>
10882</ul>
10883            </td>
10884          </tr>
10885
10886          <tr class="entries_header">
10887            <th class="th_details" colspan="5">HAL Implementation Details</th>
10888          </tr>
10889          <tr class="entry_cont">
10890            <td class="entry_details" colspan="5">
10891              <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
10892The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
10893The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
10894thumbnail image cropping.<wbr/></p>
10895            </td>
10896          </tr>
10897
10898          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10899           <!-- end of entry -->
10900        
10901        
10902
10903      <!-- end of kind -->
10904      </tbody>
10905      <tr><td colspan="6" class="kind">static</td></tr>
10906
10907      <thead class="entries_header">
10908        <tr>
10909          <th class="th_name">Property Name</th>
10910          <th class="th_type">Type</th>
10911          <th class="th_description">Description</th>
10912          <th class="th_units">Units</th>
10913          <th class="th_range">Range</th>
10914          <th class="th_tags">Tags</th>
10915        </tr>
10916      </thead>
10917
10918      <tbody>
10919
10920        
10921
10922        
10923
10924        
10925
10926        
10927
10928                
10929          <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
10930            <td class="entry_name
10931             " rowspan="3">
10932              android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
10933            </td>
10934            <td class="entry_type">
10935                <span class="entry_type_name">int32</span>
10936                <span class="entry_type_container">x</span>
10937
10938                <span class="entry_type_array">
10939                  2 x n
10940                </span>
10941              <span class="entry_type_visibility"> [public as size]</span>
10942
10943
10944              <span class="entry_type_hwlevel">[legacy] </span>
10945
10946
10947
10948
10949            </td> <!-- entry_type -->
10950
10951            <td class="entry_description">
10952              <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
10953camera device.<wbr/></p>
10954            </td>
10955
10956            <td class="entry_units">
10957            </td>
10958
10959            <td class="entry_range">
10960            </td>
10961
10962            <td class="entry_tags">
10963              <ul class="entry_tags">
10964                  <li><a href="#tag_BC">BC</a></li>
10965              </ul>
10966            </td>
10967
10968          </tr>
10969          <tr class="entries_header">
10970            <th class="th_details" colspan="5">Details</th>
10971          </tr>
10972          <tr class="entry_cont">
10973            <td class="entry_details" colspan="5">
10974              <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
10975thumbnail should be generated.<wbr/></p>
10976<p>Below condiditions will be satisfied for this size list:</p>
10977<ul>
10978<li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
10979If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
10980<li>The aspect ratio of the largest thumbnail size will be same as the
10981aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
10982The largest size is defined as the size that has the largest pixel area
10983in a given size list.<wbr/></li>
10984<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
10985one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
10986and vice versa.<wbr/></li>
10987<li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
10988</ul>
10989            </td>
10990          </tr>
10991
10992
10993          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10994           <!-- end of entry -->
10995        
10996                
10997          <tr class="entry" id="static_android.jpeg.maxSize">
10998            <td class="entry_name
10999             " rowspan="3">
11000              android.<wbr/>jpeg.<wbr/>max<wbr/>Size
11001            </td>
11002            <td class="entry_type">
11003                <span class="entry_type_name">int32</span>
11004
11005              <span class="entry_type_visibility"> [system]</span>
11006
11007
11008
11009
11010
11011
11012            </td> <!-- entry_type -->
11013
11014            <td class="entry_description">
11015              <p>Maximum size in bytes for the compressed
11016JPEG buffer</p>
11017            </td>
11018
11019            <td class="entry_units">
11020            </td>
11021
11022            <td class="entry_range">
11023              <p>Must be large enough to fit any JPEG produced by
11024the camera</p>
11025            </td>
11026
11027            <td class="entry_tags">
11028            </td>
11029
11030          </tr>
11031          <tr class="entries_header">
11032            <th class="th_details" colspan="5">Details</th>
11033          </tr>
11034          <tr class="entry_cont">
11035            <td class="entry_details" colspan="5">
11036              <p>This is used for sizing the gralloc buffers for
11037JPEG</p>
11038            </td>
11039          </tr>
11040
11041
11042          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11043           <!-- end of entry -->
11044        
11045        
11046
11047      <!-- end of kind -->
11048      </tbody>
11049      <tr><td colspan="6" class="kind">dynamic</td></tr>
11050
11051      <thead class="entries_header">
11052        <tr>
11053          <th class="th_name">Property Name</th>
11054          <th class="th_type">Type</th>
11055          <th class="th_description">Description</th>
11056          <th class="th_units">Units</th>
11057          <th class="th_range">Range</th>
11058          <th class="th_tags">Tags</th>
11059        </tr>
11060      </thead>
11061
11062      <tbody>
11063
11064        
11065
11066        
11067
11068        
11069
11070        
11071
11072                
11073          <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
11074            <td class="entry_name
11075             " rowspan="3">
11076              android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11077            </td>
11078            <td class="entry_type">
11079                <span class="entry_type_name">byte</span>
11080
11081              <span class="entry_type_visibility"> [java_public as location]</span>
11082
11083              <span class="entry_type_synthetic">[synthetic] </span>
11084
11085              <span class="entry_type_hwlevel">[legacy] </span>
11086
11087
11088
11089
11090            </td> <!-- entry_type -->
11091
11092            <td class="entry_description">
11093              <p>A location object to use when generating image GPS metadata.<wbr/></p>
11094            </td>
11095
11096            <td class="entry_units">
11097            </td>
11098
11099            <td class="entry_range">
11100            </td>
11101
11102            <td class="entry_tags">
11103            </td>
11104
11105          </tr>
11106          <tr class="entries_header">
11107            <th class="th_details" colspan="5">Details</th>
11108          </tr>
11109          <tr class="entry_cont">
11110            <td class="entry_details" colspan="5">
11111              <p>Setting a location object in a request will include the GPS coordinates of the location
11112into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11113viewed by anyone who receives the JPEG image.<wbr/></p>
11114            </td>
11115          </tr>
11116
11117
11118          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11119           <!-- end of entry -->
11120        
11121                
11122          <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
11123            <td class="entry_name
11124             " rowspan="1">
11125              android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11126            </td>
11127            <td class="entry_type">
11128                <span class="entry_type_name">double</span>
11129                <span class="entry_type_container">x</span>
11130
11131                <span class="entry_type_array">
11132                  3
11133                </span>
11134              <span class="entry_type_visibility"> [ndk_public]</span>
11135
11136
11137              <span class="entry_type_hwlevel">[legacy] </span>
11138
11139
11140                <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11141
11142
11143            </td> <!-- entry_type -->
11144
11145            <td class="entry_description">
11146              <p>GPS coordinates to include in output JPEG
11147EXIF.<wbr/></p>
11148            </td>
11149
11150            <td class="entry_units">
11151            </td>
11152
11153            <td class="entry_range">
11154              <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11155            </td>
11156
11157            <td class="entry_tags">
11158              <ul class="entry_tags">
11159                  <li><a href="#tag_BC">BC</a></li>
11160              </ul>
11161            </td>
11162
11163          </tr>
11164
11165
11166          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11167           <!-- end of entry -->
11168        
11169                
11170          <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
11171            <td class="entry_name
11172             " rowspan="1">
11173              android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11174            </td>
11175            <td class="entry_type">
11176                <span class="entry_type_name">byte</span>
11177
11178              <span class="entry_type_visibility"> [ndk_public as string]</span>
11179
11180
11181              <span class="entry_type_hwlevel">[legacy] </span>
11182
11183
11184
11185
11186            </td> <!-- entry_type -->
11187
11188            <td class="entry_description">
11189              <p>32 characters describing GPS algorithm to
11190include in EXIF.<wbr/></p>
11191            </td>
11192
11193            <td class="entry_units">
11194              UTF-8 null-terminated string
11195            </td>
11196
11197            <td class="entry_range">
11198            </td>
11199
11200            <td class="entry_tags">
11201              <ul class="entry_tags">
11202                  <li><a href="#tag_BC">BC</a></li>
11203              </ul>
11204            </td>
11205
11206          </tr>
11207
11208
11209          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11210           <!-- end of entry -->
11211        
11212                
11213          <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
11214            <td class="entry_name
11215             " rowspan="1">
11216              android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
11217            </td>
11218            <td class="entry_type">
11219                <span class="entry_type_name">int64</span>
11220
11221              <span class="entry_type_visibility"> [ndk_public]</span>
11222
11223
11224              <span class="entry_type_hwlevel">[legacy] </span>
11225
11226
11227
11228
11229            </td> <!-- entry_type -->
11230
11231            <td class="entry_description">
11232              <p>Time GPS fix was made to include in
11233EXIF.<wbr/></p>
11234            </td>
11235
11236            <td class="entry_units">
11237              UTC in seconds since January 1,<wbr/> 1970
11238            </td>
11239
11240            <td class="entry_range">
11241            </td>
11242
11243            <td class="entry_tags">
11244              <ul class="entry_tags">
11245                  <li><a href="#tag_BC">BC</a></li>
11246              </ul>
11247            </td>
11248
11249          </tr>
11250
11251
11252          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11253           <!-- end of entry -->
11254        
11255                
11256          <tr class="entry" id="dynamic_android.jpeg.orientation">
11257            <td class="entry_name
11258             " rowspan="3">
11259              android.<wbr/>jpeg.<wbr/>orientation
11260            </td>
11261            <td class="entry_type">
11262                <span class="entry_type_name">int32</span>
11263
11264              <span class="entry_type_visibility"> [public]</span>
11265
11266
11267              <span class="entry_type_hwlevel">[legacy] </span>
11268
11269
11270
11271
11272            </td> <!-- entry_type -->
11273
11274            <td class="entry_description">
11275              <p>The orientation for a JPEG image.<wbr/></p>
11276            </td>
11277
11278            <td class="entry_units">
11279              Degrees in multiples of 90
11280            </td>
11281
11282            <td class="entry_range">
11283              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
11284            </td>
11285
11286            <td class="entry_tags">
11287              <ul class="entry_tags">
11288                  <li><a href="#tag_BC">BC</a></li>
11289              </ul>
11290            </td>
11291
11292          </tr>
11293          <tr class="entries_header">
11294            <th class="th_details" colspan="5">Details</th>
11295          </tr>
11296          <tr class="entry_cont">
11297            <td class="entry_details" colspan="5">
11298              <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
11299to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
11300upright.<wbr/></p>
11301<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
11302rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
11303the thumbnail data will also be rotated.<wbr/></p>
11304<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
11305by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
11306<p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
11307sample code may be used:</p>
11308<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
11309    if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
11310    int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
11311
11312    //<wbr/> Round device orientation to a multiple of 90
11313    deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
11314
11315    //<wbr/> Reverse device orientation for front-facing cameras
11316    boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
11317    if (facingFront) deviceOrientation = -deviceOrientation;
11318
11319    //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
11320    //<wbr/> the image upright relative to the device orientation
11321    int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
11322
11323    return jpegOrientation;
11324}
11325</code></pre>
11326            </td>
11327          </tr>
11328
11329
11330          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11331           <!-- end of entry -->
11332        
11333                
11334          <tr class="entry" id="dynamic_android.jpeg.quality">
11335            <td class="entry_name
11336             " rowspan="3">
11337              android.<wbr/>jpeg.<wbr/>quality
11338            </td>
11339            <td class="entry_type">
11340                <span class="entry_type_name">byte</span>
11341
11342              <span class="entry_type_visibility"> [public]</span>
11343
11344
11345              <span class="entry_type_hwlevel">[legacy] </span>
11346
11347
11348
11349
11350            </td> <!-- entry_type -->
11351
11352            <td class="entry_description">
11353              <p>Compression quality of the final JPEG
11354image.<wbr/></p>
11355            </td>
11356
11357            <td class="entry_units">
11358            </td>
11359
11360            <td class="entry_range">
11361              <p>1-100; larger is higher quality</p>
11362            </td>
11363
11364            <td class="entry_tags">
11365              <ul class="entry_tags">
11366                  <li><a href="#tag_BC">BC</a></li>
11367              </ul>
11368            </td>
11369
11370          </tr>
11371          <tr class="entries_header">
11372            <th class="th_details" colspan="5">Details</th>
11373          </tr>
11374          <tr class="entry_cont">
11375            <td class="entry_details" colspan="5">
11376              <p>85-95 is typical usage range.<wbr/></p>
11377            </td>
11378          </tr>
11379
11380
11381          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11382           <!-- end of entry -->
11383        
11384                
11385          <tr class="entry" id="dynamic_android.jpeg.size">
11386            <td class="entry_name
11387             " rowspan="3">
11388              android.<wbr/>jpeg.<wbr/>size
11389            </td>
11390            <td class="entry_type">
11391                <span class="entry_type_name">int32</span>
11392
11393              <span class="entry_type_visibility"> [system]</span>
11394
11395
11396
11397
11398
11399
11400            </td> <!-- entry_type -->
11401
11402            <td class="entry_description">
11403              <p>The size of the compressed JPEG image,<wbr/> in
11404bytes</p>
11405            </td>
11406
11407            <td class="entry_units">
11408            </td>
11409
11410            <td class="entry_range">
11411              <p>&gt;= 0</p>
11412            </td>
11413
11414            <td class="entry_tags">
11415              <ul class="entry_tags">
11416                  <li><a href="#tag_FUTURE">FUTURE</a></li>
11417              </ul>
11418            </td>
11419
11420          </tr>
11421          <tr class="entries_header">
11422            <th class="th_details" colspan="5">Details</th>
11423          </tr>
11424          <tr class="entry_cont">
11425            <td class="entry_details" colspan="5">
11426              <p>If no JPEG output is produced for the request,<wbr/>
11427this must be 0.<wbr/></p>
11428<p>Otherwise,<wbr/> this describes the real size of the compressed
11429JPEG image placed in the output stream.<wbr/>  More specifically,<wbr/>
11430if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
11431has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
11432the JPEG stream will be 1000000 bytes,<wbr/> of which the first
11433500000 make up the real data.<wbr/></p>
11434            </td>
11435          </tr>
11436
11437
11438          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11439           <!-- end of entry -->
11440        
11441                
11442          <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
11443            <td class="entry_name
11444             " rowspan="1">
11445              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
11446            </td>
11447            <td class="entry_type">
11448                <span class="entry_type_name">byte</span>
11449
11450              <span class="entry_type_visibility"> [public]</span>
11451
11452
11453              <span class="entry_type_hwlevel">[legacy] </span>
11454
11455
11456
11457
11458            </td> <!-- entry_type -->
11459
11460            <td class="entry_description">
11461              <p>Compression quality of JPEG
11462thumbnail.<wbr/></p>
11463            </td>
11464
11465            <td class="entry_units">
11466            </td>
11467
11468            <td class="entry_range">
11469              <p>1-100; larger is higher quality</p>
11470            </td>
11471
11472            <td class="entry_tags">
11473              <ul class="entry_tags">
11474                  <li><a href="#tag_BC">BC</a></li>
11475              </ul>
11476            </td>
11477
11478          </tr>
11479
11480
11481          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11482           <!-- end of entry -->
11483        
11484                
11485          <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
11486            <td class="entry_name
11487             " rowspan="5">
11488              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
11489            </td>
11490            <td class="entry_type">
11491                <span class="entry_type_name">int32</span>
11492                <span class="entry_type_container">x</span>
11493
11494                <span class="entry_type_array">
11495                  2
11496                </span>
11497              <span class="entry_type_visibility"> [public as size]</span>
11498
11499
11500              <span class="entry_type_hwlevel">[legacy] </span>
11501
11502
11503
11504
11505            </td> <!-- entry_type -->
11506
11507            <td class="entry_description">
11508              <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
11509            </td>
11510
11511            <td class="entry_units">
11512            </td>
11513
11514            <td class="entry_range">
11515              <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
11516            </td>
11517
11518            <td class="entry_tags">
11519              <ul class="entry_tags">
11520                  <li><a href="#tag_BC">BC</a></li>
11521              </ul>
11522            </td>
11523
11524          </tr>
11525          <tr class="entries_header">
11526            <th class="th_details" colspan="5">Details</th>
11527          </tr>
11528          <tr class="entry_cont">
11529            <td class="entry_details" colspan="5">
11530              <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
11531but the captured JPEG will still be a valid image.<wbr/></p>
11532<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
11533should have the same aspect ratio as the main JPEG output.<wbr/></p>
11534<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
11535ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
11536For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
1153716:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
11538generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
11539Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
11540<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
11541the camera device will handle thumbnail rotation in one of the following ways:</p>
11542<ul>
11543<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
11544  and keep jpeg and thumbnail image data unrotated.<wbr/></li>
11545<li>Rotate the jpeg and thumbnail image data and not set
11546  <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
11547  case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
11548  capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
11549  orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
11550  size.<wbr/></li>
11551</ul>
11552            </td>
11553          </tr>
11554
11555          <tr class="entries_header">
11556            <th class="th_details" colspan="5">HAL Implementation Details</th>
11557          </tr>
11558          <tr class="entry_cont">
11559            <td class="entry_details" colspan="5">
11560              <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
11561The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
11562The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
11563thumbnail image cropping.<wbr/></p>
11564            </td>
11565          </tr>
11566
11567          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11568           <!-- end of entry -->
11569        
11570        
11571
11572      <!-- end of kind -->
11573      </tbody>
11574
11575  <!-- end of section -->
11576  <tr><td colspan="6" id="section_lens" class="section">lens</td></tr>
11577
11578
11579      <tr><td colspan="6" class="kind">controls</td></tr>
11580
11581      <thead class="entries_header">
11582        <tr>
11583          <th class="th_name">Property Name</th>
11584          <th class="th_type">Type</th>
11585          <th class="th_description">Description</th>
11586          <th class="th_units">Units</th>
11587          <th class="th_range">Range</th>
11588          <th class="th_tags">Tags</th>
11589        </tr>
11590      </thead>
11591
11592      <tbody>
11593
11594        
11595
11596        
11597
11598        
11599
11600        
11601
11602                
11603          <tr class="entry" id="controls_android.lens.aperture">
11604            <td class="entry_name
11605             " rowspan="3">
11606              android.<wbr/>lens.<wbr/>aperture
11607            </td>
11608            <td class="entry_type">
11609                <span class="entry_type_name">float</span>
11610
11611              <span class="entry_type_visibility"> [public]</span>
11612
11613
11614              <span class="entry_type_hwlevel">[full] </span>
11615
11616
11617
11618
11619            </td> <!-- entry_type -->
11620
11621            <td class="entry_description">
11622              <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
11623effective aperture diameter.<wbr/></p>
11624            </td>
11625
11626            <td class="entry_units">
11627              The f-number (f/<wbr/>N)
11628            </td>
11629
11630            <td class="entry_range">
11631              <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
11632            </td>
11633
11634            <td class="entry_tags">
11635              <ul class="entry_tags">
11636                  <li><a href="#tag_V1">V1</a></li>
11637              </ul>
11638            </td>
11639
11640          </tr>
11641          <tr class="entries_header">
11642            <th class="th_details" colspan="5">Details</th>
11643          </tr>
11644          <tr class="entry_cont">
11645            <td class="entry_details" colspan="5">
11646              <p>Setting this value is only supported on the camera devices that have a variable
11647aperture lens.<wbr/></p>
11648<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
11649this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
11650<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>
11651to achieve manual exposure control.<wbr/></p>
11652<p>The requested aperture value may take several frames to reach the
11653requested value; the camera device will report the current (intermediate)
11654aperture size in capture result metadata while the aperture is changing.<wbr/>
11655While 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>
11656<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
11657the ON modes,<wbr/> this will be overridden by the camera device
11658auto-exposure algorithm,<wbr/> the overridden values are then provided
11659back to the user in the corresponding result.<wbr/></p>
11660            </td>
11661          </tr>
11662
11663
11664          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11665           <!-- end of entry -->
11666        
11667                
11668          <tr class="entry" id="controls_android.lens.filterDensity">
11669            <td class="entry_name
11670             " rowspan="3">
11671              android.<wbr/>lens.<wbr/>filter<wbr/>Density
11672            </td>
11673            <td class="entry_type">
11674                <span class="entry_type_name">float</span>
11675
11676              <span class="entry_type_visibility"> [public]</span>
11677
11678
11679              <span class="entry_type_hwlevel">[full] </span>
11680
11681
11682
11683
11684            </td> <!-- entry_type -->
11685
11686            <td class="entry_description">
11687              <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
11688            </td>
11689
11690            <td class="entry_units">
11691              Exposure Value (EV)
11692            </td>
11693
11694            <td class="entry_range">
11695              <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
11696            </td>
11697
11698            <td class="entry_tags">
11699              <ul class="entry_tags">
11700                  <li><a href="#tag_V1">V1</a></li>
11701              </ul>
11702            </td>
11703
11704          </tr>
11705          <tr class="entries_header">
11706            <th class="th_details" colspan="5">Details</th>
11707          </tr>
11708          <tr class="entry_cont">
11709            <td class="entry_details" colspan="5">
11710              <p>This control will not be supported on most camera devices.<wbr/></p>
11711<p>Lens filters are typically used to lower the amount of light the
11712sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
11713step is the standard logarithmic representation,<wbr/> which are
11714non-negative,<wbr/> and inversely proportional to the amount of light
11715hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
11716in no reduction of the incoming light,<wbr/> and setting this to 2 would
11717mean that the filter is set to reduce incoming light by two stops
11718(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
11719<p>It may take several frames before the lens filter density changes
11720to the requested value.<wbr/> While the filter density is still changing,<wbr/>
11721<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
11722            </td>
11723          </tr>
11724
11725
11726          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11727           <!-- end of entry -->
11728        
11729                
11730          <tr class="entry" id="controls_android.lens.focalLength">
11731            <td class="entry_name
11732             " rowspan="3">
11733              android.<wbr/>lens.<wbr/>focal<wbr/>Length
11734            </td>
11735            <td class="entry_type">
11736                <span class="entry_type_name">float</span>
11737
11738              <span class="entry_type_visibility"> [public]</span>
11739
11740
11741              <span class="entry_type_hwlevel">[legacy] </span>
11742
11743
11744
11745
11746            </td> <!-- entry_type -->
11747
11748            <td class="entry_description">
11749              <p>The desired lens focal length; used for optical zoom.<wbr/></p>
11750            </td>
11751
11752            <td class="entry_units">
11753              Millimeters
11754            </td>
11755
11756            <td class="entry_range">
11757              <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
11758            </td>
11759
11760            <td class="entry_tags">
11761              <ul class="entry_tags">
11762                  <li><a href="#tag_V1">V1</a></li>
11763              </ul>
11764            </td>
11765
11766          </tr>
11767          <tr class="entries_header">
11768            <th class="th_details" colspan="5">Details</th>
11769          </tr>
11770          <tr class="entry_cont">
11771            <td class="entry_details" colspan="5">
11772              <p>This setting controls the physical focal length of the camera
11773device's lens.<wbr/> Changing the focal length changes the field of
11774view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
11775<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
11776setting won't be applied instantaneously,<wbr/> and it may take several
11777frames before the lens can change to the requested focal length.<wbr/>
11778While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
11779be set to MOVING.<wbr/></p>
11780<p>Optical zoom will not be supported on most devices.<wbr/></p>
11781            </td>
11782          </tr>
11783
11784
11785          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11786           <!-- end of entry -->
11787        
11788                
11789          <tr class="entry" id="controls_android.lens.focusDistance">
11790            <td class="entry_name
11791             " rowspan="3">
11792              android.<wbr/>lens.<wbr/>focus<wbr/>Distance
11793            </td>
11794            <td class="entry_type">
11795                <span class="entry_type_name">float</span>
11796
11797              <span class="entry_type_visibility"> [public]</span>
11798
11799
11800              <span class="entry_type_hwlevel">[full] </span>
11801
11802
11803
11804
11805            </td> <!-- entry_type -->
11806
11807            <td class="entry_description">
11808              <p>Desired distance to plane of sharpest focus,<wbr/>
11809measured from frontmost surface of the lens.<wbr/></p>
11810            </td>
11811
11812            <td class="entry_units">
11813              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
11814            </td>
11815
11816            <td class="entry_range">
11817              <p>&gt;= 0</p>
11818            </td>
11819
11820            <td class="entry_tags">
11821              <ul class="entry_tags">
11822                  <li><a href="#tag_BC">BC</a></li>
11823                  <li><a href="#tag_V1">V1</a></li>
11824              </ul>
11825            </td>
11826
11827          </tr>
11828          <tr class="entries_header">
11829            <th class="th_details" colspan="5">Details</th>
11830          </tr>
11831          <tr class="entry_cont">
11832            <td class="entry_details" colspan="5">
11833              <p>This control can be used for setting manual focus,<wbr/> on devices that support
11834the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
11835<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
11836<p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
11837<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>
11838<p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
11839instantaneously,<wbr/> and it may take several frames before the lens
11840can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
11841<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
11842<p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
11843for infinity focus.<wbr/></p>
11844            </td>
11845          </tr>
11846
11847
11848          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11849           <!-- end of entry -->
11850        
11851                
11852          <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
11853            <td class="entry_name
11854             " rowspan="3">
11855              android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
11856            </td>
11857            <td class="entry_type">
11858                <span class="entry_type_name entry_type_name_enum">byte</span>
11859
11860              <span class="entry_type_visibility"> [public]</span>
11861
11862
11863              <span class="entry_type_hwlevel">[limited] </span>
11864
11865
11866
11867                <ul class="entry_type_enum">
11868                  <li>
11869                    <span class="entry_type_enum_name">OFF</span>
11870                    <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
11871                  </li>
11872                  <li>
11873                    <span class="entry_type_enum_name">ON</span>
11874                    <span class="entry_type_enum_optional">[optional]</span>
11875                    <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
11876                  </li>
11877                </ul>
11878
11879            </td> <!-- entry_type -->
11880
11881            <td class="entry_description">
11882              <p>Sets whether the camera device uses optical image stabilization (OIS)
11883when capturing images.<wbr/></p>
11884            </td>
11885
11886            <td class="entry_units">
11887            </td>
11888
11889            <td class="entry_range">
11890              <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
11891            </td>
11892
11893            <td class="entry_tags">
11894              <ul class="entry_tags">
11895                  <li><a href="#tag_V1">V1</a></li>
11896              </ul>
11897            </td>
11898
11899          </tr>
11900          <tr class="entries_header">
11901            <th class="th_details" colspan="5">Details</th>
11902          </tr>
11903          <tr class="entry_cont">
11904            <td class="entry_details" colspan="5">
11905              <p>OIS is used to compensate for motion blur due to small
11906movements of the camera during capture.<wbr/> Unlike digital image
11907stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
11908makes use of mechanical elements to stabilize the camera
11909sensor,<wbr/> and thus allows for longer exposure times before
11910camera shake becomes apparent.<wbr/></p>
11911<p>Switching between different optical stabilization modes may take several
11912frames to initialize,<wbr/> the camera device will report the current mode in
11913capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
11914optical stabilization modes in the first several capture results may still
11915be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
11916<p>If a camera device supports both OIS and digital image stabilization
11917(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
11918interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
11919<p>Not all devices will support OIS; see
11920<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
11921available controls.<wbr/></p>
11922            </td>
11923          </tr>
11924
11925
11926          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11927           <!-- end of entry -->
11928        
11929        
11930
11931      <!-- end of kind -->
11932      </tbody>
11933      <tr><td colspan="6" class="kind">static</td></tr>
11934
11935      <thead class="entries_header">
11936        <tr>
11937          <th class="th_name">Property Name</th>
11938          <th class="th_type">Type</th>
11939          <th class="th_description">Description</th>
11940          <th class="th_units">Units</th>
11941          <th class="th_range">Range</th>
11942          <th class="th_tags">Tags</th>
11943        </tr>
11944      </thead>
11945
11946      <tbody>
11947
11948        
11949
11950        
11951
11952        
11953
11954        
11955                
11956            
11957
11958                
11959          <tr class="entry" id="static_android.lens.info.availableApertures">
11960            <td class="entry_name
11961             " rowspan="3">
11962              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
11963            </td>
11964            <td class="entry_type">
11965                <span class="entry_type_name">float</span>
11966                <span class="entry_type_container">x</span>
11967
11968                <span class="entry_type_array">
11969                  n
11970                </span>
11971              <span class="entry_type_visibility"> [public]</span>
11972
11973
11974              <span class="entry_type_hwlevel">[full] </span>
11975
11976
11977
11978
11979            </td> <!-- entry_type -->
11980
11981            <td class="entry_description">
11982              <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
11983supported by this camera device.<wbr/></p>
11984            </td>
11985
11986            <td class="entry_units">
11987              The aperture f-number
11988            </td>
11989
11990            <td class="entry_range">
11991            </td>
11992
11993            <td class="entry_tags">
11994              <ul class="entry_tags">
11995                  <li><a href="#tag_V1">V1</a></li>
11996              </ul>
11997            </td>
11998
11999          </tr>
12000          <tr class="entries_header">
12001            <th class="th_details" colspan="5">Details</th>
12002          </tr>
12003          <tr class="entry_cont">
12004            <td class="entry_details" colspan="5">
12005              <p>If the camera device doesn't support a variable lens aperture,<wbr/>
12006this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
12007<p>If the camera device supports a variable aperture,<wbr/> the aperture values
12008in this list will be sorted in ascending order.<wbr/></p>
12009            </td>
12010          </tr>
12011
12012
12013          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12014           <!-- end of entry -->
12015        
12016                
12017          <tr class="entry" id="static_android.lens.info.availableFilterDensities">
12018            <td class="entry_name
12019             " rowspan="3">
12020              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
12021            </td>
12022            <td class="entry_type">
12023                <span class="entry_type_name">float</span>
12024                <span class="entry_type_container">x</span>
12025
12026                <span class="entry_type_array">
12027                  n
12028                </span>
12029              <span class="entry_type_visibility"> [public]</span>
12030
12031
12032              <span class="entry_type_hwlevel">[full] </span>
12033
12034
12035
12036
12037            </td> <!-- entry_type -->
12038
12039            <td class="entry_description">
12040              <p>List of neutral density filter values for
12041<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
12042            </td>
12043
12044            <td class="entry_units">
12045              Exposure value (EV)
12046            </td>
12047
12048            <td class="entry_range">
12049              <p>Values are &gt;= 0</p>
12050            </td>
12051
12052            <td class="entry_tags">
12053              <ul class="entry_tags">
12054                  <li><a href="#tag_V1">V1</a></li>
12055              </ul>
12056            </td>
12057
12058          </tr>
12059          <tr class="entries_header">
12060            <th class="th_details" colspan="5">Details</th>
12061          </tr>
12062          <tr class="entry_cont">
12063            <td class="entry_details" colspan="5">
12064              <p>If a neutral density filter is not supported by this camera device,<wbr/>
12065this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
12066filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
12067            </td>
12068          </tr>
12069
12070
12071          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12072           <!-- end of entry -->
12073        
12074                
12075          <tr class="entry" id="static_android.lens.info.availableFocalLengths">
12076            <td class="entry_name
12077             " rowspan="3">
12078              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
12079            </td>
12080            <td class="entry_type">
12081                <span class="entry_type_name">float</span>
12082                <span class="entry_type_container">x</span>
12083
12084                <span class="entry_type_array">
12085                  n
12086                </span>
12087              <span class="entry_type_visibility"> [public]</span>
12088
12089
12090              <span class="entry_type_hwlevel">[legacy] </span>
12091
12092
12093                <div class="entry_type_notes">The list of available focal lengths</div>
12094
12095
12096            </td> <!-- entry_type -->
12097
12098            <td class="entry_description">
12099              <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
12100device.<wbr/></p>
12101            </td>
12102
12103            <td class="entry_units">
12104              Millimeters
12105            </td>
12106
12107            <td class="entry_range">
12108              <p>Values are &gt; 0</p>
12109            </td>
12110
12111            <td class="entry_tags">
12112              <ul class="entry_tags">
12113                  <li><a href="#tag_BC">BC</a></li>
12114                  <li><a href="#tag_V1">V1</a></li>
12115              </ul>
12116            </td>
12117
12118          </tr>
12119          <tr class="entries_header">
12120            <th class="th_details" colspan="5">Details</th>
12121          </tr>
12122          <tr class="entry_cont">
12123            <td class="entry_details" colspan="5">
12124              <p>If optical zoom is not supported,<wbr/> this list will only contain
12125a single value corresponding to the fixed focal length of the
12126device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
12127by the camera device,<wbr/> in ascending order.<wbr/></p>
12128            </td>
12129          </tr>
12130
12131
12132          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12133           <!-- end of entry -->
12134        
12135                
12136          <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
12137            <td class="entry_name
12138             " rowspan="3">
12139              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
12140            </td>
12141            <td class="entry_type">
12142                <span class="entry_type_name">byte</span>
12143                <span class="entry_type_container">x</span>
12144
12145                <span class="entry_type_array">
12146                  n
12147                </span>
12148              <span class="entry_type_visibility"> [public as enumList]</span>
12149
12150
12151              <span class="entry_type_hwlevel">[limited] </span>
12152
12153
12154                <div class="entry_type_notes">list of enums</div>
12155
12156
12157            </td> <!-- entry_type -->
12158
12159            <td class="entry_description">
12160              <p>List of optical image stabilization (OIS) modes for
12161<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>
12162            </td>
12163
12164            <td class="entry_units">
12165            </td>
12166
12167            <td class="entry_range">
12168              <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
12169            </td>
12170
12171            <td class="entry_tags">
12172              <ul class="entry_tags">
12173                  <li><a href="#tag_V1">V1</a></li>
12174              </ul>
12175            </td>
12176
12177          </tr>
12178          <tr class="entries_header">
12179            <th class="th_details" colspan="5">Details</th>
12180          </tr>
12181          <tr class="entry_cont">
12182            <td class="entry_details" colspan="5">
12183              <p>If OIS is not supported by a given camera device,<wbr/> this list will
12184contain only OFF.<wbr/></p>
12185            </td>
12186          </tr>
12187
12188
12189          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12190           <!-- end of entry -->
12191        
12192                
12193          <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
12194            <td class="entry_name
12195             " rowspan="3">
12196              android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
12197            </td>
12198            <td class="entry_type">
12199                <span class="entry_type_name">float</span>
12200
12201              <span class="entry_type_visibility"> [public]</span>
12202
12203
12204              <span class="entry_type_hwlevel">[limited] </span>
12205
12206
12207
12208
12209            </td> <!-- entry_type -->
12210
12211            <td class="entry_description">
12212              <p>Hyperfocal distance for this lens.<wbr/></p>
12213            </td>
12214
12215            <td class="entry_units">
12216              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12217            </td>
12218
12219            <td class="entry_range">
12220              <p>If lens is fixed focus,<wbr/> &gt;= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
12221within <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>
12222            </td>
12223
12224            <td class="entry_tags">
12225            </td>
12226
12227          </tr>
12228          <tr class="entries_header">
12229            <th class="th_details" colspan="5">Details</th>
12230          </tr>
12231          <tr class="entry_cont">
12232            <td class="entry_details" colspan="5">
12233              <p>If the lens is not fixed focus,<wbr/> the camera device will report this
12234field 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>
12235            </td>
12236          </tr>
12237
12238
12239          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12240           <!-- end of entry -->
12241        
12242                
12243          <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
12244            <td class="entry_name
12245             " rowspan="5">
12246              android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
12247            </td>
12248            <td class="entry_type">
12249                <span class="entry_type_name">float</span>
12250
12251              <span class="entry_type_visibility"> [public]</span>
12252
12253
12254              <span class="entry_type_hwlevel">[limited] </span>
12255
12256
12257
12258
12259            </td> <!-- entry_type -->
12260
12261            <td class="entry_description">
12262              <p>Shortest distance from frontmost surface
12263of the lens that can be brought into sharp focus.<wbr/></p>
12264            </td>
12265
12266            <td class="entry_units">
12267              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12268            </td>
12269
12270            <td class="entry_range">
12271              <p>&gt;= 0</p>
12272            </td>
12273
12274            <td class="entry_tags">
12275              <ul class="entry_tags">
12276                  <li><a href="#tag_V1">V1</a></li>
12277              </ul>
12278            </td>
12279
12280          </tr>
12281          <tr class="entries_header">
12282            <th class="th_details" colspan="5">Details</th>
12283          </tr>
12284          <tr class="entry_cont">
12285            <td class="entry_details" colspan="5">
12286              <p>If the lens is fixed-focus,<wbr/> this will be
122870.<wbr/></p>
12288            </td>
12289          </tr>
12290
12291          <tr class="entries_header">
12292            <th class="th_details" colspan="5">HAL Implementation Details</th>
12293          </tr>
12294          <tr class="entry_cont">
12295            <td class="entry_details" colspan="5">
12296              <p>Mandatory for FULL devices; LIMITED devices
12297must always set this value to 0 for fixed-focus; and may omit
12298the minimum focus distance otherwise.<wbr/></p>
12299<p>This field is also mandatory for all devices advertising
12300the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
12301            </td>
12302          </tr>
12303
12304          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12305           <!-- end of entry -->
12306        
12307                
12308          <tr class="entry" id="static_android.lens.info.shadingMapSize">
12309            <td class="entry_name
12310             " rowspan="3">
12311              android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
12312            </td>
12313            <td class="entry_type">
12314                <span class="entry_type_name">int32</span>
12315                <span class="entry_type_container">x</span>
12316
12317                <span class="entry_type_array">
12318                  2
12319                </span>
12320              <span class="entry_type_visibility"> [ndk_public as size]</span>
12321
12322
12323              <span class="entry_type_hwlevel">[full] </span>
12324
12325
12326                <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
12327
12328
12329            </td> <!-- entry_type -->
12330
12331            <td class="entry_description">
12332              <p>Dimensions of lens shading map.<wbr/></p>
12333            </td>
12334
12335            <td class="entry_units">
12336            </td>
12337
12338            <td class="entry_range">
12339              <p>Both values &gt;= 1</p>
12340            </td>
12341
12342            <td class="entry_tags">
12343              <ul class="entry_tags">
12344                  <li><a href="#tag_V1">V1</a></li>
12345              </ul>
12346            </td>
12347
12348          </tr>
12349          <tr class="entries_header">
12350            <th class="th_details" colspan="5">Details</th>
12351          </tr>
12352          <tr class="entry_cont">
12353            <td class="entry_details" colspan="5">
12354              <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
12355must be smaller than 64x64.<wbr/></p>
12356            </td>
12357          </tr>
12358
12359
12360          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12361           <!-- end of entry -->
12362        
12363                
12364          <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
12365            <td class="entry_name
12366             " rowspan="5">
12367              android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
12368            </td>
12369            <td class="entry_type">
12370                <span class="entry_type_name entry_type_name_enum">byte</span>
12371
12372              <span class="entry_type_visibility"> [public]</span>
12373
12374
12375              <span class="entry_type_hwlevel">[limited] </span>
12376
12377
12378
12379                <ul class="entry_type_enum">
12380                  <li>
12381                    <span class="entry_type_enum_name">UNCALIBRATED</span>
12382                    <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
12383<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
12384<p>Setting the lens to the same focus distance on separate occasions may
12385result in a different real focus distance,<wbr/> depending on factors such
12386as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
12387and the device temperature.<wbr/> The focus distance value will still be
12388in 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
12389represents the farthest focus.<wbr/></p></span>
12390                  </li>
12391                  <li>
12392                    <span class="entry_type_enum_name">APPROXIMATE</span>
12393                    <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
12394<p>However,<wbr/> setting the lens to the same focus distance
12395on separate occasions may result in a different real
12396focus distance,<wbr/> depending on factors such as the
12397orientation of the device,<wbr/> the age of the focusing
12398mechanism,<wbr/> and the device temperature.<wbr/></p></span>
12399                  </li>
12400                  <li>
12401                    <span class="entry_type_enum_name">CALIBRATED</span>
12402                    <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
12403is calibrated.<wbr/></p>
12404<p>The lens mechanism is calibrated so that setting the
12405same focus distance is repeatable on multiple
12406occasions with good accuracy,<wbr/> and the focus distance
12407corresponds to the real physical distance to the plane
12408of best focus.<wbr/></p></span>
12409                  </li>
12410                </ul>
12411
12412            </td> <!-- entry_type -->
12413
12414            <td class="entry_description">
12415              <p>The lens focus distance calibration quality.<wbr/></p>
12416            </td>
12417
12418            <td class="entry_units">
12419            </td>
12420
12421            <td class="entry_range">
12422            </td>
12423
12424            <td class="entry_tags">
12425              <ul class="entry_tags">
12426                  <li><a href="#tag_V1">V1</a></li>
12427              </ul>
12428            </td>
12429
12430          </tr>
12431          <tr class="entries_header">
12432            <th class="th_details" colspan="5">Details</th>
12433          </tr>
12434          <tr class="entry_cont">
12435            <td class="entry_details" colspan="5">
12436              <p>The lens focus distance calibration quality determines the reliability of
12437focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
12438<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
12439<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
12440<p>APPROXIMATE and CALIBRATED devices report the focus metadata in
12441units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
12442and increasing positive numbers represent focusing closer and closer
12443to the camera device.<wbr/> The focus distance control also uses diopters
12444on these devices.<wbr/></p>
12445<p>UNCALIBRATED devices do not use units that are directly comparable
12446to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
12447focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
12448nearest focus the device can achieve.<wbr/></p>
12449            </td>
12450          </tr>
12451
12452          <tr class="entries_header">
12453            <th class="th_details" colspan="5">HAL Implementation Details</th>
12454          </tr>
12455          <tr class="entry_cont">
12456            <td class="entry_details" colspan="5">
12457              <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
12458focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
12459and the lens focus distance is set to 0 diopters
12460(<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
12461and is stably focused at infinity even if the device tilts.<wbr/> It may take the
12462lens some time to move; during the move the lens state should be MOVING and
12463the output diopter value should be changing toward 0.<wbr/></p>
12464            </td>
12465          </tr>
12466
12467          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12468           <!-- end of entry -->
12469        
12470        
12471        
12472
12473                
12474          <tr class="entry" id="static_android.lens.facing">
12475            <td class="entry_name
12476             " rowspan="1">
12477              android.<wbr/>lens.<wbr/>facing
12478            </td>
12479            <td class="entry_type">
12480                <span class="entry_type_name entry_type_name_enum">byte</span>
12481
12482              <span class="entry_type_visibility"> [public]</span>
12483
12484
12485              <span class="entry_type_hwlevel">[legacy] </span>
12486
12487
12488
12489                <ul class="entry_type_enum">
12490                  <li>
12491                    <span class="entry_type_enum_name">FRONT</span>
12492                    <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
12493                  </li>
12494                  <li>
12495                    <span class="entry_type_enum_name">BACK</span>
12496                    <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
12497                  </li>
12498                  <li>
12499                    <span class="entry_type_enum_name">EXTERNAL</span>
12500                    <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
12501device's screen.<wbr/></p></span>
12502                  </li>
12503                </ul>
12504
12505            </td> <!-- entry_type -->
12506
12507            <td class="entry_description">
12508              <p>Direction the camera faces relative to
12509device screen.<wbr/></p>
12510            </td>
12511
12512            <td class="entry_units">
12513            </td>
12514
12515            <td class="entry_range">
12516            </td>
12517
12518            <td class="entry_tags">
12519            </td>
12520
12521          </tr>
12522
12523
12524          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12525           <!-- end of entry -->
12526        
12527                
12528          <tr class="entry" id="static_android.lens.poseRotation">
12529            <td class="entry_name
12530             " rowspan="3">
12531              android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
12532            </td>
12533            <td class="entry_type">
12534                <span class="entry_type_name">float</span>
12535                <span class="entry_type_container">x</span>
12536
12537                <span class="entry_type_array">
12538                  4
12539                </span>
12540              <span class="entry_type_visibility"> [public]</span>
12541
12542
12543
12544
12545
12546
12547            </td> <!-- entry_type -->
12548
12549            <td class="entry_description">
12550              <p>The orientation of the camera relative to the sensor
12551coordinate system.<wbr/></p>
12552            </td>
12553
12554            <td class="entry_units">
12555              
12556            Quaternion coefficients
12557          
12558            </td>
12559
12560            <td class="entry_range">
12561            </td>
12562
12563            <td class="entry_tags">
12564              <ul class="entry_tags">
12565                  <li><a href="#tag_DEPTH">DEPTH</a></li>
12566              </ul>
12567            </td>
12568
12569          </tr>
12570          <tr class="entries_header">
12571            <th class="th_details" colspan="5">Details</th>
12572          </tr>
12573          <tr class="entry_cont">
12574            <td class="entry_details" colspan="5">
12575              <p>The four coefficients that describe the quaternion
12576rotation from the Android sensor coordinate system to a
12577camera-aligned coordinate system where the X-axis is
12578aligned with the long side of the image sensor,<wbr/> the Y-axis
12579is aligned with the short side of the image sensor,<wbr/> and
12580the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
12581<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
12582to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
12583amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
12584<pre><code> theta = 2 * acos(w)
12585a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
12586a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
12587a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
12588</code></pre>
12589<p>To create a 3x3 rotation matrix that applies the rotation
12590defined by this quaternion,<wbr/> the following matrix can be
12591used:</p>
12592<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
12593           2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
12594           2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
12595</code></pre>
12596<p>This matrix can then be used to apply the rotation to a
12597 column vector point with</p>
12598<p><code>p' = Rp</code></p>
12599<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
12600 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
12601            </td>
12602          </tr>
12603
12604
12605          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12606           <!-- end of entry -->
12607        
12608                
12609          <tr class="entry" id="static_android.lens.poseTranslation">
12610            <td class="entry_name
12611             " rowspan="3">
12612              android.<wbr/>lens.<wbr/>pose<wbr/>Translation
12613            </td>
12614            <td class="entry_type">
12615                <span class="entry_type_name">float</span>
12616                <span class="entry_type_container">x</span>
12617
12618                <span class="entry_type_array">
12619                  3
12620                </span>
12621              <span class="entry_type_visibility"> [public]</span>
12622
12623
12624
12625
12626
12627
12628            </td> <!-- entry_type -->
12629
12630            <td class="entry_description">
12631              <p>Position of the camera optical center.<wbr/></p>
12632            </td>
12633
12634            <td class="entry_units">
12635              Meters
12636            </td>
12637
12638            <td class="entry_range">
12639            </td>
12640
12641            <td class="entry_tags">
12642              <ul class="entry_tags">
12643                  <li><a href="#tag_DEPTH">DEPTH</a></li>
12644              </ul>
12645            </td>
12646
12647          </tr>
12648          <tr class="entries_header">
12649            <th class="th_details" colspan="5">Details</th>
12650          </tr>
12651          <tr class="entry_cont">
12652            <td class="entry_details" colspan="5">
12653              <p>The position of the camera device's lens optical center,<wbr/>
12654as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
12655optical center of the largest camera device facing in the
12656same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
12657axes</a>.<wbr/> Note that only the axis definitions are shared with
12658the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
12659<p>If this device is the largest or only camera device with a
12660given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
12661camera device with a lens optical center located 3 cm from
12662the main sensor along the +X axis (to the right from the
12663user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
12664<p>To transform a pixel coordinates between two cameras
12665facing the same direction,<wbr/> first the source camera
12666<a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/>  Then
12667the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
12668to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
12669of the source camera,<wbr/> the translation of the source camera
12670relative to the destination camera,<wbr/> the
12671<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
12672finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
12673of the destination camera.<wbr/> This obtains a
12674radial-distortion-free coordinate in the destination
12675camera pixel coordinates.<wbr/></p>
12676<p>To compare this against a real image from the destination
12677camera,<wbr/> the destination camera image then needs to be
12678corrected for radial distortion before comparison or
12679sampling.<wbr/></p>
12680            </td>
12681          </tr>
12682
12683
12684          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12685           <!-- end of entry -->
12686        
12687                
12688          <tr class="entry" id="static_android.lens.intrinsicCalibration">
12689            <td class="entry_name
12690             " rowspan="3">
12691              android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
12692            </td>
12693            <td class="entry_type">
12694                <span class="entry_type_name">float</span>
12695                <span class="entry_type_container">x</span>
12696
12697                <span class="entry_type_array">
12698                  5
12699                </span>
12700              <span class="entry_type_visibility"> [public]</span>
12701
12702
12703
12704
12705
12706
12707            </td> <!-- entry_type -->
12708
12709            <td class="entry_description">
12710              <p>The parameters for this camera device's intrinsic
12711calibration.<wbr/></p>
12712            </td>
12713
12714            <td class="entry_units">
12715              
12716            Pixels in the
12717            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
12718            coordinate system.<wbr/>
12719          
12720            </td>
12721
12722            <td class="entry_range">
12723            </td>
12724
12725            <td class="entry_tags">
12726              <ul class="entry_tags">
12727                  <li><a href="#tag_DEPTH">DEPTH</a></li>
12728              </ul>
12729            </td>
12730
12731          </tr>
12732          <tr class="entries_header">
12733            <th class="th_details" colspan="5">Details</th>
12734          </tr>
12735          <tr class="entry_cont">
12736            <td class="entry_details" colspan="5">
12737              <p>The five calibration parameters that describe the
12738transform from camera-centric 3D coordinates to sensor
12739pixel coordinates:</p>
12740<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
12741</code></pre>
12742<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
12743focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
12744axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
12745being aligned with the lens plane.<wbr/></p>
12746<p>These are typically used within a transformation matrix K:</p>
12747<pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
12748       0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
12749       0    0,<wbr/>   1 ]
12750</code></pre>
12751<p>which can then be combined with the camera pose rotation
12752<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
12753<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
12754complete transform from world coordinates to pixel
12755coordinates:</p>
12756<pre><code>P = [ K 0   * [ R t
12757     0 1 ]     0 1 ]
12758</code></pre>
12759<p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
12760and <code>p_<wbr/>s</code> being a point in the camera active pixel array
12761coordinate system,<wbr/> and with the mapping including the
12762homogeneous division by z:</p>
12763<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
12764p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
12765</code></pre>
12766<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
12767point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
12768(depth) in pixel coordinates.<wbr/></p>
12769<p>Note that the coordinate system for this transform is the
12770<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/>
12771where <code>(0,<wbr/>0)</code> is the top-left of the
12772preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
12773intrinsic calibration transforms have been applied to a
12774world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
12775transform needs to be applied,<wbr/> and the result adjusted to
12776be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
12777system (where <code>(0,<wbr/> 0)</code> is the top-left of the
12778activeArraySize rectangle),<wbr/> to determine the final pixel
12779coordinate of the world point for processed (non-RAW)
12780output buffers.<wbr/></p>
12781            </td>
12782          </tr>
12783
12784
12785          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12786           <!-- end of entry -->
12787        
12788                
12789          <tr class="entry" id="static_android.lens.radialDistortion">
12790            <td class="entry_name
12791             " rowspan="3">
12792              android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
12793            </td>
12794            <td class="entry_type">
12795                <span class="entry_type_name">float</span>
12796                <span class="entry_type_container">x</span>
12797
12798                <span class="entry_type_array">
12799                  6
12800                </span>
12801              <span class="entry_type_visibility"> [public]</span>
12802
12803
12804
12805
12806
12807
12808            </td> <!-- entry_type -->
12809
12810            <td class="entry_description">
12811              <p>The correction coefficients to correct for this camera device's
12812radial and tangential lens distortion.<wbr/></p>
12813            </td>
12814
12815            <td class="entry_units">
12816              
12817            Unitless coefficients.<wbr/>
12818          
12819            </td>
12820
12821            <td class="entry_range">
12822            </td>
12823
12824            <td class="entry_tags">
12825              <ul class="entry_tags">
12826                  <li><a href="#tag_DEPTH">DEPTH</a></li>
12827              </ul>
12828            </td>
12829
12830          </tr>
12831          <tr class="entries_header">
12832            <th class="th_details" colspan="5">Details</th>
12833          </tr>
12834          <tr class="entry_cont">
12835            <td class="entry_details" colspan="5">
12836              <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
12837kappa_<wbr/>3]</code> and two tangential distortion coefficients
12838<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
12839lens's geometric distortion with the mapping equations:</p>
12840<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 ) +
12841       kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
12842 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
12843       kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
12844</code></pre>
12845<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
12846input image that correspond to the pixel values in the
12847corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
12848<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
12849</code></pre>
12850<p>The pixel coordinates are defined in a normalized
12851coordinate system related to the
12852<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
12853Both <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
12854lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
12855of both x and y coordinates are normalized to be 1 at the
12856edge further from the optical center,<wbr/> so the range
12857for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
12858<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
12859optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
12860is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
12861<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
12862            </td>
12863          </tr>
12864
12865
12866          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12867           <!-- end of entry -->
12868        
12869        
12870
12871      <!-- end of kind -->
12872      </tbody>
12873      <tr><td colspan="6" class="kind">dynamic</td></tr>
12874
12875      <thead class="entries_header">
12876        <tr>
12877          <th class="th_name">Property Name</th>
12878          <th class="th_type">Type</th>
12879          <th class="th_description">Description</th>
12880          <th class="th_units">Units</th>
12881          <th class="th_range">Range</th>
12882          <th class="th_tags">Tags</th>
12883        </tr>
12884      </thead>
12885
12886      <tbody>
12887
12888        
12889
12890        
12891
12892        
12893
12894        
12895
12896                
12897          <tr class="entry" id="dynamic_android.lens.aperture">
12898            <td class="entry_name
12899             " rowspan="3">
12900              android.<wbr/>lens.<wbr/>aperture
12901            </td>
12902            <td class="entry_type">
12903                <span class="entry_type_name">float</span>
12904
12905              <span class="entry_type_visibility"> [public]</span>
12906
12907
12908              <span class="entry_type_hwlevel">[full] </span>
12909
12910
12911
12912
12913            </td> <!-- entry_type -->
12914
12915            <td class="entry_description">
12916              <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
12917effective aperture diameter.<wbr/></p>
12918            </td>
12919
12920            <td class="entry_units">
12921              The f-number (f/<wbr/>N)
12922            </td>
12923
12924            <td class="entry_range">
12925              <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
12926            </td>
12927
12928            <td class="entry_tags">
12929              <ul class="entry_tags">
12930                  <li><a href="#tag_V1">V1</a></li>
12931              </ul>
12932            </td>
12933
12934          </tr>
12935          <tr class="entries_header">
12936            <th class="th_details" colspan="5">Details</th>
12937          </tr>
12938          <tr class="entry_cont">
12939            <td class="entry_details" colspan="5">
12940              <p>Setting this value is only supported on the camera devices that have a variable
12941aperture lens.<wbr/></p>
12942<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
12943this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
12944<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>
12945to achieve manual exposure control.<wbr/></p>
12946<p>The requested aperture value may take several frames to reach the
12947requested value; the camera device will report the current (intermediate)
12948aperture size in capture result metadata while the aperture is changing.<wbr/>
12949While 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>
12950<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
12951the ON modes,<wbr/> this will be overridden by the camera device
12952auto-exposure algorithm,<wbr/> the overridden values are then provided
12953back to the user in the corresponding result.<wbr/></p>
12954            </td>
12955          </tr>
12956
12957
12958          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12959           <!-- end of entry -->
12960        
12961                
12962          <tr class="entry" id="dynamic_android.lens.filterDensity">
12963            <td class="entry_name
12964             " rowspan="3">
12965              android.<wbr/>lens.<wbr/>filter<wbr/>Density
12966            </td>
12967            <td class="entry_type">
12968                <span class="entry_type_name">float</span>
12969
12970              <span class="entry_type_visibility"> [public]</span>
12971
12972
12973              <span class="entry_type_hwlevel">[full] </span>
12974
12975
12976
12977
12978            </td> <!-- entry_type -->
12979
12980            <td class="entry_description">
12981              <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
12982            </td>
12983
12984            <td class="entry_units">
12985              Exposure Value (EV)
12986            </td>
12987
12988            <td class="entry_range">
12989              <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
12990            </td>
12991
12992            <td class="entry_tags">
12993              <ul class="entry_tags">
12994                  <li><a href="#tag_V1">V1</a></li>
12995              </ul>
12996            </td>
12997
12998          </tr>
12999          <tr class="entries_header">
13000            <th class="th_details" colspan="5">Details</th>
13001          </tr>
13002          <tr class="entry_cont">
13003            <td class="entry_details" colspan="5">
13004              <p>This control will not be supported on most camera devices.<wbr/></p>
13005<p>Lens filters are typically used to lower the amount of light the
13006sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
13007step is the standard logarithmic representation,<wbr/> which are
13008non-negative,<wbr/> and inversely proportional to the amount of light
13009hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
13010in no reduction of the incoming light,<wbr/> and setting this to 2 would
13011mean that the filter is set to reduce incoming light by two stops
13012(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
13013<p>It may take several frames before the lens filter density changes
13014to the requested value.<wbr/> While the filter density is still changing,<wbr/>
13015<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
13016            </td>
13017          </tr>
13018
13019
13020          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13021           <!-- end of entry -->
13022        
13023                
13024          <tr class="entry" id="dynamic_android.lens.focalLength">
13025            <td class="entry_name
13026             " rowspan="3">
13027              android.<wbr/>lens.<wbr/>focal<wbr/>Length
13028            </td>
13029            <td class="entry_type">
13030                <span class="entry_type_name">float</span>
13031
13032              <span class="entry_type_visibility"> [public]</span>
13033
13034
13035              <span class="entry_type_hwlevel">[legacy] </span>
13036
13037
13038
13039
13040            </td> <!-- entry_type -->
13041
13042            <td class="entry_description">
13043              <p>The desired lens focal length; used for optical zoom.<wbr/></p>
13044            </td>
13045
13046            <td class="entry_units">
13047              Millimeters
13048            </td>
13049
13050            <td class="entry_range">
13051              <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
13052            </td>
13053
13054            <td class="entry_tags">
13055              <ul class="entry_tags">
13056                  <li><a href="#tag_BC">BC</a></li>
13057              </ul>
13058            </td>
13059
13060          </tr>
13061          <tr class="entries_header">
13062            <th class="th_details" colspan="5">Details</th>
13063          </tr>
13064          <tr class="entry_cont">
13065            <td class="entry_details" colspan="5">
13066              <p>This setting controls the physical focal length of the camera
13067device's lens.<wbr/> Changing the focal length changes the field of
13068view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
13069<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
13070setting won't be applied instantaneously,<wbr/> and it may take several
13071frames before the lens can change to the requested focal length.<wbr/>
13072While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
13073be set to MOVING.<wbr/></p>
13074<p>Optical zoom will not be supported on most devices.<wbr/></p>
13075            </td>
13076          </tr>
13077
13078
13079          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13080           <!-- end of entry -->
13081        
13082                
13083          <tr class="entry" id="dynamic_android.lens.focusDistance">
13084            <td class="entry_name
13085             " rowspan="3">
13086              android.<wbr/>lens.<wbr/>focus<wbr/>Distance
13087            </td>
13088            <td class="entry_type">
13089                <span class="entry_type_name">float</span>
13090
13091              <span class="entry_type_visibility"> [public]</span>
13092
13093
13094              <span class="entry_type_hwlevel">[full] </span>
13095
13096
13097
13098
13099            </td> <!-- entry_type -->
13100
13101            <td class="entry_description">
13102              <p>Desired distance to plane of sharpest focus,<wbr/>
13103measured from frontmost surface of the lens.<wbr/></p>
13104            </td>
13105
13106            <td class="entry_units">
13107              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13108            </td>
13109
13110            <td class="entry_range">
13111              <p>&gt;= 0</p>
13112            </td>
13113
13114            <td class="entry_tags">
13115              <ul class="entry_tags">
13116                  <li><a href="#tag_BC">BC</a></li>
13117              </ul>
13118            </td>
13119
13120          </tr>
13121          <tr class="entries_header">
13122            <th class="th_details" colspan="5">Details</th>
13123          </tr>
13124          <tr class="entry_cont">
13125            <td class="entry_details" colspan="5">
13126              <p>Should be zero for fixed-focus cameras</p>
13127            </td>
13128          </tr>
13129
13130
13131          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13132           <!-- end of entry -->
13133        
13134                
13135          <tr class="entry" id="dynamic_android.lens.focusRange">
13136            <td class="entry_name
13137             " rowspan="3">
13138              android.<wbr/>lens.<wbr/>focus<wbr/>Range
13139            </td>
13140            <td class="entry_type">
13141                <span class="entry_type_name">float</span>
13142                <span class="entry_type_container">x</span>
13143
13144                <span class="entry_type_array">
13145                  2
13146                </span>
13147              <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
13148
13149
13150              <span class="entry_type_hwlevel">[limited] </span>
13151
13152
13153                <div class="entry_type_notes">Range of scene distances that are in focus</div>
13154
13155
13156            </td> <!-- entry_type -->
13157
13158            <td class="entry_description">
13159              <p>The range of scene distances that are in
13160sharp focus (depth of field).<wbr/></p>
13161            </td>
13162
13163            <td class="entry_units">
13164              A pair of focus distances in diopters: (near,<wbr/>
13165          far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
13166            </td>
13167
13168            <td class="entry_range">
13169              <p>&gt;=0</p>
13170            </td>
13171
13172            <td class="entry_tags">
13173              <ul class="entry_tags">
13174                  <li><a href="#tag_BC">BC</a></li>
13175              </ul>
13176            </td>
13177
13178          </tr>
13179          <tr class="entries_header">
13180            <th class="th_details" colspan="5">Details</th>
13181          </tr>
13182          <tr class="entry_cont">
13183            <td class="entry_details" colspan="5">
13184              <p>If variable focus not supported,<wbr/> can still report
13185fixed depth of field range</p>
13186            </td>
13187          </tr>
13188
13189
13190          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13191           <!-- end of entry -->
13192        
13193                
13194          <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
13195            <td class="entry_name
13196             " rowspan="3">
13197              android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
13198            </td>
13199            <td class="entry_type">
13200                <span class="entry_type_name entry_type_name_enum">byte</span>
13201
13202              <span class="entry_type_visibility"> [public]</span>
13203
13204
13205              <span class="entry_type_hwlevel">[limited] </span>
13206
13207
13208
13209                <ul class="entry_type_enum">
13210                  <li>
13211                    <span class="entry_type_enum_name">OFF</span>
13212                    <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
13213                  </li>
13214                  <li>
13215                    <span class="entry_type_enum_name">ON</span>
13216                    <span class="entry_type_enum_optional">[optional]</span>
13217                    <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
13218                  </li>
13219                </ul>
13220
13221            </td> <!-- entry_type -->
13222
13223            <td class="entry_description">
13224              <p>Sets whether the camera device uses optical image stabilization (OIS)
13225when capturing images.<wbr/></p>
13226            </td>
13227
13228            <td class="entry_units">
13229            </td>
13230
13231            <td class="entry_range">
13232              <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
13233            </td>
13234
13235            <td class="entry_tags">
13236              <ul class="entry_tags">
13237                  <li><a href="#tag_V1">V1</a></li>
13238              </ul>
13239            </td>
13240
13241          </tr>
13242          <tr class="entries_header">
13243            <th class="th_details" colspan="5">Details</th>
13244          </tr>
13245          <tr class="entry_cont">
13246            <td class="entry_details" colspan="5">
13247              <p>OIS is used to compensate for motion blur due to small
13248movements of the camera during capture.<wbr/> Unlike digital image
13249stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
13250makes use of mechanical elements to stabilize the camera
13251sensor,<wbr/> and thus allows for longer exposure times before
13252camera shake becomes apparent.<wbr/></p>
13253<p>Switching between different optical stabilization modes may take several
13254frames to initialize,<wbr/> the camera device will report the current mode in
13255capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
13256optical stabilization modes in the first several capture results may still
13257be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
13258<p>If a camera device supports both OIS and digital image stabilization
13259(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
13260interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
13261<p>Not all devices will support OIS; see
13262<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
13263available controls.<wbr/></p>
13264            </td>
13265          </tr>
13266
13267
13268          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13269           <!-- end of entry -->
13270        
13271                
13272          <tr class="entry" id="dynamic_android.lens.state">
13273            <td class="entry_name
13274             " rowspan="3">
13275              android.<wbr/>lens.<wbr/>state
13276            </td>
13277            <td class="entry_type">
13278                <span class="entry_type_name entry_type_name_enum">byte</span>
13279
13280              <span class="entry_type_visibility"> [public]</span>
13281
13282
13283              <span class="entry_type_hwlevel">[limited] </span>
13284
13285
13286
13287                <ul class="entry_type_enum">
13288                  <li>
13289                    <span class="entry_type_enum_name">STATIONARY</span>
13290                    <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/>
13291<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>
13292                  </li>
13293                  <li>
13294                    <span class="entry_type_enum_name">MOVING</span>
13295                    <span class="entry_type_enum_notes"><p>One or several of the lens parameters
13296(<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/>
13297<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
13298currently changing.<wbr/></p></span>
13299                  </li>
13300                </ul>
13301
13302            </td> <!-- entry_type -->
13303
13304            <td class="entry_description">
13305              <p>Current lens status.<wbr/></p>
13306            </td>
13307
13308            <td class="entry_units">
13309            </td>
13310
13311            <td class="entry_range">
13312            </td>
13313
13314            <td class="entry_tags">
13315              <ul class="entry_tags">
13316                  <li><a href="#tag_V1">V1</a></li>
13317              </ul>
13318            </td>
13319
13320          </tr>
13321          <tr class="entries_header">
13322            <th class="th_details" colspan="5">Details</th>
13323          </tr>
13324          <tr class="entry_cont">
13325            <td class="entry_details" colspan="5">
13326              <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/>
13327<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/>
13328they may take several frames to reach the requested values.<wbr/> This state indicates
13329the current status of the lens parameters.<wbr/></p>
13330<p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
13331either because the parameters are all fixed,<wbr/> or because the lens has had enough
13332time to reach the most recently-requested values.<wbr/>
13333If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
13334<ul>
13335<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
13336<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
13337<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/>
13338which means the optical zoom is not supported.<wbr/></li>
13339<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>
13340<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>
13341</ul>
13342<p>Then this state will always be STATIONARY.<wbr/></p>
13343<p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
13344is changing.<wbr/></p>
13345            </td>
13346          </tr>
13347
13348
13349          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13350           <!-- end of entry -->
13351        
13352                
13353          <tr class="entry" id="dynamic_android.lens.poseRotation">
13354            <td class="entry_name
13355             " rowspan="3">
13356              android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
13357            </td>
13358            <td class="entry_type">
13359                <span class="entry_type_name">float</span>
13360                <span class="entry_type_container">x</span>
13361
13362                <span class="entry_type_array">
13363                  4
13364                </span>
13365              <span class="entry_type_visibility"> [public]</span>
13366
13367
13368
13369
13370
13371
13372            </td> <!-- entry_type -->
13373
13374            <td class="entry_description">
13375              <p>The orientation of the camera relative to the sensor
13376coordinate system.<wbr/></p>
13377            </td>
13378
13379            <td class="entry_units">
13380              
13381            Quaternion coefficients
13382          
13383            </td>
13384
13385            <td class="entry_range">
13386            </td>
13387
13388            <td class="entry_tags">
13389              <ul class="entry_tags">
13390                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13391              </ul>
13392            </td>
13393
13394          </tr>
13395          <tr class="entries_header">
13396            <th class="th_details" colspan="5">Details</th>
13397          </tr>
13398          <tr class="entry_cont">
13399            <td class="entry_details" colspan="5">
13400              <p>The four coefficients that describe the quaternion
13401rotation from the Android sensor coordinate system to a
13402camera-aligned coordinate system where the X-axis is
13403aligned with the long side of the image sensor,<wbr/> the Y-axis
13404is aligned with the short side of the image sensor,<wbr/> and
13405the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
13406<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
13407to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
13408amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
13409<pre><code> theta = 2 * acos(w)
13410a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
13411a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
13412a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
13413</code></pre>
13414<p>To create a 3x3 rotation matrix that applies the rotation
13415defined by this quaternion,<wbr/> the following matrix can be
13416used:</p>
13417<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
13418           2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
13419           2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
13420</code></pre>
13421<p>This matrix can then be used to apply the rotation to a
13422 column vector point with</p>
13423<p><code>p' = Rp</code></p>
13424<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
13425 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
13426            </td>
13427          </tr>
13428
13429
13430          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13431           <!-- end of entry -->
13432        
13433                
13434          <tr class="entry" id="dynamic_android.lens.poseTranslation">
13435            <td class="entry_name
13436             " rowspan="3">
13437              android.<wbr/>lens.<wbr/>pose<wbr/>Translation
13438            </td>
13439            <td class="entry_type">
13440                <span class="entry_type_name">float</span>
13441                <span class="entry_type_container">x</span>
13442
13443                <span class="entry_type_array">
13444                  3
13445                </span>
13446              <span class="entry_type_visibility"> [public]</span>
13447
13448
13449
13450
13451
13452
13453            </td> <!-- entry_type -->
13454
13455            <td class="entry_description">
13456              <p>Position of the camera optical center.<wbr/></p>
13457            </td>
13458
13459            <td class="entry_units">
13460              Meters
13461            </td>
13462
13463            <td class="entry_range">
13464            </td>
13465
13466            <td class="entry_tags">
13467              <ul class="entry_tags">
13468                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13469              </ul>
13470            </td>
13471
13472          </tr>
13473          <tr class="entries_header">
13474            <th class="th_details" colspan="5">Details</th>
13475          </tr>
13476          <tr class="entry_cont">
13477            <td class="entry_details" colspan="5">
13478              <p>The position of the camera device's lens optical center,<wbr/>
13479as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
13480optical center of the largest camera device facing in the
13481same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
13482axes</a>.<wbr/> Note that only the axis definitions are shared with
13483the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
13484<p>If this device is the largest or only camera device with a
13485given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
13486camera device with a lens optical center located 3 cm from
13487the main sensor along the +X axis (to the right from the
13488user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
13489<p>To transform a pixel coordinates between two cameras
13490facing the same direction,<wbr/> first the source camera
13491<a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/>  Then
13492the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
13493to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
13494of the source camera,<wbr/> the translation of the source camera
13495relative to the destination camera,<wbr/> the
13496<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
13497finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
13498of the destination camera.<wbr/> This obtains a
13499radial-distortion-free coordinate in the destination
13500camera pixel coordinates.<wbr/></p>
13501<p>To compare this against a real image from the destination
13502camera,<wbr/> the destination camera image then needs to be
13503corrected for radial distortion before comparison or
13504sampling.<wbr/></p>
13505            </td>
13506          </tr>
13507
13508
13509          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13510           <!-- end of entry -->
13511        
13512                
13513          <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
13514            <td class="entry_name
13515             " rowspan="3">
13516              android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
13517            </td>
13518            <td class="entry_type">
13519                <span class="entry_type_name">float</span>
13520                <span class="entry_type_container">x</span>
13521
13522                <span class="entry_type_array">
13523                  5
13524                </span>
13525              <span class="entry_type_visibility"> [public]</span>
13526
13527
13528
13529
13530
13531
13532            </td> <!-- entry_type -->
13533
13534            <td class="entry_description">
13535              <p>The parameters for this camera device's intrinsic
13536calibration.<wbr/></p>
13537            </td>
13538
13539            <td class="entry_units">
13540              
13541            Pixels in the
13542            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
13543            coordinate system.<wbr/>
13544          
13545            </td>
13546
13547            <td class="entry_range">
13548            </td>
13549
13550            <td class="entry_tags">
13551              <ul class="entry_tags">
13552                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13553              </ul>
13554            </td>
13555
13556          </tr>
13557          <tr class="entries_header">
13558            <th class="th_details" colspan="5">Details</th>
13559          </tr>
13560          <tr class="entry_cont">
13561            <td class="entry_details" colspan="5">
13562              <p>The five calibration parameters that describe the
13563transform from camera-centric 3D coordinates to sensor
13564pixel coordinates:</p>
13565<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
13566</code></pre>
13567<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
13568focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
13569axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
13570being aligned with the lens plane.<wbr/></p>
13571<p>These are typically used within a transformation matrix K:</p>
13572<pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
13573       0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
13574       0    0,<wbr/>   1 ]
13575</code></pre>
13576<p>which can then be combined with the camera pose rotation
13577<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
13578<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
13579complete transform from world coordinates to pixel
13580coordinates:</p>
13581<pre><code>P = [ K 0   * [ R t
13582     0 1 ]     0 1 ]
13583</code></pre>
13584<p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
13585and <code>p_<wbr/>s</code> being a point in the camera active pixel array
13586coordinate system,<wbr/> and with the mapping including the
13587homogeneous division by z:</p>
13588<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
13589p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
13590</code></pre>
13591<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
13592point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
13593(depth) in pixel coordinates.<wbr/></p>
13594<p>Note that the coordinate system for this transform is the
13595<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/>
13596where <code>(0,<wbr/>0)</code> is the top-left of the
13597preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
13598intrinsic calibration transforms have been applied to a
13599world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
13600transform needs to be applied,<wbr/> and the result adjusted to
13601be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
13602system (where <code>(0,<wbr/> 0)</code> is the top-left of the
13603activeArraySize rectangle),<wbr/> to determine the final pixel
13604coordinate of the world point for processed (non-RAW)
13605output buffers.<wbr/></p>
13606            </td>
13607          </tr>
13608
13609
13610          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13611           <!-- end of entry -->
13612        
13613                
13614          <tr class="entry" id="dynamic_android.lens.radialDistortion">
13615            <td class="entry_name
13616             " rowspan="3">
13617              android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
13618            </td>
13619            <td class="entry_type">
13620                <span class="entry_type_name">float</span>
13621                <span class="entry_type_container">x</span>
13622
13623                <span class="entry_type_array">
13624                  6
13625                </span>
13626              <span class="entry_type_visibility"> [public]</span>
13627
13628
13629
13630
13631
13632
13633            </td> <!-- entry_type -->
13634
13635            <td class="entry_description">
13636              <p>The correction coefficients to correct for this camera device's
13637radial and tangential lens distortion.<wbr/></p>
13638            </td>
13639
13640            <td class="entry_units">
13641              
13642            Unitless coefficients.<wbr/>
13643          
13644            </td>
13645
13646            <td class="entry_range">
13647            </td>
13648
13649            <td class="entry_tags">
13650              <ul class="entry_tags">
13651                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13652              </ul>
13653            </td>
13654
13655          </tr>
13656          <tr class="entries_header">
13657            <th class="th_details" colspan="5">Details</th>
13658          </tr>
13659          <tr class="entry_cont">
13660            <td class="entry_details" colspan="5">
13661              <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13662kappa_<wbr/>3]</code> and two tangential distortion coefficients
13663<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13664lens's geometric distortion with the mapping equations:</p>
13665<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 ) +
13666       kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13667 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13668       kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13669</code></pre>
13670<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13671input image that correspond to the pixel values in the
13672corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13673<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13674</code></pre>
13675<p>The pixel coordinates are defined in a normalized
13676coordinate system related to the
13677<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
13678Both <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
13679lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
13680of both x and y coordinates are normalized to be 1 at the
13681edge further from the optical center,<wbr/> so the range
13682for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
13683<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13684optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
13685is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
13686<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13687            </td>
13688          </tr>
13689
13690
13691          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13692           <!-- end of entry -->
13693        
13694        
13695
13696      <!-- end of kind -->
13697      </tbody>
13698
13699  <!-- end of section -->
13700  <tr><td colspan="6" id="section_noiseReduction" class="section">noiseReduction</td></tr>
13701
13702
13703      <tr><td colspan="6" class="kind">controls</td></tr>
13704
13705      <thead class="entries_header">
13706        <tr>
13707          <th class="th_name">Property Name</th>
13708          <th class="th_type">Type</th>
13709          <th class="th_description">Description</th>
13710          <th class="th_units">Units</th>
13711          <th class="th_range">Range</th>
13712          <th class="th_tags">Tags</th>
13713        </tr>
13714      </thead>
13715
13716      <tbody>
13717
13718        
13719
13720        
13721
13722        
13723
13724        
13725
13726                
13727          <tr class="entry" id="controls_android.noiseReduction.mode">
13728            <td class="entry_name
13729             " rowspan="5">
13730              android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
13731            </td>
13732            <td class="entry_type">
13733                <span class="entry_type_name entry_type_name_enum">byte</span>
13734
13735              <span class="entry_type_visibility"> [public]</span>
13736
13737
13738              <span class="entry_type_hwlevel">[full] </span>
13739
13740
13741
13742                <ul class="entry_type_enum">
13743                  <li>
13744                    <span class="entry_type_enum_name">OFF</span>
13745                    <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
13746                  </li>
13747                  <li>
13748                    <span class="entry_type_enum_name">FAST</span>
13749                    <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
13750output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
13751relative to sensor.<wbr/></p></span>
13752                  </li>
13753                  <li>
13754                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
13755                    <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
13756rate relative to sensor output.<wbr/></p></span>
13757                  </li>
13758                  <li>
13759                    <span class="entry_type_enum_name">MINIMAL</span>
13760                    <span class="entry_type_enum_optional">[optional]</span>
13761                    <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
13762sensor output.<wbr/> </p></span>
13763                  </li>
13764                  <li>
13765                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
13766                    <span class="entry_type_enum_optional">[optional]</span>
13767                    <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
13768based 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
13769reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no
13770noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction
13771for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality
13772is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/>
13773quality may improve from FAST).<wbr/></p>
13774<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
13775with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
13776high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
13777produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
13778high-resolution buffers must not have noise reduction applied to maximize efficiency of
13779preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
13780low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
13781applied for reasonable preview quality.<wbr/></p>
13782<p>This mode is guaranteed to be supported by devices that support either the
13783YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
13784(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
13785be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
13786                  </li>
13787                </ul>
13788
13789            </td> <!-- entry_type -->
13790
13791            <td class="entry_description">
13792              <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
13793            </td>
13794
13795            <td class="entry_units">
13796            </td>
13797
13798            <td class="entry_range">
13799              <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
13800            </td>
13801
13802            <td class="entry_tags">
13803              <ul class="entry_tags">
13804                  <li><a href="#tag_V1">V1</a></li>
13805                  <li><a href="#tag_REPROC">REPROC</a></li>
13806              </ul>
13807            </td>
13808
13809          </tr>
13810          <tr class="entries_header">
13811            <th class="th_details" colspan="5">Details</th>
13812          </tr>
13813          <tr class="entry_cont">
13814            <td class="entry_details" colspan="5">
13815              <p>The noise reduction algorithm attempts to improve image quality by removing
13816excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
13817<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
13818YUV domain.<wbr/></p>
13819<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
13820demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
13821This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
13822<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>
13823<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
13824will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
13825will use the highest-quality noise filtering algorithms,<wbr/>
13826even if it slows down capture rate.<wbr/> FAST means the camera device will not
13827slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
13828MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
13829Every output stream will have a similar amount of enhancement applied.<wbr/></p>
13830<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
13831buffer of high-resolution images during preview and reprocess image(s) from that buffer
13832into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
13833noise reduction to low-resolution streams (below maximum recording resolution) to maximize
13834preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
13835those will be reprocessed later if necessary.<wbr/></p>
13836<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
13837will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
13838may adjust the noise reduction parameters for best image quality based on the
13839<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
13840            </td>
13841          </tr>
13842
13843          <tr class="entries_header">
13844            <th class="th_details" colspan="5">HAL Implementation Details</th>
13845          </tr>
13846          <tr class="entry_cont">
13847            <td class="entry_details" colspan="5">
13848              <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
13849adjust the internal noise reduction parameters appropriately to get the best quality
13850images.<wbr/></p>
13851            </td>
13852          </tr>
13853
13854          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13855           <!-- end of entry -->
13856        
13857                
13858          <tr class="entry" id="controls_android.noiseReduction.strength">
13859            <td class="entry_name
13860             " rowspan="1">
13861              android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
13862            </td>
13863            <td class="entry_type">
13864                <span class="entry_type_name">byte</span>
13865
13866              <span class="entry_type_visibility"> [system]</span>
13867
13868
13869
13870
13871
13872
13873            </td> <!-- entry_type -->
13874
13875            <td class="entry_description">
13876              <p>Control the amount of noise reduction
13877applied to the images</p>
13878            </td>
13879
13880            <td class="entry_units">
13881              1-10; 10 is max noise reduction
13882            </td>
13883
13884            <td class="entry_range">
13885              <p>1 - 10</p>
13886            </td>
13887
13888            <td class="entry_tags">
13889              <ul class="entry_tags">
13890                  <li><a href="#tag_FUTURE">FUTURE</a></li>
13891              </ul>
13892            </td>
13893
13894          </tr>
13895
13896
13897          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13898           <!-- end of entry -->
13899        
13900        
13901
13902      <!-- end of kind -->
13903      </tbody>
13904      <tr><td colspan="6" class="kind">static</td></tr>
13905
13906      <thead class="entries_header">
13907        <tr>
13908          <th class="th_name">Property Name</th>
13909          <th class="th_type">Type</th>
13910          <th class="th_description">Description</th>
13911          <th class="th_units">Units</th>
13912          <th class="th_range">Range</th>
13913          <th class="th_tags">Tags</th>
13914        </tr>
13915      </thead>
13916
13917      <tbody>
13918
13919        
13920
13921        
13922
13923        
13924
13925        
13926
13927                
13928          <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
13929            <td class="entry_name
13930             " rowspan="5">
13931              android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
13932            </td>
13933            <td class="entry_type">
13934                <span class="entry_type_name">byte</span>
13935                <span class="entry_type_container">x</span>
13936
13937                <span class="entry_type_array">
13938                  n
13939                </span>
13940              <span class="entry_type_visibility"> [public as enumList]</span>
13941
13942
13943              <span class="entry_type_hwlevel">[limited] </span>
13944
13945
13946                <div class="entry_type_notes">list of enums</div>
13947
13948
13949            </td> <!-- entry_type -->
13950
13951            <td class="entry_description">
13952              <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
13953by this camera device.<wbr/></p>
13954            </td>
13955
13956            <td class="entry_units">
13957            </td>
13958
13959            <td class="entry_range">
13960              <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
13961            </td>
13962
13963            <td class="entry_tags">
13964              <ul class="entry_tags">
13965                  <li><a href="#tag_V1">V1</a></li>
13966                  <li><a href="#tag_REPROC">REPROC</a></li>
13967              </ul>
13968            </td>
13969
13970          </tr>
13971          <tr class="entries_header">
13972            <th class="th_details" colspan="5">Details</th>
13973          </tr>
13974          <tr class="entry_cont">
13975            <td class="entry_details" colspan="5">
13976              <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
13977<p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support
13978ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p>
13979<p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
13980            </td>
13981          </tr>
13982
13983          <tr class="entries_header">
13984            <th class="th_details" colspan="5">HAL Implementation Details</th>
13985          </tr>
13986          <tr class="entry_cont">
13987            <td class="entry_details" colspan="5">
13988              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
13989on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
13990That is,<wbr/> if the highest quality implementation on the camera device does not slow down
13991capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
13992            </td>
13993          </tr>
13994
13995          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13996           <!-- end of entry -->
13997        
13998        
13999
14000      <!-- end of kind -->
14001      </tbody>
14002      <tr><td colspan="6" class="kind">dynamic</td></tr>
14003
14004      <thead class="entries_header">
14005        <tr>
14006          <th class="th_name">Property Name</th>
14007          <th class="th_type">Type</th>
14008          <th class="th_description">Description</th>
14009          <th class="th_units">Units</th>
14010          <th class="th_range">Range</th>
14011          <th class="th_tags">Tags</th>
14012        </tr>
14013      </thead>
14014
14015      <tbody>
14016
14017        
14018
14019        
14020
14021        
14022
14023        
14024
14025                
14026          <tr class="entry" id="dynamic_android.noiseReduction.mode">
14027            <td class="entry_name
14028             " rowspan="5">
14029              android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
14030            </td>
14031            <td class="entry_type">
14032                <span class="entry_type_name entry_type_name_enum">byte</span>
14033
14034              <span class="entry_type_visibility"> [public]</span>
14035
14036
14037              <span class="entry_type_hwlevel">[full] </span>
14038
14039
14040
14041                <ul class="entry_type_enum">
14042                  <li>
14043                    <span class="entry_type_enum_name">OFF</span>
14044                    <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
14045                  </li>
14046                  <li>
14047                    <span class="entry_type_enum_name">FAST</span>
14048                    <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
14049output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
14050relative to sensor.<wbr/></p></span>
14051                  </li>
14052                  <li>
14053                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
14054                    <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
14055rate relative to sensor output.<wbr/></p></span>
14056                  </li>
14057                  <li>
14058                    <span class="entry_type_enum_name">MINIMAL</span>
14059                    <span class="entry_type_enum_optional">[optional]</span>
14060                    <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
14061sensor output.<wbr/> </p></span>
14062                  </li>
14063                  <li>
14064                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
14065                    <span class="entry_type_enum_optional">[optional]</span>
14066                    <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
14067based 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
14068reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no
14069noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction
14070for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality
14071is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/>
14072quality may improve from FAST).<wbr/></p>
14073<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
14074with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
14075high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
14076produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
14077high-resolution buffers must not have noise reduction applied to maximize efficiency of
14078preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
14079low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
14080applied for reasonable preview quality.<wbr/></p>
14081<p>This mode is guaranteed to be supported by devices that support either the
14082YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
14083(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
14084be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
14085                  </li>
14086                </ul>
14087
14088            </td> <!-- entry_type -->
14089
14090            <td class="entry_description">
14091              <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
14092            </td>
14093
14094            <td class="entry_units">
14095            </td>
14096
14097            <td class="entry_range">
14098              <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
14099            </td>
14100
14101            <td class="entry_tags">
14102              <ul class="entry_tags">
14103                  <li><a href="#tag_V1">V1</a></li>
14104                  <li><a href="#tag_REPROC">REPROC</a></li>
14105              </ul>
14106            </td>
14107
14108          </tr>
14109          <tr class="entries_header">
14110            <th class="th_details" colspan="5">Details</th>
14111          </tr>
14112          <tr class="entry_cont">
14113            <td class="entry_details" colspan="5">
14114              <p>The noise reduction algorithm attempts to improve image quality by removing
14115excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
14116<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
14117YUV domain.<wbr/></p>
14118<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
14119demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
14120This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
14121<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>
14122<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
14123will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
14124will use the highest-quality noise filtering algorithms,<wbr/>
14125even if it slows down capture rate.<wbr/> FAST means the camera device will not
14126slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
14127MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
14128Every output stream will have a similar amount of enhancement applied.<wbr/></p>
14129<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
14130buffer of high-resolution images during preview and reprocess image(s) from that buffer
14131into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
14132noise reduction to low-resolution streams (below maximum recording resolution) to maximize
14133preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
14134those will be reprocessed later if necessary.<wbr/></p>
14135<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
14136will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
14137may adjust the noise reduction parameters for best image quality based on the
14138<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
14139            </td>
14140          </tr>
14141
14142          <tr class="entries_header">
14143            <th class="th_details" colspan="5">HAL Implementation Details</th>
14144          </tr>
14145          <tr class="entry_cont">
14146            <td class="entry_details" colspan="5">
14147              <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
14148adjust the internal noise reduction parameters appropriately to get the best quality
14149images.<wbr/></p>
14150            </td>
14151          </tr>
14152
14153          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14154           <!-- end of entry -->
14155        
14156        
14157
14158      <!-- end of kind -->
14159      </tbody>
14160
14161  <!-- end of section -->
14162  <tr><td colspan="6" id="section_quirks" class="section">quirks</td></tr>
14163
14164
14165      <tr><td colspan="6" class="kind">static</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="static_android.quirks.meteringCropRegion">
14190            <td class="entry_name
14191                entry_name_deprecated
14192             " rowspan="3">
14193              android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
14194            </td>
14195            <td class="entry_type">
14196                <span class="entry_type_name">byte</span>
14197
14198              <span class="entry_type_visibility"> [system]</span>
14199
14200
14201
14202              <span class="entry_type_deprecated">[deprecated] </span>
14203
14204
14205
14206            </td> <!-- entry_type -->
14207
14208            <td class="entry_description">
14209              <p>If set to 1,<wbr/> the camera service does not
14210scale 'normalized' coordinates with respect to the crop
14211region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
14212and output (face rectangles).<wbr/></p>
14213            </td>
14214
14215            <td class="entry_units">
14216            </td>
14217
14218            <td class="entry_range">
14219              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14220            </td>
14221
14222            <td class="entry_tags">
14223            </td>
14224
14225          </tr>
14226          <tr class="entries_header">
14227            <th class="th_details" colspan="5">Details</th>
14228          </tr>
14229          <tr class="entry_cont">
14230            <td class="entry_details" colspan="5">
14231              <p>Normalized coordinates refer to those in the
14232(-1000,<wbr/>1000) range mentioned in the
14233android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
14234<p>HAL implementations should instead always use and emit
14235sensor array-relative coordinates for all region data.<wbr/> Does
14236not need to be listed in static metadata.<wbr/> Support will be
14237removed in future versions of camera service.<wbr/></p>
14238            </td>
14239          </tr>
14240
14241
14242          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14243           <!-- end of entry -->
14244        
14245                
14246          <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
14247            <td class="entry_name
14248                entry_name_deprecated
14249             " rowspan="3">
14250              android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
14251            </td>
14252            <td class="entry_type">
14253                <span class="entry_type_name">byte</span>
14254
14255              <span class="entry_type_visibility"> [system]</span>
14256
14257
14258
14259              <span class="entry_type_deprecated">[deprecated] </span>
14260
14261
14262
14263            </td> <!-- entry_type -->
14264
14265            <td class="entry_description">
14266              <p>If set to 1,<wbr/> then the camera service always
14267switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
14268trigger.<wbr/></p>
14269            </td>
14270
14271            <td class="entry_units">
14272            </td>
14273
14274            <td class="entry_range">
14275              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14276            </td>
14277
14278            <td class="entry_tags">
14279            </td>
14280
14281          </tr>
14282          <tr class="entries_header">
14283            <th class="th_details" colspan="5">Details</th>
14284          </tr>
14285          <tr class="entry_cont">
14286            <td class="entry_details" colspan="5">
14287              <p>HAL implementations should implement AF trigger
14288modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
14289CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
14290not need to be listed in static metadata.<wbr/> Support will be
14291removed in future versions of camera service</p>
14292            </td>
14293          </tr>
14294
14295
14296          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14297           <!-- end of entry -->
14298        
14299                
14300          <tr class="entry" id="static_android.quirks.useZslFormat">
14301            <td class="entry_name
14302                entry_name_deprecated
14303             " rowspan="3">
14304              android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
14305            </td>
14306            <td class="entry_type">
14307                <span class="entry_type_name">byte</span>
14308
14309              <span class="entry_type_visibility"> [system]</span>
14310
14311
14312
14313              <span class="entry_type_deprecated">[deprecated] </span>
14314
14315
14316
14317            </td> <!-- entry_type -->
14318
14319            <td class="entry_description">
14320              <p>If set to 1,<wbr/> the camera service uses
14321CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
14322HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
14323shutter lag stream</p>
14324            </td>
14325
14326            <td class="entry_units">
14327            </td>
14328
14329            <td class="entry_range">
14330              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14331            </td>
14332
14333            <td class="entry_tags">
14334            </td>
14335
14336          </tr>
14337          <tr class="entries_header">
14338            <th class="th_details" colspan="5">Details</th>
14339          </tr>
14340          <tr class="entry_cont">
14341            <td class="entry_details" colspan="5">
14342              <p>HAL implementations should use gralloc usage flags
14343to determine that a stream will be used for
14344zero-shutter-lag,<wbr/> instead of relying on an explicit
14345format setting.<wbr/> Does not need to be listed in static
14346metadata.<wbr/> Support will be removed in future versions of
14347camera service.<wbr/></p>
14348            </td>
14349          </tr>
14350
14351
14352          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14353           <!-- end of entry -->
14354        
14355                
14356          <tr class="entry" id="static_android.quirks.usePartialResult">
14357            <td class="entry_name
14358                entry_name_deprecated
14359             " rowspan="5">
14360              android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
14361            </td>
14362            <td class="entry_type">
14363                <span class="entry_type_name">byte</span>
14364
14365              <span class="entry_type_visibility"> [hidden]</span>
14366
14367
14368
14369              <span class="entry_type_deprecated">[deprecated] </span>
14370
14371
14372
14373            </td> <!-- entry_type -->
14374
14375            <td class="entry_description">
14376              <p>If set to 1,<wbr/> the HAL will always split result
14377metadata for a single capture into multiple buffers,<wbr/>
14378returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
14379            </td>
14380
14381            <td class="entry_units">
14382            </td>
14383
14384            <td class="entry_range">
14385              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14386            </td>
14387
14388            <td class="entry_tags">
14389            </td>
14390
14391          </tr>
14392          <tr class="entries_header">
14393            <th class="th_details" colspan="5">Details</th>
14394          </tr>
14395          <tr class="entry_cont">
14396            <td class="entry_details" colspan="5">
14397              <p>Does not need to be listed in static
14398metadata.<wbr/> Support for partial results will be reworked in
14399future versions of camera service.<wbr/> This quirk will stop
14400working at that point; DO NOT USE without careful
14401consideration of future support.<wbr/></p>
14402            </td>
14403          </tr>
14404
14405          <tr class="entries_header">
14406            <th class="th_details" colspan="5">HAL Implementation Details</th>
14407          </tr>
14408          <tr class="entry_cont">
14409            <td class="entry_details" colspan="5">
14410              <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
14411for information on how to implement partial results.<wbr/></p>
14412            </td>
14413          </tr>
14414
14415          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14416           <!-- end of entry -->
14417        
14418        
14419
14420      <!-- end of kind -->
14421      </tbody>
14422      <tr><td colspan="6" class="kind">dynamic</td></tr>
14423
14424      <thead class="entries_header">
14425        <tr>
14426          <th class="th_name">Property Name</th>
14427          <th class="th_type">Type</th>
14428          <th class="th_description">Description</th>
14429          <th class="th_units">Units</th>
14430          <th class="th_range">Range</th>
14431          <th class="th_tags">Tags</th>
14432        </tr>
14433      </thead>
14434
14435      <tbody>
14436
14437        
14438
14439        
14440
14441        
14442
14443        
14444
14445                
14446          <tr class="entry" id="dynamic_android.quirks.partialResult">
14447            <td class="entry_name
14448                entry_name_deprecated
14449             " rowspan="5">
14450              android.<wbr/>quirks.<wbr/>partial<wbr/>Result
14451            </td>
14452            <td class="entry_type">
14453                <span class="entry_type_name entry_type_name_enum">byte</span>
14454
14455              <span class="entry_type_visibility"> [hidden as boolean]</span>
14456
14457
14458
14459              <span class="entry_type_deprecated">[deprecated] </span>
14460
14461
14462                <ul class="entry_type_enum">
14463                  <li>
14464                    <span class="entry_type_enum_name">FINAL</span>
14465                    <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
14466for this capture.<wbr/></p></span>
14467                  </li>
14468                  <li>
14469                    <span class="entry_type_enum_name">PARTIAL</span>
14470                    <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
14471capture.<wbr/> More result buffers for this capture will be sent
14472by the camera device,<wbr/> the last of which will be marked
14473FINAL.<wbr/></p></span>
14474                  </li>
14475                </ul>
14476
14477            </td> <!-- entry_type -->
14478
14479            <td class="entry_description">
14480              <p>Whether a result given to the framework is the
14481final one for the capture,<wbr/> or only a partial that contains a
14482subset of the full set of dynamic metadata
14483values.<wbr/></p>
14484            </td>
14485
14486            <td class="entry_units">
14487            </td>
14488
14489            <td class="entry_range">
14490              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14491              <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
14492            </td>
14493
14494            <td class="entry_tags">
14495            </td>
14496
14497          </tr>
14498          <tr class="entries_header">
14499            <th class="th_details" colspan="5">Details</th>
14500          </tr>
14501          <tr class="entry_cont">
14502            <td class="entry_details" colspan="5">
14503              <p>The entries in the result metadata buffers for a
14504single capture may not overlap,<wbr/> except for this entry.<wbr/> The
14505FINAL buffers must retain FIFO ordering relative to the
14506requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
14507always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
14508before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
14509in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
14510capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
14511only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
14512            </td>
14513          </tr>
14514
14515          <tr class="entries_header">
14516            <th class="th_details" colspan="5">HAL Implementation Details</th>
14517          </tr>
14518          <tr class="entry_cont">
14519            <td class="entry_details" colspan="5">
14520              <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
14521for information on how to implement partial results.<wbr/></p>
14522            </td>
14523          </tr>
14524
14525          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14526           <!-- end of entry -->
14527        
14528        
14529
14530      <!-- end of kind -->
14531      </tbody>
14532
14533  <!-- end of section -->
14534  <tr><td colspan="6" id="section_request" class="section">request</td></tr>
14535
14536
14537      <tr><td colspan="6" class="kind">controls</td></tr>
14538
14539      <thead class="entries_header">
14540        <tr>
14541          <th class="th_name">Property Name</th>
14542          <th class="th_type">Type</th>
14543          <th class="th_description">Description</th>
14544          <th class="th_units">Units</th>
14545          <th class="th_range">Range</th>
14546          <th class="th_tags">Tags</th>
14547        </tr>
14548      </thead>
14549
14550      <tbody>
14551
14552        
14553
14554        
14555
14556        
14557
14558        
14559
14560                
14561          <tr class="entry" id="controls_android.request.frameCount">
14562            <td class="entry_name
14563                entry_name_deprecated
14564             " rowspan="1">
14565              android.<wbr/>request.<wbr/>frame<wbr/>Count
14566            </td>
14567            <td class="entry_type">
14568                <span class="entry_type_name">int32</span>
14569
14570              <span class="entry_type_visibility"> [system]</span>
14571
14572
14573
14574              <span class="entry_type_deprecated">[deprecated] </span>
14575
14576
14577
14578            </td> <!-- entry_type -->
14579
14580            <td class="entry_description">
14581              <p>A frame counter set by the framework.<wbr/> Must
14582be maintained unchanged in output frame.<wbr/> This value monotonically
14583increases with every new result (that is,<wbr/> each new result has a unique
14584frameCount value).<wbr/></p>
14585            </td>
14586
14587            <td class="entry_units">
14588              incrementing integer
14589            </td>
14590
14591            <td class="entry_range">
14592              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14593              <p>Any int.<wbr/></p>
14594            </td>
14595
14596            <td class="entry_tags">
14597            </td>
14598
14599          </tr>
14600
14601
14602          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14603           <!-- end of entry -->
14604        
14605                
14606          <tr class="entry" id="controls_android.request.id">
14607            <td class="entry_name
14608             " rowspan="1">
14609              android.<wbr/>request.<wbr/>id
14610            </td>
14611            <td class="entry_type">
14612                <span class="entry_type_name">int32</span>
14613
14614              <span class="entry_type_visibility"> [hidden]</span>
14615
14616
14617
14618
14619
14620
14621            </td> <!-- entry_type -->
14622
14623            <td class="entry_description">
14624              <p>An application-specified ID for the current
14625request.<wbr/> Must be maintained unchanged in output
14626frame</p>
14627            </td>
14628
14629            <td class="entry_units">
14630              arbitrary integer assigned by application
14631            </td>
14632
14633            <td class="entry_range">
14634              <p>Any int</p>
14635            </td>
14636
14637            <td class="entry_tags">
14638              <ul class="entry_tags">
14639                  <li><a href="#tag_V1">V1</a></li>
14640              </ul>
14641            </td>
14642
14643          </tr>
14644
14645
14646          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14647           <!-- end of entry -->
14648        
14649                
14650          <tr class="entry" id="controls_android.request.inputStreams">
14651            <td class="entry_name
14652                entry_name_deprecated
14653             " rowspan="3">
14654              android.<wbr/>request.<wbr/>input<wbr/>Streams
14655            </td>
14656            <td class="entry_type">
14657                <span class="entry_type_name">int32</span>
14658                <span class="entry_type_container">x</span>
14659
14660                <span class="entry_type_array">
14661                  n
14662                </span>
14663              <span class="entry_type_visibility"> [system]</span>
14664
14665
14666
14667              <span class="entry_type_deprecated">[deprecated] </span>
14668
14669
14670
14671            </td> <!-- entry_type -->
14672
14673            <td class="entry_description">
14674              <p>List which camera reprocess stream is used
14675for the source of reprocessing data.<wbr/></p>
14676            </td>
14677
14678            <td class="entry_units">
14679              List of camera reprocess stream IDs
14680            </td>
14681
14682            <td class="entry_range">
14683              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14684              <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
14685            </td>
14686
14687            <td class="entry_tags">
14688              <ul class="entry_tags">
14689                  <li><a href="#tag_HAL2">HAL2</a></li>
14690              </ul>
14691            </td>
14692
14693          </tr>
14694          <tr class="entries_header">
14695            <th class="th_details" colspan="5">Details</th>
14696          </tr>
14697          <tr class="entry_cont">
14698            <td class="entry_details" colspan="5">
14699              <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
14700REPROCESS.<wbr/> Ignored otherwise</p>
14701            </td>
14702          </tr>
14703
14704
14705          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14706           <!-- end of entry -->
14707        
14708                
14709          <tr class="entry" id="controls_android.request.metadataMode">
14710            <td class="entry_name
14711             " rowspan="1">
14712              android.<wbr/>request.<wbr/>metadata<wbr/>Mode
14713            </td>
14714            <td class="entry_type">
14715                <span class="entry_type_name entry_type_name_enum">byte</span>
14716
14717              <span class="entry_type_visibility"> [system]</span>
14718
14719
14720
14721
14722
14723                <ul class="entry_type_enum">
14724                  <li>
14725                    <span class="entry_type_enum_name">NONE</span>
14726                    <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
14727for application-bound buffer data.<wbr/> If no
14728application-bound streams exist,<wbr/> no frame should be
14729placed in the output frame queue.<wbr/> If such streams
14730exist,<wbr/> a frame should be placed on the output queue
14731with null metadata but with the necessary output buffer
14732information.<wbr/> Timestamp information should still be
14733included with any output stream buffers</p></span>
14734                  </li>
14735                  <li>
14736                    <span class="entry_type_enum_name">FULL</span>
14737                    <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
14738only be produced if they are separately
14739enabled</p></span>
14740                  </li>
14741                </ul>
14742
14743            </td> <!-- entry_type -->
14744
14745            <td class="entry_description">
14746              <p>How much metadata to produce on
14747output</p>
14748            </td>
14749
14750            <td class="entry_units">
14751            </td>
14752
14753            <td class="entry_range">
14754            </td>
14755
14756            <td class="entry_tags">
14757              <ul class="entry_tags">
14758                  <li><a href="#tag_FUTURE">FUTURE</a></li>
14759              </ul>
14760            </td>
14761
14762          </tr>
14763
14764
14765          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14766           <!-- end of entry -->
14767        
14768                
14769          <tr class="entry" id="controls_android.request.outputStreams">
14770            <td class="entry_name
14771                entry_name_deprecated
14772             " rowspan="3">
14773              android.<wbr/>request.<wbr/>output<wbr/>Streams
14774            </td>
14775            <td class="entry_type">
14776                <span class="entry_type_name">int32</span>
14777                <span class="entry_type_container">x</span>
14778
14779                <span class="entry_type_array">
14780                  n
14781                </span>
14782              <span class="entry_type_visibility"> [system]</span>
14783
14784
14785
14786              <span class="entry_type_deprecated">[deprecated] </span>
14787
14788
14789
14790            </td> <!-- entry_type -->
14791
14792            <td class="entry_description">
14793              <p>Lists which camera output streams image data
14794from this capture must be sent to</p>
14795            </td>
14796
14797            <td class="entry_units">
14798              List of camera stream IDs
14799            </td>
14800
14801            <td class="entry_range">
14802              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14803              <p>List must only include streams that have been
14804created</p>
14805            </td>
14806
14807            <td class="entry_tags">
14808              <ul class="entry_tags">
14809                  <li><a href="#tag_HAL2">HAL2</a></li>
14810              </ul>
14811            </td>
14812
14813          </tr>
14814          <tr class="entries_header">
14815            <th class="th_details" colspan="5">Details</th>
14816          </tr>
14817          <tr class="entry_cont">
14818            <td class="entry_details" colspan="5">
14819              <p>If no output streams are listed,<wbr/> then the image
14820data should simply be discarded.<wbr/> The image data must
14821still be captured for metadata and statistics production,<wbr/>
14822and the lens and flash must operate as requested.<wbr/></p>
14823            </td>
14824          </tr>
14825
14826
14827          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14828           <!-- end of entry -->
14829        
14830                
14831          <tr class="entry" id="controls_android.request.type">
14832            <td class="entry_name
14833                entry_name_deprecated
14834             " rowspan="1">
14835              android.<wbr/>request.<wbr/>type
14836            </td>
14837            <td class="entry_type">
14838                <span class="entry_type_name entry_type_name_enum">byte</span>
14839
14840              <span class="entry_type_visibility"> [system]</span>
14841
14842
14843
14844              <span class="entry_type_deprecated">[deprecated] </span>
14845
14846
14847                <ul class="entry_type_enum">
14848                  <li>
14849                    <span class="entry_type_enum_name">CAPTURE</span>
14850                    <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
14851and process it according to the
14852settings</p></span>
14853                  </li>
14854                  <li>
14855                    <span class="entry_type_enum_name">REPROCESS</span>
14856                    <span class="entry_type_enum_notes"><p>Process previously captured data; the
14857<a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
14858source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
14859needed for reprocessing with [RP]</p></span>
14860                  </li>
14861                </ul>
14862
14863            </td> <!-- entry_type -->
14864
14865            <td class="entry_description">
14866              <p>The type of the request; either CAPTURE or
14867REPROCESS.<wbr/> For HAL3,<wbr/> this tag is redundant.<wbr/></p>
14868            </td>
14869
14870            <td class="entry_units">
14871            </td>
14872
14873            <td class="entry_range">
14874              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14875            </td>
14876
14877            <td class="entry_tags">
14878              <ul class="entry_tags">
14879                  <li><a href="#tag_HAL2">HAL2</a></li>
14880              </ul>
14881            </td>
14882
14883          </tr>
14884
14885
14886          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14887           <!-- end of entry -->
14888        
14889        
14890
14891      <!-- end of kind -->
14892      </tbody>
14893      <tr><td colspan="6" class="kind">static</td></tr>
14894
14895      <thead class="entries_header">
14896        <tr>
14897          <th class="th_name">Property Name</th>
14898          <th class="th_type">Type</th>
14899          <th class="th_description">Description</th>
14900          <th class="th_units">Units</th>
14901          <th class="th_range">Range</th>
14902          <th class="th_tags">Tags</th>
14903        </tr>
14904      </thead>
14905
14906      <tbody>
14907
14908        
14909
14910        
14911
14912        
14913
14914        
14915
14916                
14917          <tr class="entry" id="static_android.request.maxNumOutputStreams">
14918            <td class="entry_name
14919             " rowspan="3">
14920              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
14921            </td>
14922            <td class="entry_type">
14923                <span class="entry_type_name">int32</span>
14924                <span class="entry_type_container">x</span>
14925
14926                <span class="entry_type_array">
14927                  3
14928                </span>
14929              <span class="entry_type_visibility"> [ndk_public]</span>
14930
14931
14932              <span class="entry_type_hwlevel">[legacy] </span>
14933
14934
14935
14936
14937            </td> <!-- entry_type -->
14938
14939            <td class="entry_description">
14940              <p>The maximum numbers of different types of output streams
14941that can be configured and used simultaneously by a camera device.<wbr/></p>
14942            </td>
14943
14944            <td class="entry_units">
14945            </td>
14946
14947            <td class="entry_range">
14948              <p>For processed (and stalling) format streams,<wbr/> &gt;= 1.<wbr/></p>
14949<p>For Raw format (either stalling or non-stalling) streams,<wbr/> &gt;= 0.<wbr/></p>
14950<p>For processed (but not stalling) format streams,<wbr/> &gt;= 3
14951for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
14952&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>
14953            </td>
14954
14955            <td class="entry_tags">
14956              <ul class="entry_tags">
14957                  <li><a href="#tag_BC">BC</a></li>
14958              </ul>
14959            </td>
14960
14961          </tr>
14962          <tr class="entries_header">
14963            <th class="th_details" colspan="5">Details</th>
14964          </tr>
14965          <tr class="entry_cont">
14966            <td class="entry_details" colspan="5">
14967              <p>This is a 3 element tuple that contains the max number of output simultaneous
14968streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
14969formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
14970stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
14971number 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>
14972<p>This lists the upper bound of the number of output streams supported by
14973the camera device.<wbr/> Using more streams simultaneously may require more hardware and
14974CPU resources that will consume more power.<wbr/> The image format for an output stream can
14975be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
14976The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
14977into the 3 stream types as below:</p>
14978<ul>
14979<li>Processed (but stalling): any non-RAW format with a stallDurations &gt; 0.<wbr/>
14980  Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
14981<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>
14982<li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/>
14983  Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
14984  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a>,<wbr/> or
14985  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a>.<wbr/></li>
14986</ul>
14987            </td>
14988          </tr>
14989
14990
14991          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14992           <!-- end of entry -->
14993        
14994                
14995          <tr class="entry" id="static_android.request.maxNumOutputRaw">
14996            <td class="entry_name
14997             " rowspan="3">
14998              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
14999            </td>
15000            <td class="entry_type">
15001                <span class="entry_type_name">int32</span>
15002
15003              <span class="entry_type_visibility"> [java_public]</span>
15004
15005              <span class="entry_type_synthetic">[synthetic] </span>
15006
15007              <span class="entry_type_hwlevel">[legacy] </span>
15008
15009
15010
15011
15012            </td> <!-- entry_type -->
15013
15014            <td class="entry_description">
15015              <p>The maximum numbers of different types of output streams
15016that can be configured and used simultaneously by a camera device
15017for any <code>RAW</code> formats.<wbr/></p>
15018            </td>
15019
15020            <td class="entry_units">
15021            </td>
15022
15023            <td class="entry_range">
15024              <p>&gt;= 0</p>
15025            </td>
15026
15027            <td class="entry_tags">
15028            </td>
15029
15030          </tr>
15031          <tr class="entries_header">
15032            <th class="th_details" colspan="5">Details</th>
15033          </tr>
15034          <tr class="entry_cont">
15035            <td class="entry_details" colspan="5">
15036              <p>This value contains the max number of output simultaneous
15037streams from the raw sensor.<wbr/></p>
15038<p>This lists the upper bound of the number of output streams supported by
15039the camera device.<wbr/> Using more streams simultaneously may require more hardware and
15040CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
15041be 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>
15042<p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
15043<ul>
15044<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
15045<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
15046<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
15047</ul>
15048<p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
15049never support raw streams.<wbr/></p>
15050            </td>
15051          </tr>
15052
15053
15054          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15055           <!-- end of entry -->
15056        
15057                
15058          <tr class="entry" id="static_android.request.maxNumOutputProc">
15059            <td class="entry_name
15060             " rowspan="3">
15061              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
15062            </td>
15063            <td class="entry_type">
15064                <span class="entry_type_name">int32</span>
15065
15066              <span class="entry_type_visibility"> [java_public]</span>
15067
15068              <span class="entry_type_synthetic">[synthetic] </span>
15069
15070              <span class="entry_type_hwlevel">[legacy] </span>
15071
15072
15073
15074
15075            </td> <!-- entry_type -->
15076
15077            <td class="entry_description">
15078              <p>The maximum numbers of different types of output streams
15079that can be configured and used simultaneously by a camera device
15080for any processed (but not-stalling) formats.<wbr/></p>
15081            </td>
15082
15083            <td class="entry_units">
15084            </td>
15085
15086            <td class="entry_range">
15087              <p>&gt;= 3
15088for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
15089&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>
15090            </td>
15091
15092            <td class="entry_tags">
15093            </td>
15094
15095          </tr>
15096          <tr class="entries_header">
15097            <th class="th_details" colspan="5">Details</th>
15098          </tr>
15099          <tr class="entry_cont">
15100            <td class="entry_details" colspan="5">
15101              <p>This value contains the max number of output simultaneous
15102streams for any processed (but not-stalling) formats.<wbr/></p>
15103<p>This lists the upper bound of the number of output streams supported by
15104the camera device.<wbr/> Using more streams simultaneously may require more hardware and
15105CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
15106be 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>
15107<p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
15108Typically:</p>
15109<ul>
15110<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li>
15111<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li>
15112<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li>
15113<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>
15114</ul>
15115<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
15116processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
15117<p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
15118            </td>
15119          </tr>
15120
15121
15122          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15123           <!-- end of entry -->
15124        
15125                
15126          <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
15127            <td class="entry_name
15128             " rowspan="3">
15129              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
15130            </td>
15131            <td class="entry_type">
15132                <span class="entry_type_name">int32</span>
15133
15134              <span class="entry_type_visibility"> [java_public]</span>
15135
15136              <span class="entry_type_synthetic">[synthetic] </span>
15137
15138              <span class="entry_type_hwlevel">[legacy] </span>
15139
15140
15141
15142
15143            </td> <!-- entry_type -->
15144
15145            <td class="entry_description">
15146              <p>The maximum numbers of different types of output streams
15147that can be configured and used simultaneously by a camera device
15148for any processed (and stalling) formats.<wbr/></p>
15149            </td>
15150
15151            <td class="entry_units">
15152            </td>
15153
15154            <td class="entry_range">
15155              <p>&gt;= 1</p>
15156            </td>
15157
15158            <td class="entry_tags">
15159            </td>
15160
15161          </tr>
15162          <tr class="entries_header">
15163            <th class="th_details" colspan="5">Details</th>
15164          </tr>
15165          <tr class="entry_cont">
15166            <td class="entry_details" colspan="5">
15167              <p>This value contains the max number of output simultaneous
15168streams for any processed (but not-stalling) formats.<wbr/></p>
15169<p>This lists the upper bound of the number of output streams supported by
15170the camera device.<wbr/> Using more streams simultaneously may require more hardware and
15171CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
15172be 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>
15173<p>A processed and stalling format is defined as any non-RAW format with a stallDurations
15174&gt; 0.<wbr/>  Typically only the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a> is a
15175stalling format.<wbr/></p>
15176<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
15177processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
15178<p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
15179            </td>
15180          </tr>
15181
15182
15183          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15184           <!-- end of entry -->
15185        
15186                
15187          <tr class="entry" id="static_android.request.maxNumReprocessStreams">
15188            <td class="entry_name
15189                entry_name_deprecated
15190             " rowspan="3">
15191              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
15192            </td>
15193            <td class="entry_type">
15194                <span class="entry_type_name">int32</span>
15195                <span class="entry_type_container">x</span>
15196
15197                <span class="entry_type_array">
15198                  1
15199                </span>
15200              <span class="entry_type_visibility"> [system]</span>
15201
15202
15203
15204              <span class="entry_type_deprecated">[deprecated] </span>
15205
15206
15207
15208            </td> <!-- entry_type -->
15209
15210            <td class="entry_description">
15211              <p>How many reprocessing streams of any type
15212can be allocated at the same time.<wbr/></p>
15213            </td>
15214
15215            <td class="entry_units">
15216            </td>
15217
15218            <td class="entry_range">
15219              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15220              <p>&gt;= 0</p>
15221            </td>
15222
15223            <td class="entry_tags">
15224              <ul class="entry_tags">
15225                  <li><a href="#tag_HAL2">HAL2</a></li>
15226              </ul>
15227            </td>
15228
15229          </tr>
15230          <tr class="entries_header">
15231            <th class="th_details" colspan="5">Details</th>
15232          </tr>
15233          <tr class="entry_cont">
15234            <td class="entry_details" colspan="5">
15235              <p>Only used by HAL2.<wbr/>x.<wbr/></p>
15236<p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
15237            </td>
15238          </tr>
15239
15240
15241          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15242           <!-- end of entry -->
15243        
15244                
15245          <tr class="entry" id="static_android.request.maxNumInputStreams">
15246            <td class="entry_name
15247             " rowspan="5">
15248              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
15249            </td>
15250            <td class="entry_type">
15251                <span class="entry_type_name">int32</span>
15252
15253              <span class="entry_type_visibility"> [public]</span>
15254
15255
15256              <span class="entry_type_hwlevel">[full] </span>
15257
15258
15259
15260
15261            </td> <!-- entry_type -->
15262
15263            <td class="entry_description">
15264              <p>The maximum numbers of any type of input streams
15265that can be configured and used simultaneously by a camera device.<wbr/></p>
15266            </td>
15267
15268            <td class="entry_units">
15269            </td>
15270
15271            <td class="entry_range">
15272              <p>0 or 1.<wbr/></p>
15273            </td>
15274
15275            <td class="entry_tags">
15276              <ul class="entry_tags">
15277                  <li><a href="#tag_REPROC">REPROC</a></li>
15278              </ul>
15279            </td>
15280
15281          </tr>
15282          <tr class="entries_header">
15283            <th class="th_details" colspan="5">Details</th>
15284          </tr>
15285          <tr class="entry_cont">
15286            <td class="entry_details" colspan="5">
15287              <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
15288<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
15289input stream,<wbr/> there must be at least one output stream configured to to receive the
15290reprocessed images.<wbr/></p>
15291<p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
15292only the input buffer will be used to produce these output stream buffers,<wbr/> and a
15293new sensor image will not be captured.<wbr/></p>
15294<p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
15295stream image format will be PRIVATE,<wbr/> the associated output stream image format
15296should be JPEG.<wbr/></p>
15297            </td>
15298          </tr>
15299
15300          <tr class="entries_header">
15301            <th class="th_details" colspan="5">HAL Implementation Details</th>
15302          </tr>
15303          <tr class="entry_cont">
15304            <td class="entry_details" colspan="5">
15305              <p>For the reprocessing flow and controls,<wbr/> see
15306hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
15307            </td>
15308          </tr>
15309
15310          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15311           <!-- end of entry -->
15312        
15313                
15314          <tr class="entry" id="static_android.request.pipelineMaxDepth">
15315            <td class="entry_name
15316             " rowspan="5">
15317              android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
15318            </td>
15319            <td class="entry_type">
15320                <span class="entry_type_name">byte</span>
15321
15322              <span class="entry_type_visibility"> [public]</span>
15323
15324
15325              <span class="entry_type_hwlevel">[legacy] </span>
15326
15327
15328
15329
15330            </td> <!-- entry_type -->
15331
15332            <td class="entry_description">
15333              <p>Specifies the number of maximum pipeline stages a frame
15334has to go through from when it's exposed to when it's available
15335to the framework.<wbr/></p>
15336            </td>
15337
15338            <td class="entry_units">
15339            </td>
15340
15341            <td class="entry_range">
15342            </td>
15343
15344            <td class="entry_tags">
15345            </td>
15346
15347          </tr>
15348          <tr class="entries_header">
15349            <th class="th_details" colspan="5">Details</th>
15350          </tr>
15351          <tr class="entry_cont">
15352            <td class="entry_details" colspan="5">
15353              <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
15354one stage to readout) from the sensor.<wbr/> The ISP then usually adds
15355its own stages to do custom HW processing.<wbr/> Further stages may be
15356added by SW processing.<wbr/></p>
15357<p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
15358processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
15359depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
15360the max pipeline depth.<wbr/></p>
15361<p>A pipeline depth of X stages is equivalent to a pipeline latency of
15362X frame intervals.<wbr/></p>
15363<p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/>
15364the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p>
15365            </td>
15366          </tr>
15367
15368          <tr class="entries_header">
15369            <th class="th_details" colspan="5">HAL Implementation Details</th>
15370          </tr>
15371          <tr class="entry_cont">
15372            <td class="entry_details" colspan="5">
15373              <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the
15374max batch sizes may be larger than 1.<wbr/></p>
15375            </td>
15376          </tr>
15377
15378          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15379           <!-- end of entry -->
15380        
15381                
15382          <tr class="entry" id="static_android.request.partialResultCount">
15383            <td class="entry_name
15384             " rowspan="3">
15385              android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
15386            </td>
15387            <td class="entry_type">
15388                <span class="entry_type_name">int32</span>
15389
15390              <span class="entry_type_visibility"> [public]</span>
15391
15392
15393
15394
15395
15396
15397            </td> <!-- entry_type -->
15398
15399            <td class="entry_description">
15400              <p>Defines how many sub-components
15401a result will be composed of.<wbr/></p>
15402            </td>
15403
15404            <td class="entry_units">
15405            </td>
15406
15407            <td class="entry_range">
15408              <p>&gt;= 1</p>
15409            </td>
15410
15411            <td class="entry_tags">
15412            </td>
15413
15414          </tr>
15415          <tr class="entries_header">
15416            <th class="th_details" colspan="5">Details</th>
15417          </tr>
15418          <tr class="entry_cont">
15419            <td class="entry_details" colspan="5">
15420              <p>In order to combat the pipeline latency,<wbr/> partial results
15421may be delivered to the application layer from the camera device as
15422soon as they are available.<wbr/></p>
15423<p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
15424results are not supported,<wbr/> and only the final TotalCaptureResult will
15425be produced by the camera device.<wbr/></p>
15426<p>A typical use case for this might be: after requesting an
15427auto-focus (AF) lock the new AF state might be available 50%
15428of the way through the pipeline.<wbr/>  The camera device could
15429then immediately dispatch this state via a partial result to
15430the application,<wbr/> and the rest of the metadata via later
15431partial results.<wbr/></p>
15432            </td>
15433          </tr>
15434
15435
15436          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15437           <!-- end of entry -->
15438        
15439                
15440          <tr class="entry" id="static_android.request.availableCapabilities">
15441            <td class="entry_name
15442             " rowspan="5">
15443              android.<wbr/>request.<wbr/>available<wbr/>Capabilities
15444            </td>
15445            <td class="entry_type">
15446                <span class="entry_type_name entry_type_name_enum">byte</span>
15447                <span class="entry_type_container">x</span>
15448
15449                <span class="entry_type_array">
15450                  n
15451                </span>
15452              <span class="entry_type_visibility"> [public]</span>
15453
15454
15455              <span class="entry_type_hwlevel">[legacy] </span>
15456
15457
15458
15459                <ul class="entry_type_enum">
15460                  <li>
15461                    <span class="entry_type_enum_name">BACKWARD_COMPATIBLE</span>
15462                    <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
15463device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
15464supports.<wbr/></p>
15465<p>This capability is listed by all normal devices,<wbr/> and
15466indicates that the camera device has a feature set
15467that's comparable to the baseline requirements for the
15468older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
15469<p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this
15470capability,<wbr/> indicating that they support only depth measurement,<wbr/>
15471not standard color output.<wbr/></p></span>
15472                  </li>
15473                  <li>
15474                    <span class="entry_type_enum_name">MANUAL_SENSOR</span>
15475                    <span class="entry_type_enum_optional">[optional]</span>
15476                    <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
15477as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
15478The camera device supports basic manual control of the sensor image
15479acquisition related stages.<wbr/> This means the following controls are
15480guaranteed to be supported:</p>
15481<ul>
15482<li>Manual frame duration control<ul>
15483<li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
15484<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
15485</ul>
15486</li>
15487<li>Manual exposure control<ul>
15488<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
15489<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
15490</ul>
15491</li>
15492<li>Manual sensitivity control<ul>
15493<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
15494<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
15495</ul>
15496</li>
15497<li>Manual lens control (if the lens is adjustable)<ul>
15498<li>android.<wbr/>lens.<wbr/>*</li>
15499</ul>
15500</li>
15501<li>Manual flash control (if a flash unit is present)<ul>
15502<li>android.<wbr/>flash.<wbr/>*</li>
15503</ul>
15504</li>
15505<li>Manual black level locking<ul>
15506<li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
15507</ul>
15508</li>
15509<li>Auto exposure lock<ul>
15510<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
15511</ul>
15512</li>
15513</ul>
15514<p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
15515device will accurately report the values applied by 3A in the
15516result.<wbr/></p>
15517<p>A given camera device may also support additional manual sensor controls,<wbr/>
15518but this capability only covers the above list of controls.<wbr/></p>
15519<p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
15520additionally return a min frame duration that is greater than
15521zero for each supported size-format combination.<wbr/></p></span>
15522                  </li>
15523                  <li>
15524                    <span class="entry_type_enum_name">MANUAL_POST_PROCESSING</span>
15525                    <span class="entry_type_enum_optional">[optional]</span>
15526                    <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
15527The camera device supports basic manual control of the image post-processing
15528stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
15529<ul>
15530<li>
15531<p>Manual tonemap control</p>
15532<ul>
15533<li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
15534<li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
15535<li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
15536<li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
15537<li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
15538</ul>
15539</li>
15540<li>
15541<p>Manual white balance control</p>
15542<ul>
15543<li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
15544<li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
15545</ul>
15546</li>
15547<li>Manual lens shading map control<ul>
15548<li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
15549<li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
15550<li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
15551<li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
15552</ul>
15553</li>
15554<li>Manual aberration correction control (if aberration correction is supported)<ul>
15555<li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
15556<li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
15557</ul>
15558</li>
15559<li>Auto white balance lock<ul>
15560<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
15561</ul>
15562</li>
15563</ul>
15564<p>If auto white balance is enabled,<wbr/> then the camera device
15565will accurately report the values applied by AWB in the result.<wbr/></p>
15566<p>A given camera device may also support additional post-processing
15567controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span>
15568                  </li>
15569                  <li>
15570                    <span class="entry_type_enum_name">RAW</span>
15571                    <span class="entry_type_enum_optional">[optional]</span>
15572                    <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
15573metadata for interpreting them.<wbr/></p>
15574<p>Devices supporting the RAW capability allow both for
15575saving DNG files,<wbr/> and for direct application processing of
15576raw sensor images.<wbr/></p>
15577<ul>
15578<li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
15579<li>The maximum available resolution for RAW_<wbr/>SENSOR streams
15580  will match either the value in
15581  <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
15582  <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>
15583<li>All DNG-related optional metadata entries are provided
15584  by the camera device.<wbr/></li>
15585</ul></span>
15586                  </li>
15587                  <li>
15588                    <span class="entry_type_enum_name">PRIVATE_REPROCESSING</span>
15589                    <span class="entry_type_enum_optional">[optional]</span>
15590                    <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
15591<ul>
15592<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>
15593<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/>
15594  that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of
15595  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>
15596<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
15597  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>
15598<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>
15599<li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop
15600  relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
15601<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both
15602  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and
15603  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
15604<li>The maximum available resolution for PRIVATE streams
15605  (both input/<wbr/>output) will match the maximum available
15606  resolution of JPEG streams.<wbr/></li>
15607<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
15608<li>Only below controls are effective for reprocessing requests and
15609  will be present in capture results,<wbr/> other controls in reprocess
15610  requests will be ignored by the camera device.<wbr/><ul>
15611<li>android.<wbr/>jpeg.<wbr/>*</li>
15612<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
15613<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
15614</ul>
15615</li>
15616<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
15617  <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>
15618</ul></span>
15619                  </li>
15620                  <li>
15621                    <span class="entry_type_enum_name">READ_SENSOR_SETTINGS</span>
15622                    <span class="entry_type_enum_optional">[optional]</span>
15623                    <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
15624the sensor controls while the built-in 3A algorithm is running.<wbr/>  This allows
15625reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
15626<p>The values reported for the following controls are guaranteed to be available
15627in the CaptureResult,<wbr/> including when 3A is enabled:</p>
15628<ul>
15629<li>Exposure control<ul>
15630<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
15631</ul>
15632</li>
15633<li>Sensitivity control<ul>
15634<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
15635</ul>
15636</li>
15637<li>Lens controls (if the lens is adjustable)<ul>
15638<li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
15639<li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
15640</ul>
15641</li>
15642</ul>
15643<p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
15644always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
15645                  </li>
15646                  <li>
15647                    <span class="entry_type_enum_name">BURST_CAPTURE</span>
15648                    <span class="entry_type_enum_optional">[optional]</span>
15649                    <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at &gt;= 20 frames per
15650second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set
15651to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at &gt;= 10 frames
15652per second.<wbr/>  Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum
15653resolution of the device,<wbr/> whichever is smaller.<wbr/></p>
15654<p>More specifically,<wbr/> this means that a size matching the camera device's active array
15655size 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/>
15656with a minimum frame duration for that format and size of either &lt;= 1/<wbr/>20 s,<wbr/> or
15657&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
15658lists at least one FPS range where the minimum FPS is &gt;= 1 /<wbr/> minimumFrameDuration
15659for 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/>
15660then 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
15661least one resolution &gt;= 8 megapixels,<wbr/> with a minimum frame duration of &lt;= 1/<wbr/>20
15662s.<wbr/></p>
15663<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
15664as the maximum-size YUV_<wbr/>420_<wbr/>888 resolution is.<wbr/></p>
15665<p>If the device supports the PRIVATE_<wbr/>REPROCESSING capability,<wbr/> then the same guarantees
15666as 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>
15667<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
15668and 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>
15669are also guaranteed to be <code>true</code> so burst capture with these two locks ON yields
15670consistent image output.<wbr/></p></span>
15671                  </li>
15672                  <li>
15673                    <span class="entry_type_enum_name">YUV_REPROCESSING</span>
15674                    <span class="entry_type_enum_optional">[optional]</span>
15675                    <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
15676PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
15677following:</p>
15678<ul>
15679<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>
15680<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/>
15681  YUV_<wbr/>420_<wbr/>888 is included in the lists of formats returned by
15682  <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a> and
15683  <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputFormats">StreamConfigurationMap#getOutputFormats</a>.<wbr/></li>
15684<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
15685  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>
15686<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>
15687<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
15688  relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
15689<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
15690  <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>
15691<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
15692  maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
15693<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
15694<li>Only the below controls are effective for reprocessing requests and will be present
15695  in capture results.<wbr/> The reprocess requests are from the original capture results that
15696  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>
15697  output buffers.<wbr/>  All other controls in the reprocess requests will be ignored by the
15698  camera device.<wbr/><ul>
15699<li>android.<wbr/>jpeg.<wbr/>*</li>
15700<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
15701<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
15702<li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
15703</ul>
15704</li>
15705<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
15706  <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>
15707</ul></span>
15708                  </li>
15709                  <li>
15710                    <span class="entry_type_enum_name">DEPTH_OUTPUT</span>
15711                    <span class="entry_type_enum_optional">[optional]</span>
15712                    <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
15713<p>This capability requires the camera device to support the following:</p>
15714<ul>
15715<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as an output format.<wbr/></li>
15716<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
15717  output format.<wbr/></li>
15718<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/>
15719  will list the following calibration entries in both
15720  <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> and
15721  <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
15722<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
15723<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
15724<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
15725<li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li>
15726</ul>
15727</li>
15728<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>
15729<li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
15730  normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16
15731  format.<wbr/></li>
15732</ul>
15733<p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
15734so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
15735should be accounted for (see
15736<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
15737On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
15738using a repeating burst is recommended,<wbr/> where a depth-output target is only included
15739once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
15740rate,<wbr/> including depth stall time.<wbr/></p></span>
15741                  </li>
15742                  <li>
15743                    <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO</span>
15744                    <span class="entry_type_enum_optional">[optional]</span>
15745                    <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate &gt;=120fps)
15746use case.<wbr/> The camera device will support high speed capture session created by
15747<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>,<wbr/> which
15748only accepts high speed request lists created by
15749<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/></p>
15750<p>A camera device can still support high speed video streaming by advertising the high speed
15751FPS 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
15752capture request per frame control and synchronization requirements will apply to
15753the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability describes
15754the capability of a specialized operating mode with many limitations (see below),<wbr/> which
15755is only targeted at high speed video recording.<wbr/></p>
15756<p>The supported high speed video sizes and fps ranges are specified in
15757<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/>
15758To get desired output frame rates,<wbr/> the application is only allowed to select video size
15759and FPS range combinations provided by
15760<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/>
15761The 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>
15762<p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
15763ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
15764controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
15765and post-processing parameters is possible.<wbr/> All other controls operate the
15766same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
15767android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
15768<ul>
15769<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
15770<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
15771<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
15772<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
15773<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
15774<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
15775<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
15776<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
15777<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
15778<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
15779</ul>
15780<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
15781<ul>
15782<li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not
15783work since aeMode is ON)</li>
15784<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
15785<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
15786<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li>
15787</ul>
15788<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
15789be lower than what camera can output,<wbr/> depending on the destination Surfaces for
15790the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
15791the application need check if the video encoder is capable of supporting the
15792high frame rate for a given video size,<wbr/> or it will end up with lower recording
15793frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame
15794rate will be bounded by the screen refresh rate.<wbr/></p>
15795<p>The camera device will only support up to 2 high speed simultaneous output surfaces
15796(preview and recording surfaces)
15797in this mode.<wbr/> Above controls will be effective only if all of below conditions are true:</p>
15798<ul>
15799<li>The application creates a camera capture session with no more than 2 surfaces via
15800<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The
15801targeted surfaces must be preview surface (either from
15802<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
15803recording surface(either from <a href="https://developer.android.com/reference/android/media/MediaRecorder.html#getSurface">MediaRecorder#getSurface</a> or
15804<a href="https://developer.android.com/reference/android/media/MediaCodec.html#createInputSurface">MediaCodec#createInputSurface</a>).<wbr/></li>
15805<li>The stream sizes are selected from the sizes reported by
15806<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li>
15807<li>The FPS ranges are selected from
15808<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/></li>
15809</ul>
15810<p>When above conditions are NOT satistied,<wbr/>
15811<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
15812will fail.<wbr/></p>
15813<p>Switching to a FPS range that has different maximum FPS may trigger some camera device
15814reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
15815the application avoids unnecessary maximum target FPS changes as much as possible
15816during high speed streaming.<wbr/></p></span>
15817                  </li>
15818                </ul>
15819
15820            </td> <!-- entry_type -->
15821
15822            <td class="entry_description">
15823              <p>List of capabilities that this camera device
15824advertises as fully supporting.<wbr/></p>
15825            </td>
15826
15827            <td class="entry_units">
15828            </td>
15829
15830            <td class="entry_range">
15831            </td>
15832
15833            <td class="entry_tags">
15834            </td>
15835
15836          </tr>
15837          <tr class="entries_header">
15838            <th class="th_details" colspan="5">Details</th>
15839          </tr>
15840          <tr class="entry_cont">
15841            <td class="entry_details" colspan="5">
15842              <p>A capability is a contract that the camera device makes in order
15843to be able to satisfy one or more use cases.<wbr/></p>
15844<p>Listing a capability guarantees that the whole set of features
15845required to support a common use will all be available.<wbr/></p>
15846<p>Using a subset of the functionality provided by an unsupported
15847capability may be possible on a specific camera device implementation;
15848to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
15849<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
15850<a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
15851<p>The following capabilities are guaranteed to be available on
15852<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
15853<ul>
15854<li>MANUAL_<wbr/>SENSOR</li>
15855<li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
15856</ul>
15857<p>Other capabilities may be available on either FULL or LIMITED
15858devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
15859            </td>
15860          </tr>
15861
15862          <tr class="entries_header">
15863            <th class="th_details" colspan="5">HAL Implementation Details</th>
15864          </tr>
15865          <tr class="entry_cont">
15866            <td class="entry_details" colspan="5">
15867              <p>Additional constraint details per-capability will be available
15868in the Compatibility Test Suite.<wbr/></p>
15869<p>Minimum baseline requirements required for the
15870BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
15871Instead refer to "BC" tags and the camera CTS tests in the
15872android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
15873<p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
15874<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
15875request and the result in order to be considered to be
15876capability-compliant.<wbr/></p>
15877<p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
15878then exposure time must be configurable via the request <em>and</em>
15879the actual exposure applied must be available via
15880the result.<wbr/></p>
15881<p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
15882<a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
15883<p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
15884hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
15885<p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
15886CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
15887<p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
15888YUV_<wbr/>REPROCESSING capability must support the
15889CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
15890<p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
15891<a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
15892<a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
15893<a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
15894addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
15895enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
15896if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
15897DEPTH).<wbr/></p>
15898            </td>
15899          </tr>
15900
15901          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15902           <!-- end of entry -->
15903        
15904                
15905          <tr class="entry" id="static_android.request.availableRequestKeys">
15906            <td class="entry_name
15907             " rowspan="5">
15908              android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
15909            </td>
15910            <td class="entry_type">
15911                <span class="entry_type_name">int32</span>
15912                <span class="entry_type_container">x</span>
15913
15914                <span class="entry_type_array">
15915                  n
15916                </span>
15917              <span class="entry_type_visibility"> [ndk_public]</span>
15918
15919
15920              <span class="entry_type_hwlevel">[legacy] </span>
15921
15922
15923
15924
15925            </td> <!-- entry_type -->
15926
15927            <td class="entry_description">
15928              <p>A list of all keys that the camera device has available
15929to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
15930            </td>
15931
15932            <td class="entry_units">
15933            </td>
15934
15935            <td class="entry_range">
15936            </td>
15937
15938            <td class="entry_tags">
15939            </td>
15940
15941          </tr>
15942          <tr class="entries_header">
15943            <th class="th_details" colspan="5">Details</th>
15944          </tr>
15945          <tr class="entry_cont">
15946            <td class="entry_details" colspan="5">
15947              <p>Attempting to set a key into a CaptureRequest that is not
15948listed here will result in an invalid request and will be rejected
15949by the camera device.<wbr/></p>
15950<p>This field can be used to query the feature set of a camera device
15951at a more granular level than capabilities.<wbr/> This is especially
15952important for optional keys that are not listed under any capability
15953in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
15954            </td>
15955          </tr>
15956
15957          <tr class="entries_header">
15958            <th class="th_details" colspan="5">HAL Implementation Details</th>
15959          </tr>
15960          <tr class="entry_cont">
15961            <td class="entry_details" colspan="5">
15962              <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
15963extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
15964<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
15965vendor extensions API and not against this field.<wbr/></p>
15966<p>The HAL must not consume any request tags that are not listed either
15967here or in the vendor tag list.<wbr/></p>
15968<p>The public camera2 API will always make the vendor tags visible
15969via
15970<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
15971            </td>
15972          </tr>
15973
15974          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15975           <!-- end of entry -->
15976        
15977                
15978          <tr class="entry" id="static_android.request.availableResultKeys">
15979            <td class="entry_name
15980             " rowspan="5">
15981              android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
15982            </td>
15983            <td class="entry_type">
15984                <span class="entry_type_name">int32</span>
15985                <span class="entry_type_container">x</span>
15986
15987                <span class="entry_type_array">
15988                  n
15989                </span>
15990              <span class="entry_type_visibility"> [ndk_public]</span>
15991
15992
15993              <span class="entry_type_hwlevel">[legacy] </span>
15994
15995
15996
15997
15998            </td> <!-- entry_type -->
15999
16000            <td class="entry_description">
16001              <p>A list of all keys that the camera device has available
16002to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>.<wbr/></p>
16003            </td>
16004
16005            <td class="entry_units">
16006            </td>
16007
16008            <td class="entry_range">
16009            </td>
16010
16011            <td class="entry_tags">
16012            </td>
16013
16014          </tr>
16015          <tr class="entries_header">
16016            <th class="th_details" colspan="5">Details</th>
16017          </tr>
16018          <tr class="entry_cont">
16019            <td class="entry_details" colspan="5">
16020              <p>Attempting to get a key from a CaptureResult that is not
16021listed here will always return a <code>null</code> value.<wbr/> Getting a key from
16022a CaptureResult that is listed here will generally never return a <code>null</code>
16023value.<wbr/></p>
16024<p>The following keys may return <code>null</code> unless they are enabled:</p>
16025<ul>
16026<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>
16027</ul>
16028<p>(Those sometimes-null keys will nevertheless be listed here
16029if they are available.<wbr/>)</p>
16030<p>This field can be used to query the feature set of a camera device
16031at a more granular level than capabilities.<wbr/> This is especially
16032important for optional keys that are not listed under any capability
16033in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
16034            </td>
16035          </tr>
16036
16037          <tr class="entries_header">
16038            <th class="th_details" colspan="5">HAL Implementation Details</th>
16039          </tr>
16040          <tr class="entry_cont">
16041            <td class="entry_details" colspan="5">
16042              <p>Tags listed here must always have an entry in the result metadata,<wbr/>
16043even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
16044matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
16045<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
16046extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
16047<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
16048vendor extensions API and not against this field.<wbr/></p>
16049<p>The HAL must not produce any result tags that are not listed either
16050here or in the vendor tag list.<wbr/></p>
16051<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>
16052            </td>
16053          </tr>
16054
16055          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16056           <!-- end of entry -->
16057        
16058                
16059          <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
16060            <td class="entry_name
16061             " rowspan="5">
16062              android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
16063            </td>
16064            <td class="entry_type">
16065                <span class="entry_type_name">int32</span>
16066                <span class="entry_type_container">x</span>
16067
16068                <span class="entry_type_array">
16069                  n
16070                </span>
16071              <span class="entry_type_visibility"> [ndk_public]</span>
16072
16073
16074              <span class="entry_type_hwlevel">[legacy] </span>
16075
16076
16077
16078
16079            </td> <!-- entry_type -->
16080
16081            <td class="entry_description">
16082              <p>A list of all keys that the camera device has available
16083to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
16084            </td>
16085
16086            <td class="entry_units">
16087            </td>
16088
16089            <td class="entry_range">
16090            </td>
16091
16092            <td class="entry_tags">
16093            </td>
16094
16095          </tr>
16096          <tr class="entries_header">
16097            <th class="th_details" colspan="5">Details</th>
16098          </tr>
16099          <tr class="entry_cont">
16100            <td class="entry_details" colspan="5">
16101              <p>This entry follows the same rules as
16102<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
16103CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
16104details.<wbr/></p>
16105            </td>
16106          </tr>
16107
16108          <tr class="entries_header">
16109            <th class="th_details" colspan="5">HAL Implementation Details</th>
16110          </tr>
16111          <tr class="entry_cont">
16112            <td class="entry_details" colspan="5">
16113              <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
16114even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
16115matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
16116<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
16117extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
16118<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
16119vendor extensions API and not against this field.<wbr/></p>
16120<p>The HAL must not have any tags in its static info that are not listed
16121either here or in the vendor tag list.<wbr/></p>
16122<p>The public camera2 API will always make the vendor tags visible
16123via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
16124            </td>
16125          </tr>
16126
16127          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16128           <!-- end of entry -->
16129        
16130        
16131
16132      <!-- end of kind -->
16133      </tbody>
16134      <tr><td colspan="6" class="kind">dynamic</td></tr>
16135
16136      <thead class="entries_header">
16137        <tr>
16138          <th class="th_name">Property Name</th>
16139          <th class="th_type">Type</th>
16140          <th class="th_description">Description</th>
16141          <th class="th_units">Units</th>
16142          <th class="th_range">Range</th>
16143          <th class="th_tags">Tags</th>
16144        </tr>
16145      </thead>
16146
16147      <tbody>
16148
16149        
16150
16151        
16152
16153        
16154
16155        
16156
16157                
16158          <tr class="entry" id="dynamic_android.request.frameCount">
16159            <td class="entry_name
16160                entry_name_deprecated
16161             " rowspan="3">
16162              android.<wbr/>request.<wbr/>frame<wbr/>Count
16163            </td>
16164            <td class="entry_type">
16165                <span class="entry_type_name">int32</span>
16166
16167              <span class="entry_type_visibility"> [hidden]</span>
16168
16169
16170
16171              <span class="entry_type_deprecated">[deprecated] </span>
16172
16173
16174
16175            </td> <!-- entry_type -->
16176
16177            <td class="entry_description">
16178              <p>A frame counter set by the framework.<wbr/> This value monotonically
16179increases with every new result (that is,<wbr/> each new result has a unique
16180frameCount value).<wbr/></p>
16181            </td>
16182
16183            <td class="entry_units">
16184              count of frames
16185            </td>
16186
16187            <td class="entry_range">
16188              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16189              <p>&gt; 0</p>
16190            </td>
16191
16192            <td class="entry_tags">
16193            </td>
16194
16195          </tr>
16196          <tr class="entries_header">
16197            <th class="th_details" colspan="5">Details</th>
16198          </tr>
16199          <tr class="entry_cont">
16200            <td class="entry_details" colspan="5">
16201              <p>Reset on release()</p>
16202            </td>
16203          </tr>
16204
16205
16206          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16207           <!-- end of entry -->
16208        
16209                
16210          <tr class="entry" id="dynamic_android.request.id">
16211            <td class="entry_name
16212             " rowspan="1">
16213              android.<wbr/>request.<wbr/>id
16214            </td>
16215            <td class="entry_type">
16216                <span class="entry_type_name">int32</span>
16217
16218              <span class="entry_type_visibility"> [hidden]</span>
16219
16220
16221
16222
16223
16224
16225            </td> <!-- entry_type -->
16226
16227            <td class="entry_description">
16228              <p>An application-specified ID for the current
16229request.<wbr/> Must be maintained unchanged in output
16230frame</p>
16231            </td>
16232
16233            <td class="entry_units">
16234              arbitrary integer assigned by application
16235            </td>
16236
16237            <td class="entry_range">
16238              <p>Any int</p>
16239            </td>
16240
16241            <td class="entry_tags">
16242              <ul class="entry_tags">
16243                  <li><a href="#tag_V1">V1</a></li>
16244              </ul>
16245            </td>
16246
16247          </tr>
16248
16249
16250          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16251           <!-- end of entry -->
16252        
16253                
16254          <tr class="entry" id="dynamic_android.request.metadataMode">
16255            <td class="entry_name
16256             " rowspan="1">
16257              android.<wbr/>request.<wbr/>metadata<wbr/>Mode
16258            </td>
16259            <td class="entry_type">
16260                <span class="entry_type_name entry_type_name_enum">byte</span>
16261
16262              <span class="entry_type_visibility"> [system]</span>
16263
16264
16265
16266
16267
16268                <ul class="entry_type_enum">
16269                  <li>
16270                    <span class="entry_type_enum_name">NONE</span>
16271                    <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
16272for application-bound buffer data.<wbr/> If no
16273application-bound streams exist,<wbr/> no frame should be
16274placed in the output frame queue.<wbr/> If such streams
16275exist,<wbr/> a frame should be placed on the output queue
16276with null metadata but with the necessary output buffer
16277information.<wbr/> Timestamp information should still be
16278included with any output stream buffers</p></span>
16279                  </li>
16280                  <li>
16281                    <span class="entry_type_enum_name">FULL</span>
16282                    <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
16283only be produced if they are separately
16284enabled</p></span>
16285                  </li>
16286                </ul>
16287
16288            </td> <!-- entry_type -->
16289
16290            <td class="entry_description">
16291              <p>How much metadata to produce on
16292output</p>
16293            </td>
16294
16295            <td class="entry_units">
16296            </td>
16297
16298            <td class="entry_range">
16299            </td>
16300
16301            <td class="entry_tags">
16302              <ul class="entry_tags">
16303                  <li><a href="#tag_FUTURE">FUTURE</a></li>
16304              </ul>
16305            </td>
16306
16307          </tr>
16308
16309
16310          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16311           <!-- end of entry -->
16312        
16313                
16314          <tr class="entry" id="dynamic_android.request.outputStreams">
16315            <td class="entry_name
16316                entry_name_deprecated
16317             " rowspan="3">
16318              android.<wbr/>request.<wbr/>output<wbr/>Streams
16319            </td>
16320            <td class="entry_type">
16321                <span class="entry_type_name">int32</span>
16322                <span class="entry_type_container">x</span>
16323
16324                <span class="entry_type_array">
16325                  n
16326                </span>
16327              <span class="entry_type_visibility"> [system]</span>
16328
16329
16330
16331              <span class="entry_type_deprecated">[deprecated] </span>
16332
16333
16334
16335            </td> <!-- entry_type -->
16336
16337            <td class="entry_description">
16338              <p>Lists which camera output streams image data
16339from this capture must be sent to</p>
16340            </td>
16341
16342            <td class="entry_units">
16343              List of camera stream IDs
16344            </td>
16345
16346            <td class="entry_range">
16347              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16348              <p>List must only include streams that have been
16349created</p>
16350            </td>
16351
16352            <td class="entry_tags">
16353              <ul class="entry_tags">
16354                  <li><a href="#tag_HAL2">HAL2</a></li>
16355              </ul>
16356            </td>
16357
16358          </tr>
16359          <tr class="entries_header">
16360            <th class="th_details" colspan="5">Details</th>
16361          </tr>
16362          <tr class="entry_cont">
16363            <td class="entry_details" colspan="5">
16364              <p>If no output streams are listed,<wbr/> then the image
16365data should simply be discarded.<wbr/> The image data must
16366still be captured for metadata and statistics production,<wbr/>
16367and the lens and flash must operate as requested.<wbr/></p>
16368            </td>
16369          </tr>
16370
16371
16372          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16373           <!-- end of entry -->
16374        
16375                
16376          <tr class="entry" id="dynamic_android.request.pipelineDepth">
16377            <td class="entry_name
16378             " rowspan="5">
16379              android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
16380            </td>
16381            <td class="entry_type">
16382                <span class="entry_type_name">byte</span>
16383
16384              <span class="entry_type_visibility"> [public]</span>
16385
16386
16387              <span class="entry_type_hwlevel">[legacy] </span>
16388
16389
16390
16391
16392            </td> <!-- entry_type -->
16393
16394            <td class="entry_description">
16395              <p>Specifies the number of pipeline stages the frame went
16396through from when it was exposed to when the final completed result
16397was available to the framework.<wbr/></p>
16398            </td>
16399
16400            <td class="entry_units">
16401            </td>
16402
16403            <td class="entry_range">
16404              <p>&lt;= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
16405            </td>
16406
16407            <td class="entry_tags">
16408            </td>
16409
16410          </tr>
16411          <tr class="entries_header">
16412            <th class="th_details" colspan="5">Details</th>
16413          </tr>
16414          <tr class="entry_cont">
16415            <td class="entry_details" colspan="5">
16416              <p>Depending on what settings are used in the request,<wbr/> and
16417what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
16418and some pipeline stages skipped.<wbr/></p>
16419<p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
16420            </td>
16421          </tr>
16422
16423          <tr class="entries_header">
16424            <th class="th_details" colspan="5">HAL Implementation Details</th>
16425          </tr>
16426          <tr class="entry_cont">
16427            <td class="entry_details" colspan="5">
16428              <p>This value must always represent the accurate count of how many
16429pipeline stages were actually used.<wbr/></p>
16430            </td>
16431          </tr>
16432
16433          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16434           <!-- end of entry -->
16435        
16436        
16437
16438      <!-- end of kind -->
16439      </tbody>
16440
16441  <!-- end of section -->
16442  <tr><td colspan="6" id="section_scaler" class="section">scaler</td></tr>
16443
16444
16445      <tr><td colspan="6" class="kind">controls</td></tr>
16446
16447      <thead class="entries_header">
16448        <tr>
16449          <th class="th_name">Property Name</th>
16450          <th class="th_type">Type</th>
16451          <th class="th_description">Description</th>
16452          <th class="th_units">Units</th>
16453          <th class="th_range">Range</th>
16454          <th class="th_tags">Tags</th>
16455        </tr>
16456      </thead>
16457
16458      <tbody>
16459
16460        
16461
16462        
16463
16464        
16465
16466        
16467
16468                
16469          <tr class="entry" id="controls_android.scaler.cropRegion">
16470            <td class="entry_name
16471             " rowspan="5">
16472              android.<wbr/>scaler.<wbr/>crop<wbr/>Region
16473            </td>
16474            <td class="entry_type">
16475                <span class="entry_type_name">int32</span>
16476                <span class="entry_type_container">x</span>
16477
16478                <span class="entry_type_array">
16479                  4
16480                </span>
16481              <span class="entry_type_visibility"> [public as rectangle]</span>
16482
16483
16484              <span class="entry_type_hwlevel">[legacy] </span>
16485
16486
16487
16488
16489            </td> <!-- entry_type -->
16490
16491            <td class="entry_description">
16492              <p>The desired region of the sensor to read out for this capture.<wbr/></p>
16493            </td>
16494
16495            <td class="entry_units">
16496              Pixel coordinates relative to
16497          android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
16498            </td>
16499
16500            <td class="entry_range">
16501            </td>
16502
16503            <td class="entry_tags">
16504              <ul class="entry_tags">
16505                  <li><a href="#tag_BC">BC</a></li>
16506              </ul>
16507            </td>
16508
16509          </tr>
16510          <tr class="entries_header">
16511            <th class="th_details" colspan="5">Details</th>
16512          </tr>
16513          <tr class="entry_cont">
16514            <td class="entry_details" colspan="5">
16515              <p>This control can be used to implement digital zoom.<wbr/></p>
16516<p>The crop region coordinate system is based off
16517<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
16518top-left corner of the sensor active array.<wbr/></p>
16519<p>Output streams use this rectangle to produce their output,<wbr/>
16520cropping to a smaller region if necessary to maintain the
16521stream's aspect ratio,<wbr/> then scaling the sensor input to
16522match the output's configured resolution.<wbr/></p>
16523<p>The crop region is applied after the RAW to other color
16524space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
16525(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
16526croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
16527<p>For non-raw streams,<wbr/> any additional per-stream cropping will
16528be done to maximize the final pixel area of the stream.<wbr/></p>
16529<p>For example,<wbr/> if the crop region is set to a 4:3 aspect
16530ratio,<wbr/> then 4:3 streams will use the exact crop
16531region.<wbr/> 16:9 streams will further crop vertically
16532(letterbox).<wbr/></p>
16533<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
16534outputs will crop horizontally (pillarbox),<wbr/> and 16:9
16535streams will match exactly.<wbr/> These additional crops will
16536be centered within the crop region.<wbr/></p>
16537<p>The width and height of the crop region cannot
16538be set to be smaller than
16539<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
16540<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>
16541<p>The camera device may adjust the crop region to account
16542for rounding and other hardware requirements; the final
16543crop region used will be included in the output capture
16544result.<wbr/></p>
16545            </td>
16546          </tr>
16547
16548          <tr class="entries_header">
16549            <th class="th_details" colspan="5">HAL Implementation Details</th>
16550          </tr>
16551          <tr class="entry_cont">
16552            <td class="entry_details" colspan="5">
16553              <p>The output streams must maintain square pixels at all
16554times,<wbr/> no matter what the relative aspect ratios of the
16555crop region and the stream are.<wbr/>  Negative values for
16556corner are allowed for raw output if full pixel array is
16557larger than active pixel array.<wbr/> Width and height may be
16558rounded to nearest larger supportable width,<wbr/> especially
16559for raw output,<wbr/> where only a few fixed scales may be
16560possible.<wbr/></p>
16561<p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
16562size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
16563<ul>
16564<li>
16565<p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
16566array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
16567<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>
16568<ol>
16569<li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
16570cropped pixel area by (tx,<wbr/> ty),<wbr/>
16571where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
16572and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
16573(sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
16574<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
16575<li>Scale the width and height of requested cropRegion with scaling factor of
16576sensor<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
16577respectively.<wbr/>
16578Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
16579with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
16580follow the general cropping rule for this new cropRegion and effective active
16581array size.<wbr/></li>
16582</ol>
16583</li>
16584<li>
16585<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/>
16586The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
16587The reported cropRegion may be slightly different with the requested cropRegion since
16588the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
16589hardware limitations.<wbr/></p>
16590</li>
16591</ul>
16592<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
16593            </td>
16594          </tr>
16595
16596          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16597           <!-- end of entry -->
16598        
16599        
16600
16601      <!-- end of kind -->
16602      </tbody>
16603      <tr><td colspan="6" class="kind">static</td></tr>
16604
16605      <thead class="entries_header">
16606        <tr>
16607          <th class="th_name">Property Name</th>
16608          <th class="th_type">Type</th>
16609          <th class="th_description">Description</th>
16610          <th class="th_units">Units</th>
16611          <th class="th_range">Range</th>
16612          <th class="th_tags">Tags</th>
16613        </tr>
16614      </thead>
16615
16616      <tbody>
16617
16618        
16619
16620        
16621
16622        
16623
16624        
16625
16626                
16627          <tr class="entry" id="static_android.scaler.availableFormats">
16628            <td class="entry_name
16629                entry_name_deprecated
16630             " rowspan="5">
16631              android.<wbr/>scaler.<wbr/>available<wbr/>Formats
16632            </td>
16633            <td class="entry_type">
16634                <span class="entry_type_name entry_type_name_enum">int32</span>
16635                <span class="entry_type_container">x</span>
16636
16637                <span class="entry_type_array">
16638                  n
16639                </span>
16640              <span class="entry_type_visibility"> [hidden as imageFormat]</span>
16641
16642
16643
16644              <span class="entry_type_deprecated">[deprecated] </span>
16645
16646
16647                <ul class="entry_type_enum">
16648                  <li>
16649                    <span class="entry_type_enum_name">RAW16</span>
16650                    <span class="entry_type_enum_optional">[optional]</span>
16651                    <span class="entry_type_enum_value">0x20</span>
16652                    <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
16653buffers with 16-bit pixels.<wbr/></p>
16654<p>Buffers of this format are typically expected to have a
16655Bayer Color Filter Array (CFA) layout,<wbr/> which is given in
16656<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
16657CFAs that are not representable by a format in
16658<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
16659use this format.<wbr/></p>
16660<p>Buffers of this format will also follow the constraints given for
16661RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
16662<p>This format is intended to give users access to the full contents
16663of the buffers coming directly from the image sensor prior to any
16664cropping or scaling operations,<wbr/> and all coordinate systems for
16665metadata used for this format are relative to the size of the
16666active region of the image sensor before any geometric distortion
16667correction has been applied (i.<wbr/>e.<wbr/>
16668<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
16669dimensions for this format are limited to the full dimensions of
16670the 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
16671<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
16672only supported output size).<wbr/></p>
16673<p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
16674the full set of performance guarantees.<wbr/></p></span>
16675                  </li>
16676                  <li>
16677                    <span class="entry_type_enum_name">RAW_OPAQUE</span>
16678                    <span class="entry_type_enum_optional">[optional]</span>
16679                    <span class="entry_type_enum_value">0x24</span>
16680                    <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or
16681<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a>
16682as referred in public API) is a format for raw image buffers
16683coming from an image sensor.<wbr/></p>
16684<p>The actual structure of buffers of this format is
16685platform-specific,<wbr/> but must follow several constraints:</p>
16686<ol>
16687<li>No image post-processing operations may have been applied to
16688buffers of this type.<wbr/> These buffers contain raw image data coming
16689directly from the image sensor.<wbr/></li>
16690<li>If a buffer of this format is passed to the camera device for
16691reprocessing,<wbr/> the resulting images will be identical to the images
16692produced if the buffer had come directly from the sensor and was
16693processed with the same settings.<wbr/></li>
16694</ol>
16695<p>The intended use for this format is to allow access to the native
16696raw format buffers coming directly from the camera sensor without
16697any additional conversions or decrease in framerate.<wbr/></p>
16698<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
16699performance guarantees.<wbr/></p></span>
16700                  </li>
16701                  <li>
16702                    <span class="entry_type_enum_name">YV12</span>
16703                    <span class="entry_type_enum_optional">[optional]</span>
16704                    <span class="entry_type_enum_value">0x32315659</span>
16705                    <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
16706                  </li>
16707                  <li>
16708                    <span class="entry_type_enum_name">YCrCb_420_SP</span>
16709                    <span class="entry_type_enum_optional">[optional]</span>
16710                    <span class="entry_type_enum_value">0x11</span>
16711                    <span class="entry_type_enum_notes"><p>NV21</p></span>
16712                  </li>
16713                  <li>
16714                    <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span>
16715                    <span class="entry_type_enum_value">0x22</span>
16716                    <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
16717                  </li>
16718                  <li>
16719                    <span class="entry_type_enum_name">YCbCr_420_888</span>
16720                    <span class="entry_type_enum_value">0x23</span>
16721                    <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
16722                  </li>
16723                  <li>
16724                    <span class="entry_type_enum_name">BLOB</span>
16725                    <span class="entry_type_enum_value">0x21</span>
16726                    <span class="entry_type_enum_notes"><p>JPEG format</p></span>
16727                  </li>
16728                </ul>
16729
16730            </td> <!-- entry_type -->
16731
16732            <td class="entry_description">
16733              <p>The list of image formats that are supported by this
16734camera device for output streams.<wbr/></p>
16735            </td>
16736
16737            <td class="entry_units">
16738            </td>
16739
16740            <td class="entry_range">
16741              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16742            </td>
16743
16744            <td class="entry_tags">
16745              <ul class="entry_tags">
16746                  <li><a href="#tag_BC">BC</a></li>
16747              </ul>
16748            </td>
16749
16750          </tr>
16751          <tr class="entries_header">
16752            <th class="th_details" colspan="5">Details</th>
16753          </tr>
16754          <tr class="entry_cont">
16755            <td class="entry_details" colspan="5">
16756              <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
16757<p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
16758            </td>
16759          </tr>
16760
16761          <tr class="entries_header">
16762            <th class="th_details" colspan="5">HAL Implementation Details</th>
16763          </tr>
16764          <tr class="entry_cont">
16765            <td class="entry_details" colspan="5">
16766              <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
16767system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
16768<p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
16769gralloc module will select a format based on the usage flags provided
16770by the camera HAL device and the other endpoint of the stream.<wbr/> It is
16771usually used by preview and recording streams,<wbr/> where the application doesn't
16772need access the image data.<wbr/></p>
16773<p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
16774needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
16775<p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
16776<p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
16777recommended that any information used by the camera device when
16778processing images is fully expressed by the result metadata
16779for that image buffer.<wbr/></p>
16780            </td>
16781          </tr>
16782
16783          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16784           <!-- end of entry -->
16785        
16786                
16787          <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
16788            <td class="entry_name
16789                entry_name_deprecated
16790             " rowspan="3">
16791              android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
16792            </td>
16793            <td class="entry_type">
16794                <span class="entry_type_name">int64</span>
16795                <span class="entry_type_container">x</span>
16796
16797                <span class="entry_type_array">
16798                  n
16799                </span>
16800              <span class="entry_type_visibility"> [hidden]</span>
16801
16802
16803
16804              <span class="entry_type_deprecated">[deprecated] </span>
16805
16806
16807
16808            </td> <!-- entry_type -->
16809
16810            <td class="entry_description">
16811              <p>The minimum frame duration that is supported
16812for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
16813            </td>
16814
16815            <td class="entry_units">
16816              Nanoseconds
16817            </td>
16818
16819            <td class="entry_range">
16820              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16821              <p>TODO: Remove property.<wbr/></p>
16822            </td>
16823
16824            <td class="entry_tags">
16825              <ul class="entry_tags">
16826                  <li><a href="#tag_BC">BC</a></li>
16827              </ul>
16828            </td>
16829
16830          </tr>
16831          <tr class="entries_header">
16832            <th class="th_details" colspan="5">Details</th>
16833          </tr>
16834          <tr class="entry_cont">
16835            <td class="entry_details" colspan="5">
16836              <p>This corresponds to the minimum steady-state frame duration when only
16837that JPEG stream is active and captured in a burst,<wbr/> with all
16838processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
16839<p>When multiple streams are configured,<wbr/> the minimum
16840frame duration will be &gt;= max(individual stream min
16841durations)</p>
16842            </td>
16843          </tr>
16844
16845
16846          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16847           <!-- end of entry -->
16848        
16849                
16850          <tr class="entry" id="static_android.scaler.availableJpegSizes">
16851            <td class="entry_name
16852                entry_name_deprecated
16853             " rowspan="5">
16854              android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
16855            </td>
16856            <td class="entry_type">
16857                <span class="entry_type_name">int32</span>
16858                <span class="entry_type_container">x</span>
16859
16860                <span class="entry_type_array">
16861                  n x 2
16862                </span>
16863              <span class="entry_type_visibility"> [hidden as size]</span>
16864
16865
16866
16867              <span class="entry_type_deprecated">[deprecated] </span>
16868
16869
16870
16871            </td> <!-- entry_type -->
16872
16873            <td class="entry_description">
16874              <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
16875            </td>
16876
16877            <td class="entry_units">
16878            </td>
16879
16880            <td class="entry_range">
16881              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16882              <p>TODO: Remove property.<wbr/></p>
16883            </td>
16884
16885            <td class="entry_tags">
16886              <ul class="entry_tags">
16887                  <li><a href="#tag_BC">BC</a></li>
16888              </ul>
16889            </td>
16890
16891          </tr>
16892          <tr class="entries_header">
16893            <th class="th_details" colspan="5">Details</th>
16894          </tr>
16895          <tr class="entry_cont">
16896            <td class="entry_details" colspan="5">
16897              <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
16898sensor 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>
16899            </td>
16900          </tr>
16901
16902          <tr class="entries_header">
16903            <th class="th_details" colspan="5">HAL Implementation Details</th>
16904          </tr>
16905          <tr class="entry_cont">
16906            <td class="entry_details" colspan="5">
16907              <p>The HAL must include sensor maximum resolution
16908(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
16909and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
16910            </td>
16911          </tr>
16912
16913          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16914           <!-- end of entry -->
16915        
16916                
16917          <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
16918            <td class="entry_name
16919             " rowspan="3">
16920              android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
16921            </td>
16922            <td class="entry_type">
16923                <span class="entry_type_name">float</span>
16924
16925              <span class="entry_type_visibility"> [public]</span>
16926
16927
16928              <span class="entry_type_hwlevel">[legacy] </span>
16929
16930
16931
16932
16933            </td> <!-- entry_type -->
16934
16935            <td class="entry_description">
16936              <p>The maximum ratio between both active area width
16937and crop region width,<wbr/> and active area height and
16938crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
16939            </td>
16940
16941            <td class="entry_units">
16942              Zoom scale factor
16943            </td>
16944
16945            <td class="entry_range">
16946              <p>&gt;=1</p>
16947            </td>
16948
16949            <td class="entry_tags">
16950              <ul class="entry_tags">
16951                  <li><a href="#tag_BC">BC</a></li>
16952              </ul>
16953            </td>
16954
16955          </tr>
16956          <tr class="entries_header">
16957            <th class="th_details" colspan="5">Details</th>
16958          </tr>
16959          <tr class="entry_cont">
16960            <td class="entry_details" colspan="5">
16961              <p>This represents the maximum amount of zooming possible by
16962the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
16963window size.<wbr/></p>
16964<p>Crop regions that have a width or height that is smaller
16965than this ratio allows will be rounded up to the minimum
16966allowed size by the camera device.<wbr/></p>
16967            </td>
16968          </tr>
16969
16970
16971          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16972           <!-- end of entry -->
16973        
16974                
16975          <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
16976            <td class="entry_name
16977                entry_name_deprecated
16978             " rowspan="3">
16979              android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
16980            </td>
16981            <td class="entry_type">
16982                <span class="entry_type_name">int64</span>
16983                <span class="entry_type_container">x</span>
16984
16985                <span class="entry_type_array">
16986                  n
16987                </span>
16988              <span class="entry_type_visibility"> [hidden]</span>
16989
16990
16991
16992              <span class="entry_type_deprecated">[deprecated] </span>
16993
16994
16995
16996            </td> <!-- entry_type -->
16997
16998            <td class="entry_description">
16999              <p>For each available processed output size (defined in
17000<a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
17001minimum supportable frame duration for that size.<wbr/></p>
17002            </td>
17003
17004            <td class="entry_units">
17005              Nanoseconds
17006            </td>
17007
17008            <td class="entry_range">
17009              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17010            </td>
17011
17012            <td class="entry_tags">
17013              <ul class="entry_tags">
17014                  <li><a href="#tag_BC">BC</a></li>
17015              </ul>
17016            </td>
17017
17018          </tr>
17019          <tr class="entries_header">
17020            <th class="th_details" colspan="5">Details</th>
17021          </tr>
17022          <tr class="entry_cont">
17023            <td class="entry_details" colspan="5">
17024              <p>This should correspond to the frame duration when only that processed
17025stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
17026set to FAST.<wbr/></p>
17027<p>When multiple streams are configured,<wbr/> the minimum frame duration will
17028be &gt;= max(individual stream min durations).<wbr/></p>
17029            </td>
17030          </tr>
17031
17032
17033          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17034           <!-- end of entry -->
17035        
17036                
17037          <tr class="entry" id="static_android.scaler.availableProcessedSizes">
17038            <td class="entry_name
17039                entry_name_deprecated
17040             " rowspan="5">
17041              android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
17042            </td>
17043            <td class="entry_type">
17044                <span class="entry_type_name">int32</span>
17045                <span class="entry_type_container">x</span>
17046
17047                <span class="entry_type_array">
17048                  n x 2
17049                </span>
17050              <span class="entry_type_visibility"> [hidden as size]</span>
17051
17052
17053
17054              <span class="entry_type_deprecated">[deprecated] </span>
17055
17056
17057
17058            </td> <!-- entry_type -->
17059
17060            <td class="entry_description">
17061              <p>The resolutions available for use with
17062processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
17063platform opaque YUV/<wbr/>RGB streams to the GPU or video
17064encoders.<wbr/></p>
17065            </td>
17066
17067            <td class="entry_units">
17068            </td>
17069
17070            <td class="entry_range">
17071              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17072            </td>
17073
17074            <td class="entry_tags">
17075              <ul class="entry_tags">
17076                  <li><a href="#tag_BC">BC</a></li>
17077              </ul>
17078            </td>
17079
17080          </tr>
17081          <tr class="entries_header">
17082            <th class="th_details" colspan="5">Details</th>
17083          </tr>
17084          <tr class="entry_cont">
17085            <td class="entry_details" colspan="5">
17086              <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
17087<p>For a given use case,<wbr/> the actual maximum supported resolution
17088may be lower than what is listed here,<wbr/> depending on the destination
17089Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
17090the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
17091smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
17092can provide.<wbr/></p>
17093<p>Please reference the documentation for the image data destination to
17094check if it limits the maximum size for image data.<wbr/></p>
17095            </td>
17096          </tr>
17097
17098          <tr class="entries_header">
17099            <th class="th_details" colspan="5">HAL Implementation Details</th>
17100          </tr>
17101          <tr class="entry_cont">
17102            <td class="entry_details" colspan="5">
17103              <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/>
17104the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>
17105and each below resolution if it is smaller than or equal to the sensor
17106maximum resolution (if they are not listed in JPEG sizes already):</p>
17107<ul>
17108<li>240p (320 x 240)</li>
17109<li>480p (640 x 480)</li>
17110<li>720p (1280 x 720)</li>
17111<li>1080p (1920 x 1080)</li>
17112</ul>
17113<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/>
17114the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
17115            </td>
17116          </tr>
17117
17118          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17119           <!-- end of entry -->
17120        
17121                
17122          <tr class="entry" id="static_android.scaler.availableRawMinDurations">
17123            <td class="entry_name
17124                entry_name_deprecated
17125             " rowspan="3">
17126              android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
17127            </td>
17128            <td class="entry_type">
17129                <span class="entry_type_name">int64</span>
17130                <span class="entry_type_container">x</span>
17131
17132                <span class="entry_type_array">
17133                  n
17134                </span>
17135              <span class="entry_type_visibility"> [system]</span>
17136
17137
17138
17139              <span class="entry_type_deprecated">[deprecated] </span>
17140
17141
17142
17143            </td> <!-- entry_type -->
17144
17145            <td class="entry_description">
17146              <p>For each available raw output size (defined in
17147<a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
17148supportable frame duration for that size.<wbr/></p>
17149            </td>
17150
17151            <td class="entry_units">
17152              Nanoseconds
17153            </td>
17154
17155            <td class="entry_range">
17156              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17157            </td>
17158
17159            <td class="entry_tags">
17160              <ul class="entry_tags">
17161                  <li><a href="#tag_BC">BC</a></li>
17162              </ul>
17163            </td>
17164
17165          </tr>
17166          <tr class="entries_header">
17167            <th class="th_details" colspan="5">Details</th>
17168          </tr>
17169          <tr class="entry_cont">
17170            <td class="entry_details" colspan="5">
17171              <p>Should correspond to the frame duration when only the raw stream is
17172active.<wbr/></p>
17173<p>When multiple streams are configured,<wbr/> the minimum
17174frame duration will be &gt;= max(individual stream min
17175durations)</p>
17176            </td>
17177          </tr>
17178
17179
17180          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17181           <!-- end of entry -->
17182        
17183                
17184          <tr class="entry" id="static_android.scaler.availableRawSizes">
17185            <td class="entry_name
17186                entry_name_deprecated
17187             " rowspan="1">
17188              android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
17189            </td>
17190            <td class="entry_type">
17191                <span class="entry_type_name">int32</span>
17192                <span class="entry_type_container">x</span>
17193
17194                <span class="entry_type_array">
17195                  n x 2
17196                </span>
17197              <span class="entry_type_visibility"> [system as size]</span>
17198
17199
17200
17201              <span class="entry_type_deprecated">[deprecated] </span>
17202
17203
17204
17205            </td> <!-- entry_type -->
17206
17207            <td class="entry_description">
17208              <p>The resolutions available for use with raw
17209sensor output streams,<wbr/> listed as width,<wbr/>
17210height</p>
17211            </td>
17212
17213            <td class="entry_units">
17214            </td>
17215
17216            <td class="entry_range">
17217              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17218            </td>
17219
17220            <td class="entry_tags">
17221            </td>
17222
17223          </tr>
17224
17225
17226          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17227           <!-- end of entry -->
17228        
17229                
17230          <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
17231            <td class="entry_name
17232             " rowspan="5">
17233              android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
17234            </td>
17235            <td class="entry_type">
17236                <span class="entry_type_name">int32</span>
17237
17238              <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
17239
17240
17241
17242
17243
17244
17245            </td> <!-- entry_type -->
17246
17247            <td class="entry_description">
17248              <p>The mapping of image formats that are supported by this
17249camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
17250            </td>
17251
17252            <td class="entry_units">
17253            </td>
17254
17255            <td class="entry_range">
17256            </td>
17257
17258            <td class="entry_tags">
17259              <ul class="entry_tags">
17260                  <li><a href="#tag_REPROC">REPROC</a></li>
17261              </ul>
17262            </td>
17263
17264          </tr>
17265          <tr class="entries_header">
17266            <th class="th_details" colspan="5">Details</th>
17267          </tr>
17268          <tr class="entry_cont">
17269            <td class="entry_details" colspan="5">
17270              <p>All camera devices with at least 1
17271<a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
17272available input format.<wbr/></p>
17273<p>The camera device will support the following map of formats,<wbr/>
17274if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
17275<table>
17276<thead>
17277<tr>
17278<th align="left">Input Format</th>
17279<th align="left">Output Format</th>
17280<th align="left">Capability</th>
17281</tr>
17282</thead>
17283<tbody>
17284<tr>
17285<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
17286<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17287<td align="left">PRIVATE_<wbr/>REPROCESSING</td>
17288</tr>
17289<tr>
17290<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
17291<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>
17292<td align="left">PRIVATE_<wbr/>REPROCESSING</td>
17293</tr>
17294<tr>
17295<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>
17296<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17297<td align="left">YUV_<wbr/>REPROCESSING</td>
17298</tr>
17299<tr>
17300<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>
17301<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>
17302<td align="left">YUV_<wbr/>REPROCESSING</td>
17303</tr>
17304</tbody>
17305</table>
17306<p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/>  A
17307PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
17308with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
17309<p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
17310or 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>
17311<p>Attempting to configure an input stream with output streams not
17312listed as available in this map is not valid.<wbr/></p>
17313            </td>
17314          </tr>
17315
17316          <tr class="entries_header">
17317            <th class="th_details" colspan="5">HAL Implementation Details</th>
17318          </tr>
17319          <tr class="entry_cont">
17320            <td class="entry_details" colspan="5">
17321              <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
17322of the image format enumerations.<wbr/> The PRIVATE format refers to the
17323HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
17324the actual format by using the gralloc usage flags.<wbr/>
17325For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
17326processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
17327See camera3.<wbr/>h for more details.<wbr/></p>
17328<p>This value is encoded as a variable-size array-of-arrays.<wbr/>
17329The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
17330<code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
17331inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
17332<p>A code sample to read/<wbr/>write this encoding (with a device that
17333supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
17334and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
17335<pre><code>//<wbr/> reading
17336int32_<wbr/>t* contents = &amp;entry.<wbr/>i32[0];
17337for (size_<wbr/>t i = 0; i &lt; entry.<wbr/>count; ) {
17338    int32_<wbr/>t format = contents[i++];
17339    int32_<wbr/>t length = contents[i++];
17340    int32_<wbr/>t output_<wbr/>formats[length];
17341    memcpy(&amp;output_<wbr/>formats[0],<wbr/> &amp;contents[i],<wbr/>
17342           length * sizeof(int32_<wbr/>t));
17343    i += length;
17344}
17345
17346//<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
17347int32_<wbr/>t[] contents = {
17348  IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
17349  YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
17350};
17351update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &amp;contents[0],<wbr/>
17352      sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &amp;updated_<wbr/>entry);
17353</code></pre>
17354<p>If the HAL claims to support any of the capabilities listed in the
17355above details,<wbr/> then it must also support all the input-output
17356combinations listed for that capability.<wbr/> It can optionally support
17357additional formats if it so chooses.<wbr/></p>
17358            </td>
17359          </tr>
17360
17361          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17362           <!-- end of entry -->
17363        
17364                
17365          <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
17366            <td class="entry_name
17367             " rowspan="5">
17368              android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
17369            </td>
17370            <td class="entry_type">
17371                <span class="entry_type_name entry_type_name_enum">int32</span>
17372                <span class="entry_type_container">x</span>
17373
17374                <span class="entry_type_array">
17375                  n x 4
17376                </span>
17377              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
17378
17379
17380              <span class="entry_type_hwlevel">[legacy] </span>
17381
17382
17383
17384                <ul class="entry_type_enum">
17385                  <li>
17386                    <span class="entry_type_enum_name">OUTPUT</span>
17387                  </li>
17388                  <li>
17389                    <span class="entry_type_enum_name">INPUT</span>
17390                  </li>
17391                </ul>
17392
17393            </td> <!-- entry_type -->
17394
17395            <td class="entry_description">
17396              <p>The available stream configurations that this
17397camera device supports
17398(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
17399            </td>
17400
17401            <td class="entry_units">
17402            </td>
17403
17404            <td class="entry_range">
17405            </td>
17406
17407            <td class="entry_tags">
17408            </td>
17409
17410          </tr>
17411          <tr class="entries_header">
17412            <th class="th_details" colspan="5">Details</th>
17413          </tr>
17414          <tr class="entry_cont">
17415            <td class="entry_details" colspan="5">
17416              <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
17417tuples.<wbr/></p>
17418<p>For a given use case,<wbr/> the actual maximum supported resolution
17419may be lower than what is listed here,<wbr/> depending on the destination
17420Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
17421the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
17422smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
17423can provide.<wbr/></p>
17424<p>Please reference the documentation for the image data destination to
17425check if it limits the maximum size for image data.<wbr/></p>
17426<p>Not all output formats may be supported in a configuration with
17427an input stream of a particular format.<wbr/> For more details,<wbr/> see
17428<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
17429<p>The following table describes the minimum required output stream
17430configurations based on the hardware level
17431(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
17432<table>
17433<thead>
17434<tr>
17435<th align="center">Format</th>
17436<th align="center">Size</th>
17437<th align="center">Hardware Level</th>
17438<th align="center">Notes</th>
17439</tr>
17440</thead>
17441<tbody>
17442<tr>
17443<td align="center">JPEG</td>
17444<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
17445<td align="center">Any</td>
17446<td align="center"></td>
17447</tr>
17448<tr>
17449<td align="center">JPEG</td>
17450<td align="center">1920x1080 (1080p)</td>
17451<td align="center">Any</td>
17452<td align="center">if 1080p &lt;= activeArraySize</td>
17453</tr>
17454<tr>
17455<td align="center">JPEG</td>
17456<td align="center">1280x720 (720)</td>
17457<td align="center">Any</td>
17458<td align="center">if 720p &lt;= activeArraySize</td>
17459</tr>
17460<tr>
17461<td align="center">JPEG</td>
17462<td align="center">640x480 (480p)</td>
17463<td align="center">Any</td>
17464<td align="center">if 480p &lt;= activeArraySize</td>
17465</tr>
17466<tr>
17467<td align="center">JPEG</td>
17468<td align="center">320x240 (240p)</td>
17469<td align="center">Any</td>
17470<td align="center">if 240p &lt;= activeArraySize</td>
17471</tr>
17472<tr>
17473<td align="center">YUV_<wbr/>420_<wbr/>888</td>
17474<td align="center">all output sizes available for JPEG</td>
17475<td align="center">FULL</td>
17476<td align="center"></td>
17477</tr>
17478<tr>
17479<td align="center">YUV_<wbr/>420_<wbr/>888</td>
17480<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
17481<td align="center">LIMITED</td>
17482<td align="center"></td>
17483</tr>
17484<tr>
17485<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
17486<td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
17487<td align="center">Any</td>
17488<td align="center"></td>
17489</tr>
17490</tbody>
17491</table>
17492<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
17493mandatory stream configurations on a per-capability basis.<wbr/></p>
17494            </td>
17495          </tr>
17496
17497          <tr class="entries_header">
17498            <th class="th_details" colspan="5">HAL Implementation Details</th>
17499          </tr>
17500          <tr class="entry_cont">
17501            <td class="entry_details" colspan="5">
17502              <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
17503of sensor maximum resolution for JPEG formats (regardless of hardware
17504level).<wbr/></p>
17505<p>(The following is a rewording of the above required table):</p>
17506<p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
17507<ul>
17508<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
17509(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
17510(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/>
17511it does not have to be included in the supported JPEG sizes.<wbr/></li>
17512<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
17513the dimensions being a multiple of 16.<wbr/></li>
17514</ul>
17515<p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
17516However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
17517resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
17518additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
17519if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
17520ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
175213264x2448.<wbr/></p>
17522<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/>
17523the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
17524here as output streams.<wbr/></p>
17525<p>It must also include each below resolution if it is smaller than or
17526equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
17527formats),<wbr/> as output streams:</p>
17528<ul>
17529<li>240p (320 x 240)</li>
17530<li>480p (640 x 480)</li>
17531<li>720p (1280 x 720)</li>
17532<li>1080p (1920 x 1080)</li>
17533</ul>
17534<p>For LIMITED capability devices
17535(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
17536the HAL only has to list up to the maximum video size
17537supported by the device.<wbr/></p>
17538<p>Regardless of hardware level,<wbr/> every output resolution available for
17539YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
17540<p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
17541<ul>
17542<li>availableFormats</li>
17543<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
17544</ul>
17545            </td>
17546          </tr>
17547
17548          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17549           <!-- end of entry -->
17550        
17551                
17552          <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
17553            <td class="entry_name
17554             " rowspan="3">
17555              android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
17556            </td>
17557            <td class="entry_type">
17558                <span class="entry_type_name">int64</span>
17559                <span class="entry_type_container">x</span>
17560
17561                <span class="entry_type_array">
17562                  4 x n
17563                </span>
17564              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
17565
17566
17567              <span class="entry_type_hwlevel">[legacy] </span>
17568
17569
17570
17571
17572            </td> <!-- entry_type -->
17573
17574            <td class="entry_description">
17575              <p>This lists the minimum frame duration for each
17576format/<wbr/>size combination.<wbr/></p>
17577            </td>
17578
17579            <td class="entry_units">
17580              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
17581            </td>
17582
17583            <td class="entry_range">
17584            </td>
17585
17586            <td class="entry_tags">
17587              <ul class="entry_tags">
17588                  <li><a href="#tag_V1">V1</a></li>
17589              </ul>
17590            </td>
17591
17592          </tr>
17593          <tr class="entries_header">
17594            <th class="th_details" colspan="5">Details</th>
17595          </tr>
17596          <tr class="entry_cont">
17597            <td class="entry_details" colspan="5">
17598              <p>This should correspond to the frame duration when only that
17599stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
17600set to either OFF or FAST.<wbr/></p>
17601<p>When multiple streams are used in a request,<wbr/> the minimum frame
17602duration will be max(individual stream min durations).<wbr/></p>
17603<p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
17604is the same regardless of whether the stream is input or output.<wbr/></p>
17605<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
17606<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
17607calculating the max frame rate.<wbr/></p>
17608<p>(Keep in sync with
17609<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p>
17610            </td>
17611          </tr>
17612
17613
17614          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17615           <!-- end of entry -->
17616        
17617                
17618          <tr class="entry" id="static_android.scaler.availableStallDurations">
17619            <td class="entry_name
17620             " rowspan="5">
17621              android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
17622            </td>
17623            <td class="entry_type">
17624                <span class="entry_type_name">int64</span>
17625                <span class="entry_type_container">x</span>
17626
17627                <span class="entry_type_array">
17628                  4 x n
17629                </span>
17630              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
17631
17632
17633              <span class="entry_type_hwlevel">[legacy] </span>
17634
17635
17636
17637
17638            </td> <!-- entry_type -->
17639
17640            <td class="entry_description">
17641              <p>This lists the maximum stall duration for each
17642output format/<wbr/>size combination.<wbr/></p>
17643            </td>
17644
17645            <td class="entry_units">
17646              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
17647            </td>
17648
17649            <td class="entry_range">
17650            </td>
17651
17652            <td class="entry_tags">
17653              <ul class="entry_tags">
17654                  <li><a href="#tag_V1">V1</a></li>
17655              </ul>
17656            </td>
17657
17658          </tr>
17659          <tr class="entries_header">
17660            <th class="th_details" colspan="5">Details</th>
17661          </tr>
17662          <tr class="entry_cont">
17663            <td class="entry_details" colspan="5">
17664              <p>A stall duration is how much extra time would get added
17665to the normal minimum frame duration for a repeating request
17666that has streams with non-zero stall.<wbr/></p>
17667<p>For example,<wbr/> consider JPEG captures which have the following
17668characteristics:</p>
17669<ul>
17670<li>JPEG streams act like processed YUV streams in requests for which
17671they are not included; in requests in which they are directly
17672referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
17673JPEG stream requires the underlying YUV data to always be ready for
17674use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
17675frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
17676<li>The JPEG processor can run concurrently to the rest of the camera
17677pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
17678</ul>
17679<p>In other words,<wbr/> using a repeating YUV request would result
17680in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
17681JPEG request is submitted periodically,<wbr/> the frame rate will stay
17682at 30 FPS (as long as we wait for the previous JPEG to return each
17683time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
17684the frame rate will drop from 30 FPS.<wbr/></p>
17685<p>In general,<wbr/> submitting a new request with a non-0 stall time
17686stream will <em>not</em> cause a frame rate drop unless there are still
17687outstanding buffers for that stream from previous requests.<wbr/></p>
17688<p>Submitting a repeating request with streams (call this <code>S</code>)
17689is the same as setting the minimum frame duration from
17690the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
17691the maximum stall duration for <code>S</code>.<wbr/></p>
17692<p>If interleaving requests with and without a stall duration,<wbr/>
17693a request will stall by the maximum of the remaining times
17694for each can-stall stream with outstanding buffers.<wbr/></p>
17695<p>This means that a stalling request will not have an exposure start
17696until the stall has completed.<wbr/></p>
17697<p>This should correspond to the stall duration when only that stream is
17698active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
17699or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
17700effectively results in an indeterminate stall duration for all
17701streams in a request (the regular stall calculation rules are
17702ignored).<wbr/></p>
17703<p>The following formats may always have a stall duration:</p>
17704<ul>
17705<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
17706<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
17707</ul>
17708<p>The following formats will never have a stall duration:</p>
17709<ul>
17710<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>
17711<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
17712</ul>
17713<p>All other formats may or may not have an allowed stall duration on
17714a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
17715for more details.<wbr/></p>
17716<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
17717calculating the max frame rate (absent stalls).<wbr/></p>
17718<p>(Keep up to date with
17719<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> )</p>
17720            </td>
17721          </tr>
17722
17723          <tr class="entries_header">
17724            <th class="th_details" colspan="5">HAL Implementation Details</th>
17725          </tr>
17726          <tr class="entry_cont">
17727            <td class="entry_details" colspan="5">
17728              <p>If possible,<wbr/> it is recommended that all non-JPEG formats
17729(such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
17730and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
17731            </td>
17732          </tr>
17733
17734          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17735           <!-- end of entry -->
17736        
17737                
17738          <tr class="entry" id="static_android.scaler.streamConfigurationMap">
17739            <td class="entry_name
17740             " rowspan="5">
17741              android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
17742            </td>
17743            <td class="entry_type">
17744                <span class="entry_type_name">int32</span>
17745
17746              <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span>
17747
17748              <span class="entry_type_synthetic">[synthetic] </span>
17749
17750              <span class="entry_type_hwlevel">[legacy] </span>
17751
17752
17753
17754
17755            </td> <!-- entry_type -->
17756
17757            <td class="entry_description">
17758              <p>The available stream configurations that this
17759camera device supports; also includes the minimum frame durations
17760and the stall durations for each format/<wbr/>size combination.<wbr/></p>
17761            </td>
17762
17763            <td class="entry_units">
17764            </td>
17765
17766            <td class="entry_range">
17767            </td>
17768
17769            <td class="entry_tags">
17770            </td>
17771
17772          </tr>
17773          <tr class="entries_header">
17774            <th class="th_details" colspan="5">Details</th>
17775          </tr>
17776          <tr class="entry_cont">
17777            <td class="entry_details" colspan="5">
17778              <p>All camera devices will support sensor maximum resolution (defined by
17779<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>
17780<p>For a given use case,<wbr/> the actual maximum supported resolution
17781may be lower than what is listed here,<wbr/> depending on the destination
17782Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
17783the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
17784smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
17785can provide.<wbr/></p>
17786<p>Please reference the documentation for the image data destination to
17787check if it limits the maximum size for image data.<wbr/></p>
17788<p>The following table describes the minimum required output stream
17789configurations based on the hardware level
17790(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
17791<table>
17792<thead>
17793<tr>
17794<th align="center">Format</th>
17795<th align="center">Size</th>
17796<th align="center">Hardware Level</th>
17797<th align="center">Notes</th>
17798</tr>
17799</thead>
17800<tbody>
17801<tr>
17802<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17803<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
17804<td align="center">Any</td>
17805<td align="center"></td>
17806</tr>
17807<tr>
17808<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17809<td align="center">1920x1080 (1080p)</td>
17810<td align="center">Any</td>
17811<td align="center">if 1080p &lt;= activeArraySize</td>
17812</tr>
17813<tr>
17814<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17815<td align="center">1280x720 (720p)</td>
17816<td align="center">Any</td>
17817<td align="center">if 720p &lt;= activeArraySize</td>
17818</tr>
17819<tr>
17820<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17821<td align="center">640x480 (480p)</td>
17822<td align="center">Any</td>
17823<td align="center">if 480p &lt;= activeArraySize</td>
17824</tr>
17825<tr>
17826<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17827<td align="center">320x240 (240p)</td>
17828<td align="center">Any</td>
17829<td align="center">if 240p &lt;= activeArraySize</td>
17830</tr>
17831<tr>
17832<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>
17833<td align="center">all output sizes available for JPEG</td>
17834<td align="center">FULL</td>
17835<td align="center"></td>
17836</tr>
17837<tr>
17838<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>
17839<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
17840<td align="center">LIMITED</td>
17841<td align="center"></td>
17842</tr>
17843<tr>
17844<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
17845<td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
17846<td align="center">Any</td>
17847<td align="center"></td>
17848</tr>
17849</tbody>
17850</table>
17851<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
17852stream configurations on a per-capability basis.<wbr/></p>
17853<p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
17854<ul>
17855<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
17856(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
17857(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/>
17858it does not have to be included in the supported JPEG sizes.<wbr/></li>
17859<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
17860the dimensions being a multiple of 16.<wbr/>
17861Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
17862However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
17863resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
17864additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
17865if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
17866ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
178673264x2448.<wbr/></li>
17868</ul>
17869            </td>
17870          </tr>
17871
17872          <tr class="entries_header">
17873            <th class="th_details" colspan="5">HAL Implementation Details</th>
17874          </tr>
17875          <tr class="entry_cont">
17876            <td class="entry_details" colspan="5">
17877              <p>Do not set this property directly
17878(it is synthetic and will not be available at the HAL layer);
17879set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
17880<p>Not all output formats may be supported in a configuration with
17881an input stream of a particular format.<wbr/> For more details,<wbr/> see
17882<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
17883<p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
17884of sensor maximum resolution for JPEG formats (regardless of hardware
17885level).<wbr/></p>
17886<p>(The following is a rewording of the above required table):</p>
17887<p>The HAL must include sensor maximum resolution (defined by
17888<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
17889<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/>
17890the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
17891here as output streams.<wbr/></p>
17892<p>It must also include each below resolution if it is smaller than or
17893equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
17894formats),<wbr/> as output streams:</p>
17895<ul>
17896<li>240p (320 x 240)</li>
17897<li>480p (640 x 480)</li>
17898<li>720p (1280 x 720)</li>
17899<li>1080p (1920 x 1080)</li>
17900</ul>
17901<p>For LIMITED capability devices
17902(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
17903the HAL only has to list up to the maximum video size
17904supported by the device.<wbr/></p>
17905<p>Regardless of hardware level,<wbr/> every output resolution available for
17906YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
17907<p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
17908<ul>
17909<li>availableFormats</li>
17910<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
17911</ul>
17912            </td>
17913          </tr>
17914
17915          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17916           <!-- end of entry -->
17917        
17918                
17919          <tr class="entry" id="static_android.scaler.croppingType">
17920            <td class="entry_name
17921             " rowspan="3">
17922              android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
17923            </td>
17924            <td class="entry_type">
17925                <span class="entry_type_name entry_type_name_enum">byte</span>
17926
17927              <span class="entry_type_visibility"> [public]</span>
17928
17929
17930              <span class="entry_type_hwlevel">[legacy] </span>
17931
17932
17933
17934                <ul class="entry_type_enum">
17935                  <li>
17936                    <span class="entry_type_enum_name">CENTER_ONLY</span>
17937                    <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
17938                  </li>
17939                  <li>
17940                    <span class="entry_type_enum_name">FREEFORM</span>
17941                    <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
17942                  </li>
17943                </ul>
17944
17945            </td> <!-- entry_type -->
17946
17947            <td class="entry_description">
17948              <p>The crop type that this camera device supports.<wbr/></p>
17949            </td>
17950
17951            <td class="entry_units">
17952            </td>
17953
17954            <td class="entry_range">
17955            </td>
17956
17957            <td class="entry_tags">
17958            </td>
17959
17960          </tr>
17961          <tr class="entries_header">
17962            <th class="th_details" colspan="5">Details</th>
17963          </tr>
17964          <tr class="entry_cont">
17965            <td class="entry_details" colspan="5">
17966              <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
17967device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
17968crop 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>)
17969and keep the crop region width and height unchanged.<wbr/> The camera device will return the
17970final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
17971<p>Camera devices that support FREEFORM cropping will support any crop region that
17972is inside of the active array.<wbr/> The camera device will apply the same crop region and
17973return 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>
17974<p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
17975            </td>
17976          </tr>
17977
17978
17979          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17980           <!-- end of entry -->
17981        
17982        
17983
17984      <!-- end of kind -->
17985      </tbody>
17986      <tr><td colspan="6" class="kind">dynamic</td></tr>
17987
17988      <thead class="entries_header">
17989        <tr>
17990          <th class="th_name">Property Name</th>
17991          <th class="th_type">Type</th>
17992          <th class="th_description">Description</th>
17993          <th class="th_units">Units</th>
17994          <th class="th_range">Range</th>
17995          <th class="th_tags">Tags</th>
17996        </tr>
17997      </thead>
17998
17999      <tbody>
18000
18001        
18002
18003        
18004
18005        
18006
18007        
18008
18009                
18010          <tr class="entry" id="dynamic_android.scaler.cropRegion">
18011            <td class="entry_name
18012             " rowspan="5">
18013              android.<wbr/>scaler.<wbr/>crop<wbr/>Region
18014            </td>
18015            <td class="entry_type">
18016                <span class="entry_type_name">int32</span>
18017                <span class="entry_type_container">x</span>
18018
18019                <span class="entry_type_array">
18020                  4
18021                </span>
18022              <span class="entry_type_visibility"> [public as rectangle]</span>
18023
18024
18025              <span class="entry_type_hwlevel">[legacy] </span>
18026
18027
18028
18029
18030            </td> <!-- entry_type -->
18031
18032            <td class="entry_description">
18033              <p>The desired region of the sensor to read out for this capture.<wbr/></p>
18034            </td>
18035
18036            <td class="entry_units">
18037              Pixel coordinates relative to
18038          android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
18039            </td>
18040
18041            <td class="entry_range">
18042            </td>
18043
18044            <td class="entry_tags">
18045              <ul class="entry_tags">
18046                  <li><a href="#tag_BC">BC</a></li>
18047              </ul>
18048            </td>
18049
18050          </tr>
18051          <tr class="entries_header">
18052            <th class="th_details" colspan="5">Details</th>
18053          </tr>
18054          <tr class="entry_cont">
18055            <td class="entry_details" colspan="5">
18056              <p>This control can be used to implement digital zoom.<wbr/></p>
18057<p>The crop region coordinate system is based off
18058<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
18059top-left corner of the sensor active array.<wbr/></p>
18060<p>Output streams use this rectangle to produce their output,<wbr/>
18061cropping to a smaller region if necessary to maintain the
18062stream's aspect ratio,<wbr/> then scaling the sensor input to
18063match the output's configured resolution.<wbr/></p>
18064<p>The crop region is applied after the RAW to other color
18065space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
18066(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
18067croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
18068<p>For non-raw streams,<wbr/> any additional per-stream cropping will
18069be done to maximize the final pixel area of the stream.<wbr/></p>
18070<p>For example,<wbr/> if the crop region is set to a 4:3 aspect
18071ratio,<wbr/> then 4:3 streams will use the exact crop
18072region.<wbr/> 16:9 streams will further crop vertically
18073(letterbox).<wbr/></p>
18074<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
18075outputs will crop horizontally (pillarbox),<wbr/> and 16:9
18076streams will match exactly.<wbr/> These additional crops will
18077be centered within the crop region.<wbr/></p>
18078<p>The width and height of the crop region cannot
18079be set to be smaller than
18080<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
18081<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>
18082<p>The camera device may adjust the crop region to account
18083for rounding and other hardware requirements; the final
18084crop region used will be included in the output capture
18085result.<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>The output streams must maintain square pixels at all
18095times,<wbr/> no matter what the relative aspect ratios of the
18096crop region and the stream are.<wbr/>  Negative values for
18097corner are allowed for raw output if full pixel array is
18098larger than active pixel array.<wbr/> Width and height may be
18099rounded to nearest larger supportable width,<wbr/> especially
18100for raw output,<wbr/> where only a few fixed scales may be
18101possible.<wbr/></p>
18102<p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
18103size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
18104<ul>
18105<li>
18106<p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
18107array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
18108<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>
18109<ol>
18110<li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
18111cropped pixel area by (tx,<wbr/> ty),<wbr/>
18112where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
18113and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
18114(sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
18115<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
18116<li>Scale the width and height of requested cropRegion with scaling factor of
18117sensor<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
18118respectively.<wbr/>
18119Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
18120with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
18121follow the general cropping rule for this new cropRegion and effective active
18122array size.<wbr/></li>
18123</ol>
18124</li>
18125<li>
18126<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/>
18127The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
18128The reported cropRegion may be slightly different with the requested cropRegion since
18129the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
18130hardware limitations.<wbr/></p>
18131</li>
18132</ul>
18133<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
18134            </td>
18135          </tr>
18136
18137          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18138           <!-- end of entry -->
18139        
18140        
18141
18142      <!-- end of kind -->
18143      </tbody>
18144
18145  <!-- end of section -->
18146  <tr><td colspan="6" id="section_sensor" class="section">sensor</td></tr>
18147
18148
18149      <tr><td colspan="6" class="kind">controls</td></tr>
18150
18151      <thead class="entries_header">
18152        <tr>
18153          <th class="th_name">Property Name</th>
18154          <th class="th_type">Type</th>
18155          <th class="th_description">Description</th>
18156          <th class="th_units">Units</th>
18157          <th class="th_range">Range</th>
18158          <th class="th_tags">Tags</th>
18159        </tr>
18160      </thead>
18161
18162      <tbody>
18163
18164        
18165
18166        
18167
18168        
18169
18170        
18171
18172                
18173          <tr class="entry" id="controls_android.sensor.exposureTime">
18174            <td class="entry_name
18175             " rowspan="3">
18176              android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
18177            </td>
18178            <td class="entry_type">
18179                <span class="entry_type_name">int64</span>
18180
18181              <span class="entry_type_visibility"> [public]</span>
18182
18183
18184              <span class="entry_type_hwlevel">[full] </span>
18185
18186
18187
18188
18189            </td> <!-- entry_type -->
18190
18191            <td class="entry_description">
18192              <p>Duration each pixel is exposed to
18193light.<wbr/></p>
18194            </td>
18195
18196            <td class="entry_units">
18197              Nanoseconds
18198            </td>
18199
18200            <td class="entry_range">
18201              <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
18202            </td>
18203
18204            <td class="entry_tags">
18205              <ul class="entry_tags">
18206                  <li><a href="#tag_V1">V1</a></li>
18207              </ul>
18208            </td>
18209
18210          </tr>
18211          <tr class="entries_header">
18212            <th class="th_details" colspan="5">Details</th>
18213          </tr>
18214          <tr class="entry_cont">
18215            <td class="entry_details" colspan="5">
18216              <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
18217duration exposed to the nearest possible value (rather than expose longer).<wbr/>
18218The final exposure time used will be available in the output capture result.<wbr/></p>
18219<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
18220OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
18221            </td>
18222          </tr>
18223
18224
18225          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18226           <!-- end of entry -->
18227        
18228                
18229          <tr class="entry" id="controls_android.sensor.frameDuration">
18230            <td class="entry_name
18231             " rowspan="5">
18232              android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
18233            </td>
18234            <td class="entry_type">
18235                <span class="entry_type_name">int64</span>
18236
18237              <span class="entry_type_visibility"> [public]</span>
18238
18239
18240              <span class="entry_type_hwlevel">[full] </span>
18241
18242
18243
18244
18245            </td> <!-- entry_type -->
18246
18247            <td class="entry_description">
18248              <p>Duration from start of frame exposure to
18249start of next frame exposure.<wbr/></p>
18250            </td>
18251
18252            <td class="entry_units">
18253              Nanoseconds
18254            </td>
18255
18256            <td class="entry_range">
18257              <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
18258<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
18259is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
18260            </td>
18261
18262            <td class="entry_tags">
18263              <ul class="entry_tags">
18264                  <li><a href="#tag_V1">V1</a></li>
18265              </ul>
18266            </td>
18267
18268          </tr>
18269          <tr class="entries_header">
18270            <th class="th_details" colspan="5">Details</th>
18271          </tr>
18272          <tr class="entry_cont">
18273            <td class="entry_details" colspan="5">
18274              <p>The maximum frame rate that can be supported by a camera subsystem is
18275a function of many factors:</p>
18276<ul>
18277<li>Requested resolutions of output image streams</li>
18278<li>Availability of binning /<wbr/> skipping modes on the imager</li>
18279<li>The bandwidth of the imager interface</li>
18280<li>The bandwidth of the various ISP processing blocks</li>
18281</ul>
18282<p>Since these factors can vary greatly between different ISPs and
18283sensors,<wbr/> the camera abstraction tries to represent the bandwidth
18284restrictions with as simple a model as possible.<wbr/></p>
18285<p>The model presented has the following characteristics:</p>
18286<ul>
18287<li>The image sensor is always configured to output the smallest
18288resolution possible given the application's requested output stream
18289sizes.<wbr/>  The smallest resolution is defined as being at least as large
18290as the largest requested output stream size; the camera pipeline must
18291never digitally upsample sensor data when the crop region covers the
18292whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
18293resolutions are configured,<wbr/> the sensor can provide a higher frame
18294rate.<wbr/></li>
18295<li>Since any request may use any or all the currently configured
18296output streams,<wbr/> the sensor and ISP must be configured to support
18297scaling a single capture to all the streams at the same time.<wbr/>  This
18298means the camera pipeline must be ready to produce the largest
18299requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
18300frame rate of a given configured stream set is governed only by the
18301largest requested stream resolution.<wbr/></li>
18302<li>Using more than one output stream in a request does not affect the
18303frame duration.<wbr/></li>
18304<li>Certain format-streams may need to do additional background processing
18305before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
18306can run concurrently to the rest of the camera pipeline,<wbr/> but
18307cannot process more than 1 capture at a time.<wbr/></li>
18308</ul>
18309<p>The necessary information for the application,<wbr/> given the model above,<wbr/>
18310is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using
18311<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
18312These are used to determine the maximum frame rate /<wbr/> minimum frame
18313duration that is possible for a given stream configuration.<wbr/></p>
18314<p>Specifically,<wbr/> the application can use the following rules to
18315determine the minimum frame duration it can request from the camera
18316device:</p>
18317<ol>
18318<li>Let the set of currently configured input/<wbr/>output streams
18319be called <code>S</code>.<wbr/></li>
18320<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking
18321it 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>
18322(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be
18323called <code>F</code>.<wbr/></li>
18324<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
18325for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
18326used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
18327</ol>
18328<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>
18329using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code>
18330determines the steady state frame rate that the application will get
18331if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of
18332request be called <code>Rsimple</code>.<wbr/></p>
18333<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
18334by a single capture of a new request <code>Rstall</code> (which has at least
18335one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
18336same minimum frame duration this will not cause a frame rate loss
18337if all buffers from the previous <code>Rstall</code> have already been
18338delivered.<wbr/></p>
18339<p>For more details about stalling,<wbr/> see
18340<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
18341<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
18342OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
18343            </td>
18344          </tr>
18345
18346          <tr class="entries_header">
18347            <th class="th_details" colspan="5">HAL Implementation Details</th>
18348          </tr>
18349          <tr class="entry_cont">
18350            <td class="entry_details" colspan="5">
18351              <p>For more details about stalling,<wbr/> see
18352<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
18353            </td>
18354          </tr>
18355
18356          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18357           <!-- end of entry -->
18358        
18359                
18360          <tr class="entry" id="controls_android.sensor.sensitivity">
18361            <td class="entry_name
18362             " rowspan="5">
18363              android.<wbr/>sensor.<wbr/>sensitivity
18364            </td>
18365            <td class="entry_type">
18366                <span class="entry_type_name">int32</span>
18367
18368              <span class="entry_type_visibility"> [public]</span>
18369
18370
18371              <span class="entry_type_hwlevel">[full] </span>
18372
18373
18374
18375
18376            </td> <!-- entry_type -->
18377
18378            <td class="entry_description">
18379              <p>The amount of gain applied to sensor data
18380before processing.<wbr/></p>
18381            </td>
18382
18383            <td class="entry_units">
18384              ISO arithmetic units
18385            </td>
18386
18387            <td class="entry_range">
18388              <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
18389            </td>
18390
18391            <td class="entry_tags">
18392              <ul class="entry_tags">
18393                  <li><a href="#tag_V1">V1</a></li>
18394              </ul>
18395            </td>
18396
18397          </tr>
18398          <tr class="entries_header">
18399            <th class="th_details" colspan="5">Details</th>
18400          </tr>
18401          <tr class="entry_cont">
18402            <td class="entry_details" colspan="5">
18403              <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
18404as defined in ISO 12232:2006.<wbr/></p>
18405<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
18406if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
18407is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
18408<p>If the camera device cannot apply the exact sensitivity
18409requested,<wbr/> it will reduce the gain to the nearest supported
18410value.<wbr/> The final sensitivity used will be available in the
18411output capture result.<wbr/></p>
18412<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
18413OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
18414            </td>
18415          </tr>
18416
18417          <tr class="entries_header">
18418            <th class="th_details" colspan="5">HAL Implementation Details</th>
18419          </tr>
18420          <tr class="entry_cont">
18421            <td class="entry_details" colspan="5">
18422              <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
18423            </td>
18424          </tr>
18425
18426          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18427           <!-- end of entry -->
18428        
18429                
18430          <tr class="entry" id="controls_android.sensor.testPatternData">
18431            <td class="entry_name
18432             " rowspan="5">
18433              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
18434            </td>
18435            <td class="entry_type">
18436                <span class="entry_type_name">int32</span>
18437                <span class="entry_type_container">x</span>
18438
18439                <span class="entry_type_array">
18440                  4
18441                </span>
18442              <span class="entry_type_visibility"> [public]</span>
18443
18444
18445
18446
18447
18448
18449            </td> <!-- entry_type -->
18450
18451            <td class="entry_description">
18452              <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
18453when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
18454            </td>
18455
18456            <td class="entry_units">
18457            </td>
18458
18459            <td class="entry_range">
18460            </td>
18461
18462            <td class="entry_tags">
18463            </td>
18464
18465          </tr>
18466          <tr class="entries_header">
18467            <th class="th_details" colspan="5">Details</th>
18468          </tr>
18469          <tr class="entry_cont">
18470            <td class="entry_details" colspan="5">
18471              <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
18472The camera device then uses the most significant X bits
18473that correspond to how many bits are in its Bayer raw sensor
18474output.<wbr/></p>
18475<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
1847610 most significant bits from each color channel.<wbr/></p>
18477            </td>
18478          </tr>
18479
18480          <tr class="entries_header">
18481            <th class="th_details" colspan="5">HAL Implementation Details</th>
18482          </tr>
18483          <tr class="entry_cont">
18484            <td class="entry_details" colspan="5">
18485              
18486            </td>
18487          </tr>
18488
18489          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18490           <!-- end of entry -->
18491        
18492                
18493          <tr class="entry" id="controls_android.sensor.testPatternMode">
18494            <td class="entry_name
18495             " rowspan="5">
18496              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
18497            </td>
18498            <td class="entry_type">
18499                <span class="entry_type_name entry_type_name_enum">int32</span>
18500
18501              <span class="entry_type_visibility"> [public]</span>
18502
18503
18504
18505
18506
18507                <ul class="entry_type_enum">
18508                  <li>
18509                    <span class="entry_type_enum_name">OFF</span>
18510                    <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
18511device returns captures from the image sensor.<wbr/></p>
18512<p>This is the default if the key is not set.<wbr/></p></span>
18513                  </li>
18514                  <li>
18515                    <span class="entry_type_enum_name">SOLID_COLOR</span>
18516                    <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
18517respective color channel provided in
18518<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
18519<p>For example:</p>
18520<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
18521</code></pre>
18522<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
18523<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
18524</code></pre>
18525<p>All red pixels are 100% red.<wbr/> Only the odd green pixels
18526are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
18527                  </li>
18528                  <li>
18529                    <span class="entry_type_enum_name">COLOR_BARS</span>
18530                    <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
18531<p>The vertical bars (left-to-right) are as follows:</p>
18532<ul>
18533<li>100% white</li>
18534<li>yellow</li>
18535<li>cyan</li>
18536<li>green</li>
18537<li>magenta</li>
18538<li>red</li>
18539<li>blue</li>
18540<li>black</li>
18541</ul>
18542<p>In general the image would look like the following:</p>
18543<pre><code>W Y C G M R B K
18544W Y C G M R B K
18545W Y C G M R B K
18546W Y C G M R B K
18547W Y C G M R B K
18548.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
18549.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
18550.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
18551
18552(B = Blue,<wbr/> K = Black)
18553</code></pre>
18554<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
18555When this is not possible,<wbr/> the bar size should be rounded
18556down to the nearest integer and the pattern can repeat
18557on the right side.<wbr/></p>
18558<p>Each bar's height must always take up the full sensor
18559pixel array height.<wbr/></p>
18560<p>Each pixel in this test pattern must be set to either
185610% intensity or 100% intensity.<wbr/></p></span>
18562                  </li>
18563                  <li>
18564                    <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
18565                    <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
18566each bar should start at its specified color at the top,<wbr/>
18567and fade to gray at the bottom.<wbr/></p>
18568<p>Furthermore each bar is further subdivided into a left and
18569right half.<wbr/> The left half should have a smooth gradient,<wbr/>
18570and the right half should have a quantized gradient.<wbr/></p>
18571<p>In particular,<wbr/> the right half's should consist of blocks of the
18572same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
18573<p>The least significant bits in the quantized gradient should
18574be copied from the most significant bits of the smooth gradient.<wbr/></p>
18575<p>The height of each bar should always be a multiple of 128.<wbr/>
18576When this is not the case,<wbr/> the pattern should repeat at the bottom
18577of the image.<wbr/></p></span>
18578                  </li>
18579                  <li>
18580                    <span class="entry_type_enum_name">PN9</span>
18581                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
18582generated from a PN9 512-bit sequence (typically implemented
18583in hardware with a linear feedback shift register).<wbr/></p>
18584<p>The generator should be reset at the beginning of each frame,<wbr/>
18585and thus each subsequent raw frame with this test pattern should
18586be exactly the same as the last.<wbr/></p></span>
18587                  </li>
18588                  <li>
18589                    <span class="entry_type_enum_name">CUSTOM1</span>
18590                    <span class="entry_type_enum_value">256</span>
18591                    <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
18592available only on this camera device are at least this numeric
18593value.<wbr/></p>
18594<p>All of the custom test patterns will be static
18595(that is the raw image must not vary from frame to frame).<wbr/></p></span>
18596                  </li>
18597                </ul>
18598
18599            </td> <!-- entry_type -->
18600
18601            <td class="entry_description">
18602              <p>When enabled,<wbr/> the sensor sends a test pattern instead of
18603doing a real exposure from the camera.<wbr/></p>
18604            </td>
18605
18606            <td class="entry_units">
18607            </td>
18608
18609            <td class="entry_range">
18610              <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
18611            </td>
18612
18613            <td class="entry_tags">
18614            </td>
18615
18616          </tr>
18617          <tr class="entries_header">
18618            <th class="th_details" colspan="5">Details</th>
18619          </tr>
18620          <tr class="entry_cont">
18621            <td class="entry_details" colspan="5">
18622              <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
18623by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
18624work as normal.<wbr/></p>
18625<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
18626occur (and that the test pattern remain unmodified,<wbr/> since the flash
18627would not actually affect it).<wbr/></p>
18628<p>Defaults to OFF.<wbr/></p>
18629            </td>
18630          </tr>
18631
18632          <tr class="entries_header">
18633            <th class="th_details" colspan="5">HAL Implementation Details</th>
18634          </tr>
18635          <tr class="entry_cont">
18636            <td class="entry_details" colspan="5">
18637              <p>All test patterns are specified in the Bayer domain.<wbr/></p>
18638<p>The HAL may choose to substitute test patterns from the sensor
18639with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
18640indistinguishable to the ISP whether the data came from the
18641sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
18642            </td>
18643          </tr>
18644
18645          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18646           <!-- end of entry -->
18647        
18648        
18649
18650      <!-- end of kind -->
18651      </tbody>
18652      <tr><td colspan="6" class="kind">static</td></tr>
18653
18654      <thead class="entries_header">
18655        <tr>
18656          <th class="th_name">Property Name</th>
18657          <th class="th_type">Type</th>
18658          <th class="th_description">Description</th>
18659          <th class="th_units">Units</th>
18660          <th class="th_range">Range</th>
18661          <th class="th_tags">Tags</th>
18662        </tr>
18663      </thead>
18664
18665      <tbody>
18666
18667        
18668
18669        
18670
18671        
18672
18673        
18674                
18675            
18676
18677                
18678          <tr class="entry" id="static_android.sensor.info.activeArraySize">
18679            <td class="entry_name
18680             " rowspan="5">
18681              android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
18682            </td>
18683            <td class="entry_type">
18684                <span class="entry_type_name">int32</span>
18685                <span class="entry_type_container">x</span>
18686
18687                <span class="entry_type_array">
18688                  4
18689                </span>
18690              <span class="entry_type_visibility"> [public as rectangle]</span>
18691
18692
18693              <span class="entry_type_hwlevel">[legacy] </span>
18694
18695
18696                <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
18697
18698
18699            </td> <!-- entry_type -->
18700
18701            <td class="entry_description">
18702              <p>The area of the image sensor which corresponds to active pixels after any geometric
18703distortion correction has been applied.<wbr/></p>
18704            </td>
18705
18706            <td class="entry_units">
18707              Pixel coordinates on the image sensor
18708            </td>
18709
18710            <td class="entry_range">
18711            </td>
18712
18713            <td class="entry_tags">
18714              <ul class="entry_tags">
18715                  <li><a href="#tag_RAW">RAW</a></li>
18716              </ul>
18717            </td>
18718
18719          </tr>
18720          <tr class="entries_header">
18721            <th class="th_details" colspan="5">Details</th>
18722          </tr>
18723          <tr class="entry_cont">
18724            <td class="entry_details" colspan="5">
18725              <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
18726the region that actually receives light from the scene) after any geometric correction
18727has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
18728image output formats aside from the raw formats.<wbr/></p>
18729<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
18730the full pixel array,<wbr/> and the size of the full pixel array is given by
18731<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
18732<p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
18733<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
18734this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
18735<p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
18736include black calibration pixels or other inactive regions,<wbr/> and geometric correction
18737resulting in scaling or cropping may have been applied.<wbr/></p>
18738            </td>
18739          </tr>
18740
18741          <tr class="entries_header">
18742            <th class="th_details" colspan="5">HAL Implementation Details</th>
18743          </tr>
18744          <tr class="entry_cont">
18745            <td class="entry_details" colspan="5">
18746              <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
18747&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
18748The <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>
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.sensitivityRange">
18757            <td class="entry_name
18758             " rowspan="3">
18759              android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
18760            </td>
18761            <td class="entry_type">
18762                <span class="entry_type_name">int32</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 rangeInt]</span>
18769
18770
18771              <span class="entry_type_hwlevel">[full] </span>
18772
18773
18774                <div class="entry_type_notes">Range of supported sensitivities</div>
18775
18776
18777            </td> <!-- entry_type -->
18778
18779            <td class="entry_description">
18780              <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
18781camera device.<wbr/></p>
18782            </td>
18783
18784            <td class="entry_units">
18785            </td>
18786
18787            <td class="entry_range">
18788              <p>Min &lt;= 100,<wbr/> Max &gt;= 800</p>
18789            </td>
18790
18791            <td class="entry_tags">
18792              <ul class="entry_tags">
18793                  <li><a href="#tag_BC">BC</a></li>
18794                  <li><a href="#tag_V1">V1</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>The values are the standard ISO sensitivity values,<wbr/>
18805as defined in ISO 12232:2006.<wbr/></p>
18806            </td>
18807          </tr>
18808
18809
18810          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18811           <!-- end of entry -->
18812        
18813                
18814          <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
18815            <td class="entry_name
18816             " rowspan="1">
18817              android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
18818            </td>
18819            <td class="entry_type">
18820                <span class="entry_type_name entry_type_name_enum">byte</span>
18821
18822              <span class="entry_type_visibility"> [public]</span>
18823
18824
18825              <span class="entry_type_hwlevel">[full] </span>
18826
18827
18828
18829                <ul class="entry_type_enum">
18830                  <li>
18831                    <span class="entry_type_enum_name">RGGB</span>
18832                  </li>
18833                  <li>
18834                    <span class="entry_type_enum_name">GRBG</span>
18835                  </li>
18836                  <li>
18837                    <span class="entry_type_enum_name">GBRG</span>
18838                  </li>
18839                  <li>
18840                    <span class="entry_type_enum_name">BGGR</span>
18841                  </li>
18842                  <li>
18843                    <span class="entry_type_enum_name">RGB</span>
18844                    <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
18845values for each pixel,<wbr/> instead of just 1 16-bit value
18846per pixel.<wbr/></p></span>
18847                  </li>
18848                </ul>
18849
18850            </td> <!-- entry_type -->
18851
18852            <td class="entry_description">
18853              <p>The arrangement of color filters on sensor;
18854represents the colors in the top-left 2x2 section of
18855the sensor,<wbr/> in reading order.<wbr/></p>
18856            </td>
18857
18858            <td class="entry_units">
18859            </td>
18860
18861            <td class="entry_range">
18862            </td>
18863
18864            <td class="entry_tags">
18865              <ul class="entry_tags">
18866                  <li><a href="#tag_RAW">RAW</a></li>
18867              </ul>
18868            </td>
18869
18870          </tr>
18871
18872
18873          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18874           <!-- end of entry -->
18875        
18876                
18877          <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
18878            <td class="entry_name
18879             " rowspan="3">
18880              android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
18881            </td>
18882            <td class="entry_type">
18883                <span class="entry_type_name">int64</span>
18884                <span class="entry_type_container">x</span>
18885
18886                <span class="entry_type_array">
18887                  2
18888                </span>
18889              <span class="entry_type_visibility"> [public as rangeLong]</span>
18890
18891
18892              <span class="entry_type_hwlevel">[full] </span>
18893
18894
18895                <div class="entry_type_notes">nanoseconds</div>
18896
18897
18898            </td> <!-- entry_type -->
18899
18900            <td class="entry_description">
18901              <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
18902by this camera device.<wbr/></p>
18903            </td>
18904
18905            <td class="entry_units">
18906              Nanoseconds
18907            </td>
18908
18909            <td class="entry_range">
18910              <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
18911capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
18912the maximum exposure time will be greater than 100ms.<wbr/></p>
18913            </td>
18914
18915            <td class="entry_tags">
18916              <ul class="entry_tags">
18917                  <li><a href="#tag_V1">V1</a></li>
18918              </ul>
18919            </td>
18920
18921          </tr>
18922
18923          <tr class="entries_header">
18924            <th class="th_details" colspan="5">HAL Implementation Details</th>
18925          </tr>
18926          <tr class="entry_cont">
18927            <td class="entry_details" colspan="5">
18928              <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
18929The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
18930100ms.<wbr/></p>
18931            </td>
18932          </tr>
18933
18934          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18935           <!-- end of entry -->
18936        
18937                
18938          <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
18939            <td class="entry_name
18940             " rowspan="5">
18941              android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
18942            </td>
18943            <td class="entry_type">
18944                <span class="entry_type_name">int64</span>
18945
18946              <span class="entry_type_visibility"> [public]</span>
18947
18948
18949              <span class="entry_type_hwlevel">[full] </span>
18950
18951
18952
18953
18954            </td> <!-- entry_type -->
18955
18956            <td class="entry_description">
18957              <p>The maximum possible frame duration (minimum frame rate) for
18958<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
18959            </td>
18960
18961            <td class="entry_units">
18962              Nanoseconds
18963            </td>
18964
18965            <td class="entry_range">
18966              <p>For FULL capability devices
18967(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
18968            </td>
18969
18970            <td class="entry_tags">
18971              <ul class="entry_tags">
18972                  <li><a href="#tag_V1">V1</a></li>
18973              </ul>
18974            </td>
18975
18976          </tr>
18977          <tr class="entries_header">
18978            <th class="th_details" colspan="5">Details</th>
18979          </tr>
18980          <tr class="entry_cont">
18981            <td class="entry_details" colspan="5">
18982              <p>Attempting to use frame durations beyond the maximum will result in the frame
18983duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
18984durations.<wbr/></p>
18985<p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
18986for the minimum frame duration values.<wbr/></p>
18987            </td>
18988          </tr>
18989
18990          <tr class="entries_header">
18991            <th class="th_details" colspan="5">HAL Implementation Details</th>
18992          </tr>
18993          <tr class="entry_cont">
18994            <td class="entry_details" colspan="5">
18995              <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
18996The maximum of the range SHOULD be at least
189971 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
18998<p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
18999equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
19000value (since exposure time overrides frame duration).<wbr/></p>
19001<p>Available minimum frame durations for JPEG must be no greater
19002than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
19003minimum frame durations (for that respective size).<wbr/></p>
19004<p>Since JPEG processing is considered offline and can take longer than
19005a single uncompressed capture,<wbr/> refer to
19006<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
19007for details about encoding this scenario.<wbr/></p>
19008            </td>
19009          </tr>
19010
19011          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19012           <!-- end of entry -->
19013        
19014                
19015          <tr class="entry" id="static_android.sensor.info.physicalSize">
19016            <td class="entry_name
19017             " rowspan="5">
19018              android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
19019            </td>
19020            <td class="entry_type">
19021                <span class="entry_type_name">float</span>
19022                <span class="entry_type_container">x</span>
19023
19024                <span class="entry_type_array">
19025                  2
19026                </span>
19027              <span class="entry_type_visibility"> [public as sizeF]</span>
19028
19029
19030              <span class="entry_type_hwlevel">[legacy] </span>
19031
19032
19033                <div class="entry_type_notes">width x height</div>
19034
19035
19036            </td> <!-- entry_type -->
19037
19038            <td class="entry_description">
19039              <p>The physical dimensions of the full pixel
19040array.<wbr/></p>
19041            </td>
19042
19043            <td class="entry_units">
19044              Millimeters
19045            </td>
19046
19047            <td class="entry_range">
19048            </td>
19049
19050            <td class="entry_tags">
19051              <ul class="entry_tags">
19052                  <li><a href="#tag_V1">V1</a></li>
19053                  <li><a href="#tag_BC">BC</a></li>
19054              </ul>
19055            </td>
19056
19057          </tr>
19058          <tr class="entries_header">
19059            <th class="th_details" colspan="5">Details</th>
19060          </tr>
19061          <tr class="entry_cont">
19062            <td class="entry_details" colspan="5">
19063              <p>This is the physical size of the sensor pixel
19064array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19065            </td>
19066          </tr>
19067
19068          <tr class="entries_header">
19069            <th class="th_details" colspan="5">HAL Implementation Details</th>
19070          </tr>
19071          <tr class="entry_cont">
19072            <td class="entry_details" colspan="5">
19073              <p>Needed for FOV calculation for old API</p>
19074            </td>
19075          </tr>
19076
19077          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19078           <!-- end of entry -->
19079        
19080                
19081          <tr class="entry" id="static_android.sensor.info.pixelArraySize">
19082            <td class="entry_name
19083             " rowspan="3">
19084              android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
19085            </td>
19086            <td class="entry_type">
19087                <span class="entry_type_name">int32</span>
19088                <span class="entry_type_container">x</span>
19089
19090                <span class="entry_type_array">
19091                  2
19092                </span>
19093              <span class="entry_type_visibility"> [public as size]</span>
19094
19095
19096              <span class="entry_type_hwlevel">[legacy] </span>
19097
19098
19099
19100
19101            </td> <!-- entry_type -->
19102
19103            <td class="entry_description">
19104              <p>Dimensions of the full pixel array,<wbr/> possibly
19105including black calibration pixels.<wbr/></p>
19106            </td>
19107
19108            <td class="entry_units">
19109              Pixels
19110            </td>
19111
19112            <td class="entry_range">
19113            </td>
19114
19115            <td class="entry_tags">
19116              <ul class="entry_tags">
19117                  <li><a href="#tag_RAW">RAW</a></li>
19118                  <li><a href="#tag_BC">BC</a></li>
19119              </ul>
19120            </td>
19121
19122          </tr>
19123          <tr class="entries_header">
19124            <th class="th_details" colspan="5">Details</th>
19125          </tr>
19126          <tr class="entry_cont">
19127            <td class="entry_details" colspan="5">
19128              <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
19129<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
19130the raw buffers produced by this sensor.<wbr/></p>
19131<p>If a camera device supports raw sensor formats,<wbr/> either this or
19132<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
19133output formats listed in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> (this depends on
19134whether or not the image sensor returns buffers containing pixels that are not
19135part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
19136<p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
19137or 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
19138defines the rectangle of active pixels that will be included in processed image
19139formats.<wbr/></p>
19140            </td>
19141          </tr>
19142
19143
19144          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19145           <!-- end of entry -->
19146        
19147                
19148          <tr class="entry" id="static_android.sensor.info.whiteLevel">
19149            <td class="entry_name
19150             " rowspan="5">
19151              android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
19152            </td>
19153            <td class="entry_type">
19154                <span class="entry_type_name">int32</span>
19155
19156              <span class="entry_type_visibility"> [public]</span>
19157
19158
19159
19160
19161
19162
19163            </td> <!-- entry_type -->
19164
19165            <td class="entry_description">
19166              <p>Maximum raw value output by sensor.<wbr/></p>
19167            </td>
19168
19169            <td class="entry_units">
19170            </td>
19171
19172            <td class="entry_range">
19173              <p>&gt; 255 (8-bit output)</p>
19174            </td>
19175
19176            <td class="entry_tags">
19177              <ul class="entry_tags">
19178                  <li><a href="#tag_RAW">RAW</a></li>
19179              </ul>
19180            </td>
19181
19182          </tr>
19183          <tr class="entries_header">
19184            <th class="th_details" colspan="5">Details</th>
19185          </tr>
19186          <tr class="entry_cont">
19187            <td class="entry_details" colspan="5">
19188              <p>This specifies the fully-saturated encoding level for the raw
19189sample values from the sensor.<wbr/>  This is typically caused by the
19190sensor becoming highly non-linear or clipping.<wbr/> The minimum for
19191each channel is specified by the offset in the
19192<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
19193<p>The white level is typically determined either by sensor bit depth
19194(8-14 bits is expected),<wbr/> or by the point where the sensor response
19195becomes too non-linear to be useful.<wbr/>  The default value for this is
19196maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
19197<p>The white level values of captured images may vary for different
19198capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
19199represents a coarse approximation for such case.<wbr/> It is recommended
19200to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported
19201by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p>
19202            </td>
19203          </tr>
19204
19205          <tr class="entries_header">
19206            <th class="th_details" colspan="5">HAL Implementation Details</th>
19207          </tr>
19208          <tr class="entry_cont">
19209            <td class="entry_details" colspan="5">
19210              <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
19211so the value for linear sensors should not be significantly lower
19212than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
19213            </td>
19214          </tr>
19215
19216          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19217           <!-- end of entry -->
19218        
19219                
19220          <tr class="entry" id="static_android.sensor.info.timestampSource">
19221            <td class="entry_name
19222             " rowspan="5">
19223              android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
19224            </td>
19225            <td class="entry_type">
19226                <span class="entry_type_name entry_type_name_enum">byte</span>
19227
19228              <span class="entry_type_visibility"> [public]</span>
19229
19230
19231              <span class="entry_type_hwlevel">[legacy] </span>
19232
19233
19234
19235                <ul class="entry_type_enum">
19236                  <li>
19237                    <span class="entry_type_enum_name">UNKNOWN</span>
19238                    <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/>
19239but can not be compared to timestamps from other subsystems
19240(e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
19241camera devices in the same system.<wbr/> Timestamps between streams and results for
19242a single camera instance are comparable,<wbr/> and the timestamps for all buffers
19243and the result metadata generated by a single capture are identical.<wbr/></p></span>
19244                  </li>
19245                  <li>
19246                    <span class="entry_type_enum_name">REALTIME</span>
19247                    <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
19248<a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
19249and they can be compared to other timestamps using that base.<wbr/></p></span>
19250                  </li>
19251                </ul>
19252
19253            </td> <!-- entry_type -->
19254
19255            <td class="entry_description">
19256              <p>The time base source for sensor capture start timestamps.<wbr/></p>
19257            </td>
19258
19259            <td class="entry_units">
19260            </td>
19261
19262            <td class="entry_range">
19263            </td>
19264
19265            <td class="entry_tags">
19266              <ul class="entry_tags">
19267                  <li><a href="#tag_V1">V1</a></li>
19268              </ul>
19269            </td>
19270
19271          </tr>
19272          <tr class="entries_header">
19273            <th class="th_details" colspan="5">Details</th>
19274          </tr>
19275          <tr class="entry_cont">
19276            <td class="entry_details" colspan="5">
19277              <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
19278may not based on a time source that can be compared to other system time sources.<wbr/></p>
19279<p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
19280can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
19281            </td>
19282          </tr>
19283
19284          <tr class="entries_header">
19285            <th class="th_details" colspan="5">HAL Implementation Details</th>
19286          </tr>
19287          <tr class="entry_cont">
19288            <td class="entry_details" colspan="5">
19289              <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp
19290source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera
19291framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See
19292system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and
19293SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video
19294recording might suffer unexpected behavior.<wbr/></p>
19295<p>Also,<wbr/> camera devices implements REALTIME must pass the ITS sensor fusion test which
19296tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p>
19297            </td>
19298          </tr>
19299
19300          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19301           <!-- end of entry -->
19302        
19303                
19304          <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
19305            <td class="entry_name
19306             " rowspan="3">
19307              android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
19308            </td>
19309            <td class="entry_type">
19310                <span class="entry_type_name entry_type_name_enum">byte</span>
19311
19312              <span class="entry_type_visibility"> [public as boolean]</span>
19313
19314
19315
19316
19317
19318                <ul class="entry_type_enum">
19319                  <li>
19320                    <span class="entry_type_enum_name">FALSE</span>
19321                  </li>
19322                  <li>
19323                    <span class="entry_type_enum_name">TRUE</span>
19324                  </li>
19325                </ul>
19326
19327            </td> <!-- entry_type -->
19328
19329            <td class="entry_description">
19330              <p>Whether the RAW images output from this camera device are subject to
19331lens shading correction.<wbr/></p>
19332            </td>
19333
19334            <td class="entry_units">
19335            </td>
19336
19337            <td class="entry_range">
19338            </td>
19339
19340            <td class="entry_tags">
19341            </td>
19342
19343          </tr>
19344          <tr class="entries_header">
19345            <th class="th_details" colspan="5">Details</th>
19346          </tr>
19347          <tr class="entry_cont">
19348            <td class="entry_details" colspan="5">
19349              <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
19350have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
19351not be adjusted for lens shading correction.<wbr/>
19352See <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>
19353<p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
19354Devices with RAW capability will always report this information in this key.<wbr/></p>
19355            </td>
19356          </tr>
19357
19358
19359          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19360           <!-- end of entry -->
19361        
19362                
19363          <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
19364            <td class="entry_name
19365             " rowspan="5">
19366              android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
19367            </td>
19368            <td class="entry_type">
19369                <span class="entry_type_name">int32</span>
19370                <span class="entry_type_container">x</span>
19371
19372                <span class="entry_type_array">
19373                  4
19374                </span>
19375              <span class="entry_type_visibility"> [public as rectangle]</span>
19376
19377
19378              <span class="entry_type_hwlevel">[legacy] </span>
19379
19380
19381                <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
19382
19383
19384            </td> <!-- entry_type -->
19385
19386            <td class="entry_description">
19387              <p>The area of the image sensor which corresponds to active pixels prior to the
19388application of any geometric distortion correction.<wbr/></p>
19389            </td>
19390
19391            <td class="entry_units">
19392              Pixel coordinates on the image sensor
19393            </td>
19394
19395            <td class="entry_range">
19396            </td>
19397
19398            <td class="entry_tags">
19399              <ul class="entry_tags">
19400                  <li><a href="#tag_RAW">RAW</a></li>
19401              </ul>
19402            </td>
19403
19404          </tr>
19405          <tr class="entries_header">
19406            <th class="th_details" colspan="5">Details</th>
19407          </tr>
19408          <tr class="entry_cont">
19409            <td class="entry_details" colspan="5">
19410              <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
19411the region that actually receives light from the scene) before any geometric correction
19412has been applied,<wbr/> and should be treated as the active region rectangle for any of the
19413raw formats.<wbr/>  All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
19414correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
19415the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
19416<p>The size of this region determines the maximum field of view and the maximum number of
19417pixels that an image from this sensor can contain,<wbr/> prior to the application of
19418geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
19419post-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>
19420field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
19421can be calculated by applying the geometric distortion correction fields to this
19422rectangle,<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>
19423<p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
19424dimensions 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/>
19425(x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in
19426<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
19427<ol>
19428<li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
19429<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
19430to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
19431<li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
19432(x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
19433buffers is defined relative to the top,<wbr/> left of the
19434<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>
19435<li>If the resulting corrected pixel coordinate is within the region given in
19436<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
19437processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
19438when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
19439</ol>
19440<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>
19441is (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/>
19442<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
19443correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
19444pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
19445with 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)
19446relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
19447<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19448<p>The currently supported fields that correct for geometric distortion are:</p>
19449<ol>
19450<li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>.<wbr/></li>
19451</ol>
19452<p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same
19453as the post-distortion-corrected rectangle given in
19454<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19455<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
19456the full pixel array,<wbr/> and the size of the full pixel array is given by
19457<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19458<p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
19459full array may include black calibration pixels or other inactive regions.<wbr/></p>
19460            </td>
19461          </tr>
19462
19463          <tr class="entries_header">
19464            <th class="th_details" colspan="5">HAL Implementation Details</th>
19465          </tr>
19466          <tr class="entry_cont">
19467            <td class="entry_details" colspan="5">
19468              <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
19469&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
19470The <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>
19471<p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
19472the same as the post-correction active array region given in
19473<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19474            </td>
19475          </tr>
19476
19477          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19478           <!-- end of entry -->
19479        
19480        
19481        
19482
19483                
19484          <tr class="entry" id="static_android.sensor.referenceIlluminant1">
19485            <td class="entry_name
19486             " rowspan="5">
19487              android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
19488            </td>
19489            <td class="entry_type">
19490                <span class="entry_type_name entry_type_name_enum">byte</span>
19491
19492              <span class="entry_type_visibility"> [public]</span>
19493
19494
19495
19496
19497
19498                <ul class="entry_type_enum">
19499                  <li>
19500                    <span class="entry_type_enum_name">DAYLIGHT</span>
19501                    <span class="entry_type_enum_value">1</span>
19502                  </li>
19503                  <li>
19504                    <span class="entry_type_enum_name">FLUORESCENT</span>
19505                    <span class="entry_type_enum_value">2</span>
19506                  </li>
19507                  <li>
19508                    <span class="entry_type_enum_name">TUNGSTEN</span>
19509                    <span class="entry_type_enum_value">3</span>
19510                    <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
19511                  </li>
19512                  <li>
19513                    <span class="entry_type_enum_name">FLASH</span>
19514                    <span class="entry_type_enum_value">4</span>
19515                  </li>
19516                  <li>
19517                    <span class="entry_type_enum_name">FINE_WEATHER</span>
19518                    <span class="entry_type_enum_value">9</span>
19519                  </li>
19520                  <li>
19521                    <span class="entry_type_enum_name">CLOUDY_WEATHER</span>
19522                    <span class="entry_type_enum_value">10</span>
19523                  </li>
19524                  <li>
19525                    <span class="entry_type_enum_name">SHADE</span>
19526                    <span class="entry_type_enum_value">11</span>
19527                  </li>
19528                  <li>
19529                    <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span>
19530                    <span class="entry_type_enum_value">12</span>
19531                    <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
19532                  </li>
19533                  <li>
19534                    <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span>
19535                    <span class="entry_type_enum_value">13</span>
19536                    <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
19537                  </li>
19538                  <li>
19539                    <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span>
19540                    <span class="entry_type_enum_value">14</span>
19541                    <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
19542                  </li>
19543                  <li>
19544                    <span class="entry_type_enum_name">WHITE_FLUORESCENT</span>
19545                    <span class="entry_type_enum_value">15</span>
19546                    <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
19547                  </li>
19548                  <li>
19549                    <span class="entry_type_enum_name">STANDARD_A</span>
19550                    <span class="entry_type_enum_value">17</span>
19551                  </li>
19552                  <li>
19553                    <span class="entry_type_enum_name">STANDARD_B</span>
19554                    <span class="entry_type_enum_value">18</span>
19555                  </li>
19556                  <li>
19557                    <span class="entry_type_enum_name">STANDARD_C</span>
19558                    <span class="entry_type_enum_value">19</span>
19559                  </li>
19560                  <li>
19561                    <span class="entry_type_enum_name">D55</span>
19562                    <span class="entry_type_enum_value">20</span>
19563                  </li>
19564                  <li>
19565                    <span class="entry_type_enum_name">D65</span>
19566                    <span class="entry_type_enum_value">21</span>
19567                  </li>
19568                  <li>
19569                    <span class="entry_type_enum_name">D75</span>
19570                    <span class="entry_type_enum_value">22</span>
19571                  </li>
19572                  <li>
19573                    <span class="entry_type_enum_name">D50</span>
19574                    <span class="entry_type_enum_value">23</span>
19575                  </li>
19576                  <li>
19577                    <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span>
19578                    <span class="entry_type_enum_value">24</span>
19579                  </li>
19580                </ul>
19581
19582            </td> <!-- entry_type -->
19583
19584            <td class="entry_description">
19585              <p>The standard reference illuminant used as the scene light source when
19586calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
19587<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
19588<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
19589            </td>
19590
19591            <td class="entry_units">
19592            </td>
19593
19594            <td class="entry_range">
19595            </td>
19596
19597            <td class="entry_tags">
19598              <ul class="entry_tags">
19599                  <li><a href="#tag_RAW">RAW</a></li>
19600              </ul>
19601            </td>
19602
19603          </tr>
19604          <tr class="entries_header">
19605            <th class="th_details" colspan="5">Details</th>
19606          </tr>
19607          <tr class="entry_cont">
19608            <td class="entry_details" colspan="5">
19609              <p>The values in this key correspond to the values defined for the
19610EXIF LightSource tag.<wbr/> These illuminants are standard light sources
19611that are often used calibrating camera devices.<wbr/></p>
19612<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
19613<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
19614<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
19615<p>Some devices may choose to provide a second set of calibration
19616information for improved quality,<wbr/> including
19617<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
19618            </td>
19619          </tr>
19620
19621          <tr class="entries_header">
19622            <th class="th_details" colspan="5">HAL Implementation Details</th>
19623          </tr>
19624          <tr class="entry_cont">
19625            <td class="entry_details" colspan="5">
19626              <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
19627and corresponding matrices must be present to support the RAW capability
19628and DNG output.<wbr/></p>
19629<p>When producing raw images with a color profile that has only been
19630calibrated against a single light source,<wbr/> it is valid to omit
19631<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
19632<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/>
19633and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
19634<p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
19635chosen so that it is representative of typical scene lighting.<wbr/>  In
19636general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
19637<p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
19638<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
19639chosen to represent the typical range of scene lighting conditions.<wbr/>
19640In general,<wbr/> low color temperature illuminant such as Standard-A will
19641be chosen for the first reference illuminant and a higher color
19642temperature illuminant such as D65 will be chosen for the second
19643reference illuminant.<wbr/></p>
19644            </td>
19645          </tr>
19646
19647          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19648           <!-- end of entry -->
19649        
19650                
19651          <tr class="entry" id="static_android.sensor.referenceIlluminant2">
19652            <td class="entry_name
19653             " rowspan="3">
19654              android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
19655            </td>
19656            <td class="entry_type">
19657                <span class="entry_type_name">byte</span>
19658
19659              <span class="entry_type_visibility"> [public]</span>
19660
19661
19662
19663
19664
19665
19666            </td> <!-- entry_type -->
19667
19668            <td class="entry_description">
19669              <p>The standard reference illuminant used as the scene light source when
19670calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
19671<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
19672<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
19673            </td>
19674
19675            <td class="entry_units">
19676            </td>
19677
19678            <td class="entry_range">
19679              <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
19680            </td>
19681
19682            <td class="entry_tags">
19683              <ul class="entry_tags">
19684                  <li><a href="#tag_RAW">RAW</a></li>
19685              </ul>
19686            </td>
19687
19688          </tr>
19689          <tr class="entries_header">
19690            <th class="th_details" colspan="5">Details</th>
19691          </tr>
19692          <tr class="entry_cont">
19693            <td class="entry_details" colspan="5">
19694              <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
19695<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
19696<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
19697<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
19698            </td>
19699          </tr>
19700
19701
19702          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19703           <!-- end of entry -->
19704        
19705                
19706          <tr class="entry" id="static_android.sensor.calibrationTransform1">
19707            <td class="entry_name
19708             " rowspan="3">
19709              android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
19710            </td>
19711            <td class="entry_type">
19712                <span class="entry_type_name">rational</span>
19713                <span class="entry_type_container">x</span>
19714
19715                <span class="entry_type_array">
19716                  3 x 3
19717                </span>
19718              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19719
19720
19721
19722
19723                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19724
19725
19726            </td> <!-- entry_type -->
19727
19728            <td class="entry_description">
19729              <p>A per-device calibration transform matrix that maps from the
19730reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
19731            </td>
19732
19733            <td class="entry_units">
19734            </td>
19735
19736            <td class="entry_range">
19737            </td>
19738
19739            <td class="entry_tags">
19740              <ul class="entry_tags">
19741                  <li><a href="#tag_RAW">RAW</a></li>
19742              </ul>
19743            </td>
19744
19745          </tr>
19746          <tr class="entries_header">
19747            <th class="th_details" colspan="5">Details</th>
19748          </tr>
19749          <tr class="entry_cont">
19750            <td class="entry_details" colspan="5">
19751              <p>This matrix is used to correct for per-device variations in the
19752sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
19753<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
19754contains a per-device calibration transform that maps colors
19755from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
19756colorspace) into this camera device's native sensor color
19757space under the first reference illuminant
19758(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
19759            </td>
19760          </tr>
19761
19762
19763          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19764           <!-- end of entry -->
19765        
19766                
19767          <tr class="entry" id="static_android.sensor.calibrationTransform2">
19768            <td class="entry_name
19769             " rowspan="3">
19770              android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
19771            </td>
19772            <td class="entry_type">
19773                <span class="entry_type_name">rational</span>
19774                <span class="entry_type_container">x</span>
19775
19776                <span class="entry_type_array">
19777                  3 x 3
19778                </span>
19779              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19780
19781
19782
19783
19784                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19785
19786
19787            </td> <!-- entry_type -->
19788
19789            <td class="entry_description">
19790              <p>A per-device calibration transform matrix that maps from the
19791reference sensor colorspace to the actual device sensor colorspace
19792(this is the colorspace of the raw buffer data).<wbr/></p>
19793            </td>
19794
19795            <td class="entry_units">
19796            </td>
19797
19798            <td class="entry_range">
19799            </td>
19800
19801            <td class="entry_tags">
19802              <ul class="entry_tags">
19803                  <li><a href="#tag_RAW">RAW</a></li>
19804              </ul>
19805            </td>
19806
19807          </tr>
19808          <tr class="entries_header">
19809            <th class="th_details" colspan="5">Details</th>
19810          </tr>
19811          <tr class="entry_cont">
19812            <td class="entry_details" colspan="5">
19813              <p>This matrix is used to correct for per-device variations in the
19814sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
19815<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
19816contains a per-device calibration transform that maps colors
19817from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
19818colorspace) into this camera device's native sensor color
19819space under the second reference illuminant
19820(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
19821<p>This matrix will only be present if the second reference
19822illuminant is present.<wbr/></p>
19823            </td>
19824          </tr>
19825
19826
19827          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19828           <!-- end of entry -->
19829        
19830                
19831          <tr class="entry" id="static_android.sensor.colorTransform1">
19832            <td class="entry_name
19833             " rowspan="3">
19834              android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
19835            </td>
19836            <td class="entry_type">
19837                <span class="entry_type_name">rational</span>
19838                <span class="entry_type_container">x</span>
19839
19840                <span class="entry_type_array">
19841                  3 x 3
19842                </span>
19843              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19844
19845
19846
19847
19848                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19849
19850
19851            </td> <!-- entry_type -->
19852
19853            <td class="entry_description">
19854              <p>A matrix that transforms color values from CIE XYZ color space to
19855reference sensor color space.<wbr/></p>
19856            </td>
19857
19858            <td class="entry_units">
19859            </td>
19860
19861            <td class="entry_range">
19862            </td>
19863
19864            <td class="entry_tags">
19865              <ul class="entry_tags">
19866                  <li><a href="#tag_RAW">RAW</a></li>
19867              </ul>
19868            </td>
19869
19870          </tr>
19871          <tr class="entries_header">
19872            <th class="th_details" colspan="5">Details</th>
19873          </tr>
19874          <tr class="entry_cont">
19875            <td class="entry_details" colspan="5">
19876              <p>This matrix is used to convert from the standard CIE XYZ color
19877space to the reference sensor colorspace,<wbr/> and is used when processing
19878raw buffer data.<wbr/></p>
19879<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
19880contains a color transform matrix that maps colors from the CIE
19881XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
19882"golden module" colorspace) under the first reference illuminant
19883(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
19884<p>The white points chosen in both the reference sensor color space
19885and the CIE XYZ colorspace when calculating this transform will
19886match the standard white point for the first reference illuminant
19887(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
19888            </td>
19889          </tr>
19890
19891
19892          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19893           <!-- end of entry -->
19894        
19895                
19896          <tr class="entry" id="static_android.sensor.colorTransform2">
19897            <td class="entry_name
19898             " rowspan="3">
19899              android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
19900            </td>
19901            <td class="entry_type">
19902                <span class="entry_type_name">rational</span>
19903                <span class="entry_type_container">x</span>
19904
19905                <span class="entry_type_array">
19906                  3 x 3
19907                </span>
19908              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19909
19910
19911
19912
19913                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19914
19915
19916            </td> <!-- entry_type -->
19917
19918            <td class="entry_description">
19919              <p>A matrix that transforms color values from CIE XYZ color space to
19920reference sensor color space.<wbr/></p>
19921            </td>
19922
19923            <td class="entry_units">
19924            </td>
19925
19926            <td class="entry_range">
19927            </td>
19928
19929            <td class="entry_tags">
19930              <ul class="entry_tags">
19931                  <li><a href="#tag_RAW">RAW</a></li>
19932              </ul>
19933            </td>
19934
19935          </tr>
19936          <tr class="entries_header">
19937            <th class="th_details" colspan="5">Details</th>
19938          </tr>
19939          <tr class="entry_cont">
19940            <td class="entry_details" colspan="5">
19941              <p>This matrix is used to convert from the standard CIE XYZ color
19942space to the reference sensor colorspace,<wbr/> and is used when processing
19943raw buffer data.<wbr/></p>
19944<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
19945contains a color transform matrix that maps colors from the CIE
19946XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
19947"golden module" colorspace) under the second reference illuminant
19948(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
19949<p>The white points chosen in both the reference sensor color space
19950and the CIE XYZ colorspace when calculating this transform will
19951match the standard white point for the second reference illuminant
19952(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
19953<p>This matrix will only be present if the second reference
19954illuminant is present.<wbr/></p>
19955            </td>
19956          </tr>
19957
19958
19959          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19960           <!-- end of entry -->
19961        
19962                
19963          <tr class="entry" id="static_android.sensor.forwardMatrix1">
19964            <td class="entry_name
19965             " rowspan="3">
19966              android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
19967            </td>
19968            <td class="entry_type">
19969                <span class="entry_type_name">rational</span>
19970                <span class="entry_type_container">x</span>
19971
19972                <span class="entry_type_array">
19973                  3 x 3
19974                </span>
19975              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19976
19977
19978
19979
19980                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19981
19982
19983            </td> <!-- entry_type -->
19984
19985            <td class="entry_description">
19986              <p>A matrix that transforms white balanced camera colors from the reference
19987sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
19988            </td>
19989
19990            <td class="entry_units">
19991            </td>
19992
19993            <td class="entry_range">
19994            </td>
19995
19996            <td class="entry_tags">
19997              <ul class="entry_tags">
19998                  <li><a href="#tag_RAW">RAW</a></li>
19999              </ul>
20000            </td>
20001
20002          </tr>
20003          <tr class="entries_header">
20004            <th class="th_details" colspan="5">Details</th>
20005          </tr>
20006          <tr class="entry_cont">
20007            <td class="entry_details" colspan="5">
20008              <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
20009is used when processing raw buffer data.<wbr/></p>
20010<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
20011a color transform matrix that maps white balanced colors from the
20012reference sensor color space to the CIE XYZ color space with a D50 white
20013point.<wbr/></p>
20014<p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
20015this matrix is chosen so that the standard white point for this reference
20016illuminant in the reference sensor colorspace is mapped to D50 in the
20017CIE XYZ colorspace.<wbr/></p>
20018            </td>
20019          </tr>
20020
20021
20022          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20023           <!-- end of entry -->
20024        
20025                
20026          <tr class="entry" id="static_android.sensor.forwardMatrix2">
20027            <td class="entry_name
20028             " rowspan="3">
20029              android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
20030            </td>
20031            <td class="entry_type">
20032                <span class="entry_type_name">rational</span>
20033                <span class="entry_type_container">x</span>
20034
20035                <span class="entry_type_array">
20036                  3 x 3
20037                </span>
20038              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
20039
20040
20041
20042
20043                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
20044
20045
20046            </td> <!-- entry_type -->
20047
20048            <td class="entry_description">
20049              <p>A matrix that transforms white balanced camera colors from the reference
20050sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
20051            </td>
20052
20053            <td class="entry_units">
20054            </td>
20055
20056            <td class="entry_range">
20057            </td>
20058
20059            <td class="entry_tags">
20060              <ul class="entry_tags">
20061                  <li><a href="#tag_RAW">RAW</a></li>
20062              </ul>
20063            </td>
20064
20065          </tr>
20066          <tr class="entries_header">
20067            <th class="th_details" colspan="5">Details</th>
20068          </tr>
20069          <tr class="entry_cont">
20070            <td class="entry_details" colspan="5">
20071              <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
20072is used when processing raw buffer data.<wbr/></p>
20073<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
20074a color transform matrix that maps white balanced colors from the
20075reference sensor color space to the CIE XYZ color space with a D50 white
20076point.<wbr/></p>
20077<p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
20078this matrix is chosen so that the standard white point for this reference
20079illuminant in the reference sensor colorspace is mapped to D50 in the
20080CIE XYZ colorspace.<wbr/></p>
20081<p>This matrix will only be present if the second reference
20082illuminant is present.<wbr/></p>
20083            </td>
20084          </tr>
20085
20086
20087          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20088           <!-- end of entry -->
20089        
20090                
20091          <tr class="entry" id="static_android.sensor.baseGainFactor">
20092            <td class="entry_name
20093             " rowspan="1">
20094              android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
20095            </td>
20096            <td class="entry_type">
20097                <span class="entry_type_name">rational</span>
20098
20099              <span class="entry_type_visibility"> [system]</span>
20100
20101
20102
20103
20104
20105
20106            </td> <!-- entry_type -->
20107
20108            <td class="entry_description">
20109              <p>Gain factor from electrons to raw units when
20110ISO=100</p>
20111            </td>
20112
20113            <td class="entry_units">
20114            </td>
20115
20116            <td class="entry_range">
20117            </td>
20118
20119            <td class="entry_tags">
20120              <ul class="entry_tags">
20121                  <li><a href="#tag_FUTURE">FUTURE</a></li>
20122              </ul>
20123            </td>
20124
20125          </tr>
20126
20127
20128          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20129           <!-- end of entry -->
20130        
20131                
20132          <tr class="entry" id="static_android.sensor.blackLevelPattern">
20133            <td class="entry_name
20134             " rowspan="5">
20135              android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
20136            </td>
20137            <td class="entry_type">
20138                <span class="entry_type_name">int32</span>
20139                <span class="entry_type_container">x</span>
20140
20141                <span class="entry_type_array">
20142                  4
20143                </span>
20144              <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
20145
20146
20147
20148
20149                <div class="entry_type_notes">2x2 raw count block</div>
20150
20151
20152            </td> <!-- entry_type -->
20153
20154            <td class="entry_description">
20155              <p>A fixed black level offset for each of the color filter arrangement
20156(CFA) mosaic channels.<wbr/></p>
20157            </td>
20158
20159            <td class="entry_units">
20160            </td>
20161
20162            <td class="entry_range">
20163              <p>&gt;= 0 for each.<wbr/></p>
20164            </td>
20165
20166            <td class="entry_tags">
20167              <ul class="entry_tags">
20168                  <li><a href="#tag_RAW">RAW</a></li>
20169              </ul>
20170            </td>
20171
20172          </tr>
20173          <tr class="entries_header">
20174            <th class="th_details" colspan="5">Details</th>
20175          </tr>
20176          <tr class="entry_cont">
20177            <td class="entry_details" colspan="5">
20178              <p>This key specifies the zero light value for each of the CFA mosaic
20179channels in the camera sensor.<wbr/>  The maximal value output by the
20180sensor 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>
20181<p>The values are given in the same order as channels listed for the CFA
20182layout 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
20183nth value given corresponds to the black level offset for the nth
20184color channel listed in the CFA.<wbr/></p>
20185<p>The black level values of captured images may vary for different
20186capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
20187represents a coarse approximation for such case.<wbr/> It is recommended to
20188use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from
20189<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when
20190supported by the camera device,<wbr/> which provides more accurate black
20191level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use
20192pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black
20193level values for each frame.<wbr/></p>
20194            </td>
20195          </tr>
20196
20197          <tr class="entries_header">
20198            <th class="th_details" colspan="5">HAL Implementation Details</th>
20199          </tr>
20200          <tr class="entry_cont">
20201            <td class="entry_details" colspan="5">
20202              <p>The values are given in row-column scan order,<wbr/> with the first value
20203corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
20204            </td>
20205          </tr>
20206
20207          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20208           <!-- end of entry -->
20209        
20210                
20211          <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
20212            <td class="entry_name
20213             " rowspan="3">
20214              android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
20215            </td>
20216            <td class="entry_type">
20217                <span class="entry_type_name">int32</span>
20218
20219              <span class="entry_type_visibility"> [public]</span>
20220
20221
20222              <span class="entry_type_hwlevel">[full] </span>
20223
20224
20225
20226
20227            </td> <!-- entry_type -->
20228
20229            <td class="entry_description">
20230              <p>Maximum sensitivity that is implemented
20231purely through analog gain.<wbr/></p>
20232            </td>
20233
20234            <td class="entry_units">
20235            </td>
20236
20237            <td class="entry_range">
20238            </td>
20239
20240            <td class="entry_tags">
20241              <ul class="entry_tags">
20242                  <li><a href="#tag_V1">V1</a></li>
20243                  <li><a href="#tag_FULL">FULL</a></li>
20244              </ul>
20245            </td>
20246
20247          </tr>
20248          <tr class="entries_header">
20249            <th class="th_details" colspan="5">Details</th>
20250          </tr>
20251          <tr class="entry_cont">
20252            <td class="entry_details" colspan="5">
20253              <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
20254equal to this,<wbr/> all applied gain must be analog.<wbr/> For
20255values above this,<wbr/> the gain applied can be a mix of analog and
20256digital.<wbr/></p>
20257            </td>
20258          </tr>
20259
20260
20261          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20262           <!-- end of entry -->
20263        
20264                
20265          <tr class="entry" id="static_android.sensor.orientation">
20266            <td class="entry_name
20267             " rowspan="3">
20268              android.<wbr/>sensor.<wbr/>orientation
20269            </td>
20270            <td class="entry_type">
20271                <span class="entry_type_name">int32</span>
20272
20273              <span class="entry_type_visibility"> [public]</span>
20274
20275
20276              <span class="entry_type_hwlevel">[legacy] </span>
20277
20278
20279
20280
20281            </td> <!-- entry_type -->
20282
20283            <td class="entry_description">
20284              <p>Clockwise angle through which the output image needs to be rotated to be
20285upright on the device screen in its native orientation.<wbr/></p>
20286            </td>
20287
20288            <td class="entry_units">
20289              Degrees of clockwise rotation; always a multiple of
20290          90
20291            </td>
20292
20293            <td class="entry_range">
20294              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
20295            </td>
20296
20297            <td class="entry_tags">
20298              <ul class="entry_tags">
20299                  <li><a href="#tag_BC">BC</a></li>
20300              </ul>
20301            </td>
20302
20303          </tr>
20304          <tr class="entries_header">
20305            <th class="th_details" colspan="5">Details</th>
20306          </tr>
20307          <tr class="entry_cont">
20308            <td class="entry_details" colspan="5">
20309              <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
20310the sensor's coordinate system.<wbr/></p>
20311            </td>
20312          </tr>
20313
20314
20315          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20316           <!-- end of entry -->
20317        
20318                
20319          <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
20320            <td class="entry_name
20321             " rowspan="3">
20322              android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
20323            </td>
20324            <td class="entry_type">
20325                <span class="entry_type_name">int32</span>
20326                <span class="entry_type_container">x</span>
20327
20328                <span class="entry_type_array">
20329                  3
20330                </span>
20331              <span class="entry_type_visibility"> [system]</span>
20332
20333
20334
20335
20336                <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
20337
20338
20339            </td> <!-- entry_type -->
20340
20341            <td class="entry_description">
20342              <p>The number of input samples for each dimension of
20343<a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
20344            </td>
20345
20346            <td class="entry_units">
20347            </td>
20348
20349            <td class="entry_range">
20350              <p>Hue &gt;= 1,<wbr/>
20351Saturation &gt;= 2,<wbr/>
20352Value &gt;= 1</p>
20353            </td>
20354
20355            <td class="entry_tags">
20356              <ul class="entry_tags">
20357                  <li><a href="#tag_RAW">RAW</a></li>
20358              </ul>
20359            </td>
20360
20361          </tr>
20362          <tr class="entries_header">
20363            <th class="th_details" colspan="5">Details</th>
20364          </tr>
20365          <tr class="entry_cont">
20366            <td class="entry_details" colspan="5">
20367              <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
20368dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the
20369dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
20370element.<wbr/></p>
20371            </td>
20372          </tr>
20373
20374
20375          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20376           <!-- end of entry -->
20377        
20378                
20379          <tr class="entry" id="static_android.sensor.availableTestPatternModes">
20380            <td class="entry_name
20381             " rowspan="5">
20382              android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
20383            </td>
20384            <td class="entry_type">
20385                <span class="entry_type_name">int32</span>
20386                <span class="entry_type_container">x</span>
20387
20388                <span class="entry_type_array">
20389                  n
20390                </span>
20391              <span class="entry_type_visibility"> [public]</span>
20392
20393
20394
20395
20396                <div class="entry_type_notes">list of enums</div>
20397
20398
20399            </td> <!-- entry_type -->
20400
20401            <td class="entry_description">
20402              <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
20403supported by this camera device.<wbr/></p>
20404            </td>
20405
20406            <td class="entry_units">
20407            </td>
20408
20409            <td class="entry_range">
20410              <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
20411            </td>
20412
20413            <td class="entry_tags">
20414            </td>
20415
20416          </tr>
20417          <tr class="entries_header">
20418            <th class="th_details" colspan="5">Details</th>
20419          </tr>
20420          <tr class="entry_cont">
20421            <td class="entry_details" colspan="5">
20422              <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
20423            </td>
20424          </tr>
20425
20426          <tr class="entries_header">
20427            <th class="th_details" colspan="5">HAL Implementation Details</th>
20428          </tr>
20429          <tr class="entry_cont">
20430            <td class="entry_details" colspan="5">
20431              <p>All custom modes must be &gt;= CUSTOM1.<wbr/></p>
20432            </td>
20433          </tr>
20434
20435          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20436           <!-- end of entry -->
20437        
20438                
20439          <tr class="entry" id="static_android.sensor.opticalBlackRegions">
20440            <td class="entry_name
20441             " rowspan="5">
20442              android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions
20443            </td>
20444            <td class="entry_type">
20445                <span class="entry_type_name">int32</span>
20446                <span class="entry_type_container">x</span>
20447
20448                <span class="entry_type_array">
20449                  4 x num_regions
20450                </span>
20451              <span class="entry_type_visibility"> [public as rectangle]</span>
20452
20453
20454
20455
20456
20457
20458            </td> <!-- entry_type -->
20459
20460            <td class="entry_description">
20461              <p>List of disjoint rectangles indicating the sensor
20462optically shielded black pixel regions.<wbr/></p>
20463            </td>
20464
20465            <td class="entry_units">
20466            </td>
20467
20468            <td class="entry_range">
20469            </td>
20470
20471            <td class="entry_tags">
20472            </td>
20473
20474          </tr>
20475          <tr class="entries_header">
20476            <th class="th_details" colspan="5">Details</th>
20477          </tr>
20478          <tr class="entry_cont">
20479            <td class="entry_details" colspan="5">
20480              <p>In most camera sensors,<wbr/> the active array is surrounded by some
20481optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels
20482provides a reliable black reference for black level compensation
20483in active array region.<wbr/></p>
20484<p>This key provides a list of disjoint rectangles specifying the
20485regions of optically shielded (with metal shield) black pixel
20486regions if the camera device is capable of reading out these black
20487pixels in the output raw images.<wbr/> In comparison to the fixed black
20488level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key
20489may provide a more accurate way for the application to calculate
20490black level of each captured raw images.<wbr/></p>
20491<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
20492<a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p>
20493            </td>
20494          </tr>
20495
20496          <tr class="entries_header">
20497            <th class="th_details" colspan="5">HAL Implementation Details</th>
20498          </tr>
20499          <tr class="entry_cont">
20500            <td class="entry_details" colspan="5">
20501              <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin)
20502must be &gt;= (0,<wbr/>0) and &lt;=
20503<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
20504&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
20505outside the region reported by
20506<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>
20507<p>The HAL must report minimal number of disjoint regions for the
20508optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can
20509be covered by one rectangle,<wbr/> the HAL must not split this region into
20510multiple rectangles.<wbr/></p>
20511            </td>
20512          </tr>
20513
20514          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20515           <!-- end of entry -->
20516        
20517                
20518          <tr class="entry" id="static_android.sensor.opaqueRawSize">
20519            <td class="entry_name
20520             " rowspan="5">
20521              android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size
20522            </td>
20523            <td class="entry_type">
20524                <span class="entry_type_name">int32</span>
20525                <span class="entry_type_container">x</span>
20526
20527                <span class="entry_type_array">
20528                  n x 3
20529                </span>
20530              <span class="entry_type_visibility"> [system]</span>
20531
20532
20533
20534
20535
20536
20537            </td> <!-- entry_type -->
20538
20539            <td class="entry_description">
20540              <p>Size in bytes for all the listed opaque RAW buffer sizes</p>
20541            </td>
20542
20543            <td class="entry_units">
20544            </td>
20545
20546            <td class="entry_range">
20547              <p>Must be large enough to fit the opaque RAW of corresponding size produced by
20548the camera</p>
20549            </td>
20550
20551            <td class="entry_tags">
20552            </td>
20553
20554          </tr>
20555          <tr class="entries_header">
20556            <th class="th_details" colspan="5">Details</th>
20557          </tr>
20558          <tr class="entry_cont">
20559            <td class="entry_details" colspan="5">
20560              <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/>
20561This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/>
20562All RAW_<wbr/>OPAQUE output stream configuration listed in
20563<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in
20564this key.<wbr/></p>
20565            </td>
20566          </tr>
20567
20568          <tr class="entries_header">
20569            <th class="th_details" colspan="5">HAL Implementation Details</th>
20570          </tr>
20571          <tr class="entry_cont">
20572            <td class="entry_details" colspan="5">
20573              <p>This key is added in HAL3.<wbr/>4.<wbr/>
20574For HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this key.<wbr/>
20575For HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera framework
20576will derive this key by assuming each pixel takes two bytes and no padding bytes
20577between rows.<wbr/></p>
20578            </td>
20579          </tr>
20580
20581          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20582           <!-- end of entry -->
20583        
20584        
20585
20586      <!-- end of kind -->
20587      </tbody>
20588      <tr><td colspan="6" class="kind">dynamic</td></tr>
20589
20590      <thead class="entries_header">
20591        <tr>
20592          <th class="th_name">Property Name</th>
20593          <th class="th_type">Type</th>
20594          <th class="th_description">Description</th>
20595          <th class="th_units">Units</th>
20596          <th class="th_range">Range</th>
20597          <th class="th_tags">Tags</th>
20598        </tr>
20599      </thead>
20600
20601      <tbody>
20602
20603        
20604
20605        
20606
20607        
20608
20609        
20610
20611                
20612          <tr class="entry" id="dynamic_android.sensor.exposureTime">
20613            <td class="entry_name
20614             " rowspan="3">
20615              android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
20616            </td>
20617            <td class="entry_type">
20618                <span class="entry_type_name">int64</span>
20619
20620              <span class="entry_type_visibility"> [public]</span>
20621
20622
20623              <span class="entry_type_hwlevel">[full] </span>
20624
20625
20626
20627
20628            </td> <!-- entry_type -->
20629
20630            <td class="entry_description">
20631              <p>Duration each pixel is exposed to
20632light.<wbr/></p>
20633            </td>
20634
20635            <td class="entry_units">
20636              Nanoseconds
20637            </td>
20638
20639            <td class="entry_range">
20640              <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
20641            </td>
20642
20643            <td class="entry_tags">
20644              <ul class="entry_tags">
20645                  <li><a href="#tag_V1">V1</a></li>
20646              </ul>
20647            </td>
20648
20649          </tr>
20650          <tr class="entries_header">
20651            <th class="th_details" colspan="5">Details</th>
20652          </tr>
20653          <tr class="entry_cont">
20654            <td class="entry_details" colspan="5">
20655              <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
20656duration exposed to the nearest possible value (rather than expose longer).<wbr/>
20657The final exposure time used will be available in the output capture result.<wbr/></p>
20658<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
20659OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
20660            </td>
20661          </tr>
20662
20663
20664          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20665           <!-- end of entry -->
20666        
20667                
20668          <tr class="entry" id="dynamic_android.sensor.frameDuration">
20669            <td class="entry_name
20670             " rowspan="5">
20671              android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
20672            </td>
20673            <td class="entry_type">
20674                <span class="entry_type_name">int64</span>
20675
20676              <span class="entry_type_visibility"> [public]</span>
20677
20678
20679              <span class="entry_type_hwlevel">[full] </span>
20680
20681
20682
20683
20684            </td> <!-- entry_type -->
20685
20686            <td class="entry_description">
20687              <p>Duration from start of frame exposure to
20688start of next frame exposure.<wbr/></p>
20689            </td>
20690
20691            <td class="entry_units">
20692              Nanoseconds
20693            </td>
20694
20695            <td class="entry_range">
20696              <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
20697<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
20698is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
20699            </td>
20700
20701            <td class="entry_tags">
20702              <ul class="entry_tags">
20703                  <li><a href="#tag_V1">V1</a></li>
20704              </ul>
20705            </td>
20706
20707          </tr>
20708          <tr class="entries_header">
20709            <th class="th_details" colspan="5">Details</th>
20710          </tr>
20711          <tr class="entry_cont">
20712            <td class="entry_details" colspan="5">
20713              <p>The maximum frame rate that can be supported by a camera subsystem is
20714a function of many factors:</p>
20715<ul>
20716<li>Requested resolutions of output image streams</li>
20717<li>Availability of binning /<wbr/> skipping modes on the imager</li>
20718<li>The bandwidth of the imager interface</li>
20719<li>The bandwidth of the various ISP processing blocks</li>
20720</ul>
20721<p>Since these factors can vary greatly between different ISPs and
20722sensors,<wbr/> the camera abstraction tries to represent the bandwidth
20723restrictions with as simple a model as possible.<wbr/></p>
20724<p>The model presented has the following characteristics:</p>
20725<ul>
20726<li>The image sensor is always configured to output the smallest
20727resolution possible given the application's requested output stream
20728sizes.<wbr/>  The smallest resolution is defined as being at least as large
20729as the largest requested output stream size; the camera pipeline must
20730never digitally upsample sensor data when the crop region covers the
20731whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
20732resolutions are configured,<wbr/> the sensor can provide a higher frame
20733rate.<wbr/></li>
20734<li>Since any request may use any or all the currently configured
20735output streams,<wbr/> the sensor and ISP must be configured to support
20736scaling a single capture to all the streams at the same time.<wbr/>  This
20737means the camera pipeline must be ready to produce the largest
20738requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
20739frame rate of a given configured stream set is governed only by the
20740largest requested stream resolution.<wbr/></li>
20741<li>Using more than one output stream in a request does not affect the
20742frame duration.<wbr/></li>
20743<li>Certain format-streams may need to do additional background processing
20744before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
20745can run concurrently to the rest of the camera pipeline,<wbr/> but
20746cannot process more than 1 capture at a time.<wbr/></li>
20747</ul>
20748<p>The necessary information for the application,<wbr/> given the model above,<wbr/>
20749is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using
20750<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
20751These are used to determine the maximum frame rate /<wbr/> minimum frame
20752duration that is possible for a given stream configuration.<wbr/></p>
20753<p>Specifically,<wbr/> the application can use the following rules to
20754determine the minimum frame duration it can request from the camera
20755device:</p>
20756<ol>
20757<li>Let the set of currently configured input/<wbr/>output streams
20758be called <code>S</code>.<wbr/></li>
20759<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking
20760it 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>
20761(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be
20762called <code>F</code>.<wbr/></li>
20763<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
20764for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
20765used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
20766</ol>
20767<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>
20768using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code>
20769determines the steady state frame rate that the application will get
20770if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of
20771request be called <code>Rsimple</code>.<wbr/></p>
20772<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
20773by a single capture of a new request <code>Rstall</code> (which has at least
20774one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
20775same minimum frame duration this will not cause a frame rate loss
20776if all buffers from the previous <code>Rstall</code> have already been
20777delivered.<wbr/></p>
20778<p>For more details about stalling,<wbr/> see
20779<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
20780<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
20781OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
20782            </td>
20783          </tr>
20784
20785          <tr class="entries_header">
20786            <th class="th_details" colspan="5">HAL Implementation Details</th>
20787          </tr>
20788          <tr class="entry_cont">
20789            <td class="entry_details" colspan="5">
20790              <p>For more details about stalling,<wbr/> see
20791<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
20792            </td>
20793          </tr>
20794
20795          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20796           <!-- end of entry -->
20797        
20798                
20799          <tr class="entry" id="dynamic_android.sensor.sensitivity">
20800            <td class="entry_name
20801             " rowspan="5">
20802              android.<wbr/>sensor.<wbr/>sensitivity
20803            </td>
20804            <td class="entry_type">
20805                <span class="entry_type_name">int32</span>
20806
20807              <span class="entry_type_visibility"> [public]</span>
20808
20809
20810              <span class="entry_type_hwlevel">[full] </span>
20811
20812
20813
20814
20815            </td> <!-- entry_type -->
20816
20817            <td class="entry_description">
20818              <p>The amount of gain applied to sensor data
20819before processing.<wbr/></p>
20820            </td>
20821
20822            <td class="entry_units">
20823              ISO arithmetic units
20824            </td>
20825
20826            <td class="entry_range">
20827              <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
20828            </td>
20829
20830            <td class="entry_tags">
20831              <ul class="entry_tags">
20832                  <li><a href="#tag_V1">V1</a></li>
20833              </ul>
20834            </td>
20835
20836          </tr>
20837          <tr class="entries_header">
20838            <th class="th_details" colspan="5">Details</th>
20839          </tr>
20840          <tr class="entry_cont">
20841            <td class="entry_details" colspan="5">
20842              <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
20843as defined in ISO 12232:2006.<wbr/></p>
20844<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
20845if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
20846is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
20847<p>If the camera device cannot apply the exact sensitivity
20848requested,<wbr/> it will reduce the gain to the nearest supported
20849value.<wbr/> The final sensitivity used will be available in the
20850output capture result.<wbr/></p>
20851<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
20852OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
20853            </td>
20854          </tr>
20855
20856          <tr class="entries_header">
20857            <th class="th_details" colspan="5">HAL Implementation Details</th>
20858          </tr>
20859          <tr class="entry_cont">
20860            <td class="entry_details" colspan="5">
20861              <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
20862            </td>
20863          </tr>
20864
20865          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20866           <!-- end of entry -->
20867        
20868                
20869          <tr class="entry" id="dynamic_android.sensor.timestamp">
20870            <td class="entry_name
20871             " rowspan="5">
20872              android.<wbr/>sensor.<wbr/>timestamp
20873            </td>
20874            <td class="entry_type">
20875                <span class="entry_type_name">int64</span>
20876
20877              <span class="entry_type_visibility"> [public]</span>
20878
20879
20880              <span class="entry_type_hwlevel">[legacy] </span>
20881
20882
20883
20884
20885            </td> <!-- entry_type -->
20886
20887            <td class="entry_description">
20888              <p>Time at start of exposure of first
20889row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
20890            </td>
20891
20892            <td class="entry_units">
20893              Nanoseconds
20894            </td>
20895
20896            <td class="entry_range">
20897              <p>&gt; 0</p>
20898            </td>
20899
20900            <td class="entry_tags">
20901              <ul class="entry_tags">
20902                  <li><a href="#tag_BC">BC</a></li>
20903              </ul>
20904            </td>
20905
20906          </tr>
20907          <tr class="entries_header">
20908            <th class="th_details" colspan="5">Details</th>
20909          </tr>
20910          <tr class="entry_cont">
20911            <td class="entry_details" colspan="5">
20912              <p>The timestamps are also included in all image
20913buffers produced for the same capture,<wbr/> and will be identical
20914on all the outputs.<wbr/></p>
20915<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
20916the timestamps measure time since an unspecified starting point,<wbr/>
20917and are monotonically increasing.<wbr/> They can be compared with the
20918timestamps for other captures from the same camera device,<wbr/> but are
20919not guaranteed to be comparable to any other time source.<wbr/></p>
20920<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
20921timestamps 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
20922be compared to other timestamps from other subsystems that
20923are using that base.<wbr/></p>
20924<p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
20925the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
20926timestamp</a> in the TotalCaptureResult that was used to create the
20927reprocess capture request.<wbr/></p>
20928            </td>
20929          </tr>
20930
20931          <tr class="entries_header">
20932            <th class="th_details" colspan="5">HAL Implementation Details</th>
20933          </tr>
20934          <tr class="entry_cont">
20935            <td class="entry_details" colspan="5">
20936              <p>All timestamps must be in reference to the kernel's
20937CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
20938time spent asleep.<wbr/> This allows for synchronization with
20939sensors that continue to operate while the system is
20940otherwise asleep.<wbr/></p>
20941<p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
20942The timestamp must be synchronized with the timestamps from other
20943sensor subsystems that are using the same timebase.<wbr/></p>
20944<p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
20945with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
20946capture request.<wbr/></p>
20947            </td>
20948          </tr>
20949
20950          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20951           <!-- end of entry -->
20952        
20953                
20954          <tr class="entry" id="dynamic_android.sensor.temperature">
20955            <td class="entry_name
20956             " rowspan="1">
20957              android.<wbr/>sensor.<wbr/>temperature
20958            </td>
20959            <td class="entry_type">
20960                <span class="entry_type_name">float</span>
20961
20962              <span class="entry_type_visibility"> [system]</span>
20963
20964
20965
20966
20967
20968
20969            </td> <!-- entry_type -->
20970
20971            <td class="entry_description">
20972              <p>The temperature of the sensor,<wbr/> sampled at the time
20973exposure began for this frame.<wbr/></p>
20974<p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
20975somewhere close to it.<wbr/></p>
20976            </td>
20977
20978            <td class="entry_units">
20979              Celsius
20980            </td>
20981
20982            <td class="entry_range">
20983              <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
20984            </td>
20985
20986            <td class="entry_tags">
20987              <ul class="entry_tags">
20988                  <li><a href="#tag_FUTURE">FUTURE</a></li>
20989              </ul>
20990            </td>
20991
20992          </tr>
20993
20994
20995          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20996           <!-- end of entry -->
20997        
20998                
20999          <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
21000            <td class="entry_name
21001             " rowspan="3">
21002              android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
21003            </td>
21004            <td class="entry_type">
21005                <span class="entry_type_name">rational</span>
21006                <span class="entry_type_container">x</span>
21007
21008                <span class="entry_type_array">
21009                  3
21010                </span>
21011              <span class="entry_type_visibility"> [public]</span>
21012
21013
21014
21015
21016
21017
21018            </td> <!-- entry_type -->
21019
21020            <td class="entry_description">
21021              <p>The estimated camera neutral color in the native sensor colorspace at
21022the time of capture.<wbr/></p>
21023            </td>
21024
21025            <td class="entry_units">
21026            </td>
21027
21028            <td class="entry_range">
21029            </td>
21030
21031            <td class="entry_tags">
21032              <ul class="entry_tags">
21033                  <li><a href="#tag_RAW">RAW</a></li>
21034              </ul>
21035            </td>
21036
21037          </tr>
21038          <tr class="entries_header">
21039            <th class="th_details" colspan="5">Details</th>
21040          </tr>
21041          <tr class="entry_cont">
21042            <td class="entry_details" colspan="5">
21043              <p>This value gives the neutral color point encoded as an RGB value in the
21044native sensor color space.<wbr/>  The neutral color point indicates the
21045currently estimated white point of the scene illumination.<wbr/>  It can be
21046used to interpolate between the provided color transforms when
21047processing raw sensor data.<wbr/></p>
21048<p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
21049            </td>
21050          </tr>
21051
21052
21053          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21054           <!-- end of entry -->
21055        
21056                
21057          <tr class="entry" id="dynamic_android.sensor.noiseProfile">
21058            <td class="entry_name
21059             " rowspan="5">
21060              android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
21061            </td>
21062            <td class="entry_type">
21063                <span class="entry_type_name">double</span>
21064                <span class="entry_type_container">x</span>
21065
21066                <span class="entry_type_array">
21067                  2 x CFA Channels
21068                </span>
21069              <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
21070
21071
21072
21073
21074                <div class="entry_type_notes">Pairs of noise model coefficients</div>
21075
21076
21077            </td> <!-- entry_type -->
21078
21079            <td class="entry_description">
21080              <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
21081            </td>
21082
21083            <td class="entry_units">
21084            </td>
21085
21086            <td class="entry_range">
21087            </td>
21088
21089            <td class="entry_tags">
21090              <ul class="entry_tags">
21091                  <li><a href="#tag_RAW">RAW</a></li>
21092              </ul>
21093            </td>
21094
21095          </tr>
21096          <tr class="entries_header">
21097            <th class="th_details" colspan="5">Details</th>
21098          </tr>
21099          <tr class="entry_cont">
21100            <td class="entry_details" colspan="5">
21101              <p>This key contains two noise model coefficients for each CFA channel
21102corresponding to the sensor amplification (S) and sensor readout
21103noise (O).<wbr/>  These are given as pairs of coefficients for each channel
21104in the same order as channels listed for the CFA layout key
21105(see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/>  This is
21106represented as an array of Pair&lt;Double,<wbr/> Double&gt;,<wbr/> where
21107the first member of the Pair at index n is the S coefficient and the
21108second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
21109<p>These coefficients are used in a two parameter noise model to describe
21110the amount of noise present in the image for each CFA channel.<wbr/>  The
21111noise model used here is:</p>
21112<p>N(x) = sqrt(Sx + O)</p>
21113<p>Where x represents the recorded signal of a CFA channel normalized to
21114the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
21115that channel.<wbr/></p>
21116<p>A more detailed description of the noise model can be found in the
21117Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
21118            </td>
21119          </tr>
21120
21121          <tr class="entries_header">
21122            <th class="th_details" colspan="5">HAL Implementation Details</th>
21123          </tr>
21124          <tr class="entry_cont">
21125            <td class="entry_details" colspan="5">
21126              <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
21127an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
21128for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
21129channel,<wbr/> etc.<wbr/></p>
21130            </td>
21131          </tr>
21132
21133          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21134           <!-- end of entry -->
21135        
21136                
21137          <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
21138            <td class="entry_name
21139             " rowspan="3">
21140              android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
21141            </td>
21142            <td class="entry_type">
21143                <span class="entry_type_name">float</span>
21144                <span class="entry_type_container">x</span>
21145
21146                <span class="entry_type_array">
21147                  hue_samples x saturation_samples x value_samples x 3
21148                </span>
21149              <span class="entry_type_visibility"> [system]</span>
21150
21151
21152
21153
21154                <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
21155
21156
21157            </td> <!-- entry_type -->
21158
21159            <td class="entry_description">
21160              <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
21161for each pixel.<wbr/></p>
21162            </td>
21163
21164            <td class="entry_units">
21165              
21166          The hue shift is given in degrees; saturation and value scale factors are
21167          unitless and are between 0 and 1 inclusive
21168          
21169            </td>
21170
21171            <td class="entry_range">
21172            </td>
21173
21174            <td class="entry_tags">
21175              <ul class="entry_tags">
21176                  <li><a href="#tag_RAW">RAW</a></li>
21177              </ul>
21178            </td>
21179
21180          </tr>
21181          <tr class="entries_header">
21182            <th class="th_details" colspan="5">Details</th>
21183          </tr>
21184          <tr class="entry_cont">
21185            <td class="entry_details" colspan="5">
21186              <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
21187<a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
21188<p>Each entry of this map contains three floats corresponding to the
21189hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
21190hue shift has the lowest index.<wbr/> The map entries are stored in the key
21191in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
21192hue divisions in the middle loop,<wbr/> and the saturation divisions in the
21193inner loop.<wbr/> All zero input saturation entries are required to have a
21194value scale factor of 1.<wbr/>0.<wbr/></p>
21195            </td>
21196          </tr>
21197
21198
21199          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21200           <!-- end of entry -->
21201        
21202                
21203          <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
21204            <td class="entry_name
21205             " rowspan="3">
21206              android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
21207            </td>
21208            <td class="entry_type">
21209                <span class="entry_type_name">float</span>
21210                <span class="entry_type_container">x</span>
21211
21212                <span class="entry_type_array">
21213                  samples x 2
21214                </span>
21215              <span class="entry_type_visibility"> [system]</span>
21216
21217
21218
21219
21220                <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
21221
21222
21223            </td> <!-- entry_type -->
21224
21225            <td class="entry_description">
21226              <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
21227            </td>
21228
21229            <td class="entry_units">
21230            </td>
21231
21232            <td class="entry_range">
21233              <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
21234<code>[0,<wbr/> 1]</code>.<wbr/>  The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
21235sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
21236            </td>
21237
21238            <td class="entry_tags">
21239              <ul class="entry_tags">
21240                  <li><a href="#tag_RAW">RAW</a></li>
21241              </ul>
21242            </td>
21243
21244          </tr>
21245          <tr class="entries_header">
21246            <th class="th_details" colspan="5">Details</th>
21247          </tr>
21248          <tr class="entry_cont">
21249            <td class="entry_details" colspan="5">
21250              <p>This key contains a default tone curve that can be applied while
21251processing the image as a starting point for user adjustments.<wbr/>
21252The curve is specified as a list of value pairs in linear gamma.<wbr/>
21253The curve is interpolated using a cubic spline.<wbr/></p>
21254            </td>
21255          </tr>
21256
21257
21258          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21259           <!-- end of entry -->
21260        
21261                
21262          <tr class="entry" id="dynamic_android.sensor.greenSplit">
21263            <td class="entry_name
21264             " rowspan="5">
21265              android.<wbr/>sensor.<wbr/>green<wbr/>Split
21266            </td>
21267            <td class="entry_type">
21268                <span class="entry_type_name">float</span>
21269
21270              <span class="entry_type_visibility"> [public]</span>
21271
21272
21273
21274
21275
21276
21277            </td> <!-- entry_type -->
21278
21279            <td class="entry_description">
21280              <p>The worst-case divergence between Bayer green channels.<wbr/></p>
21281            </td>
21282
21283            <td class="entry_units">
21284            </td>
21285
21286            <td class="entry_range">
21287              <p>&gt;= 0</p>
21288            </td>
21289
21290            <td class="entry_tags">
21291              <ul class="entry_tags">
21292                  <li><a href="#tag_RAW">RAW</a></li>
21293              </ul>
21294            </td>
21295
21296          </tr>
21297          <tr class="entries_header">
21298            <th class="th_details" colspan="5">Details</th>
21299          </tr>
21300          <tr class="entry_cont">
21301            <td class="entry_details" colspan="5">
21302              <p>This value is an estimate of the worst case split between the
21303Bayer green channels in the red and blue rows in the sensor color
21304filter array.<wbr/></p>
21305<p>The green split is calculated as follows:</p>
21306<ol>
21307<li>A 5x5 pixel (or larger) window W within the active sensor array is
21308chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
21309mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/>  The location and size of the window
21310chosen is implementation defined,<wbr/> and should be chosen to provide a
21311green split estimate that is both representative of the entire image
21312for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
21313<li>The arithmetic mean of the green channels from the red
21314rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
21315<li>The arithmetic mean of the green channels from the blue
21316rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
21317<li>The maximum ratio R of the two means is computed as follows:
21318<code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
21319</ol>
21320<p>The ratio R is the green split divergence reported for this property,<wbr/>
21321which represents how much the green channels differ in the mosaic
21322pattern.<wbr/>  This value is typically used to determine the treatment of
21323the green mosaic channels when demosaicing.<wbr/></p>
21324<p>The green split value can be roughly interpreted as follows:</p>
21325<ul>
21326<li>R &lt; 1.<wbr/>03 is a negligible split (&lt;3% divergence).<wbr/></li>
21327<li>1.<wbr/>20 &lt;= R &gt;= 1.<wbr/>03 will require some software
21328correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
21329<li>R &gt; 1.<wbr/>20 will require strong software correction to produce
21330a usuable image (&gt;20% divergence).<wbr/></li>
21331</ul>
21332            </td>
21333          </tr>
21334
21335          <tr class="entries_header">
21336            <th class="th_details" colspan="5">HAL Implementation Details</th>
21337          </tr>
21338          <tr class="entry_cont">
21339            <td class="entry_details" colspan="5">
21340              <p>The green split given may be a static value based on prior
21341characterization of the camera sensor using the green split
21342calculation method given here over a large,<wbr/> representative,<wbr/> sample
21343set of images.<wbr/>  Other methods of calculation that produce equivalent
21344results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
21345            </td>
21346          </tr>
21347
21348          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21349           <!-- end of entry -->
21350        
21351                
21352          <tr class="entry" id="dynamic_android.sensor.testPatternData">
21353            <td class="entry_name
21354             " rowspan="5">
21355              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
21356            </td>
21357            <td class="entry_type">
21358                <span class="entry_type_name">int32</span>
21359                <span class="entry_type_container">x</span>
21360
21361                <span class="entry_type_array">
21362                  4
21363                </span>
21364              <span class="entry_type_visibility"> [public]</span>
21365
21366
21367
21368
21369
21370
21371            </td> <!-- entry_type -->
21372
21373            <td class="entry_description">
21374              <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
21375when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
21376            </td>
21377
21378            <td class="entry_units">
21379            </td>
21380
21381            <td class="entry_range">
21382            </td>
21383
21384            <td class="entry_tags">
21385            </td>
21386
21387          </tr>
21388          <tr class="entries_header">
21389            <th class="th_details" colspan="5">Details</th>
21390          </tr>
21391          <tr class="entry_cont">
21392            <td class="entry_details" colspan="5">
21393              <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
21394The camera device then uses the most significant X bits
21395that correspond to how many bits are in its Bayer raw sensor
21396output.<wbr/></p>
21397<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
2139810 most significant bits from each color channel.<wbr/></p>
21399            </td>
21400          </tr>
21401
21402          <tr class="entries_header">
21403            <th class="th_details" colspan="5">HAL Implementation Details</th>
21404          </tr>
21405          <tr class="entry_cont">
21406            <td class="entry_details" colspan="5">
21407              
21408            </td>
21409          </tr>
21410
21411          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21412           <!-- end of entry -->
21413        
21414                
21415          <tr class="entry" id="dynamic_android.sensor.testPatternMode">
21416            <td class="entry_name
21417             " rowspan="5">
21418              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
21419            </td>
21420            <td class="entry_type">
21421                <span class="entry_type_name entry_type_name_enum">int32</span>
21422
21423              <span class="entry_type_visibility"> [public]</span>
21424
21425
21426
21427
21428
21429                <ul class="entry_type_enum">
21430                  <li>
21431                    <span class="entry_type_enum_name">OFF</span>
21432                    <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
21433device returns captures from the image sensor.<wbr/></p>
21434<p>This is the default if the key is not set.<wbr/></p></span>
21435                  </li>
21436                  <li>
21437                    <span class="entry_type_enum_name">SOLID_COLOR</span>
21438                    <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
21439respective color channel provided in
21440<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
21441<p>For example:</p>
21442<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
21443</code></pre>
21444<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
21445<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
21446</code></pre>
21447<p>All red pixels are 100% red.<wbr/> Only the odd green pixels
21448are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
21449                  </li>
21450                  <li>
21451                    <span class="entry_type_enum_name">COLOR_BARS</span>
21452                    <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
21453<p>The vertical bars (left-to-right) are as follows:</p>
21454<ul>
21455<li>100% white</li>
21456<li>yellow</li>
21457<li>cyan</li>
21458<li>green</li>
21459<li>magenta</li>
21460<li>red</li>
21461<li>blue</li>
21462<li>black</li>
21463</ul>
21464<p>In general the image would look like the following:</p>
21465<pre><code>W Y C G M R B K
21466W Y C G M R B K
21467W Y C G M R B K
21468W Y C G M R B K
21469W Y C G M R B K
21470.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
21471.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
21472.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
21473
21474(B = Blue,<wbr/> K = Black)
21475</code></pre>
21476<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
21477When this is not possible,<wbr/> the bar size should be rounded
21478down to the nearest integer and the pattern can repeat
21479on the right side.<wbr/></p>
21480<p>Each bar's height must always take up the full sensor
21481pixel array height.<wbr/></p>
21482<p>Each pixel in this test pattern must be set to either
214830% intensity or 100% intensity.<wbr/></p></span>
21484                  </li>
21485                  <li>
21486                    <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
21487                    <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
21488each bar should start at its specified color at the top,<wbr/>
21489and fade to gray at the bottom.<wbr/></p>
21490<p>Furthermore each bar is further subdivided into a left and
21491right half.<wbr/> The left half should have a smooth gradient,<wbr/>
21492and the right half should have a quantized gradient.<wbr/></p>
21493<p>In particular,<wbr/> the right half's should consist of blocks of the
21494same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
21495<p>The least significant bits in the quantized gradient should
21496be copied from the most significant bits of the smooth gradient.<wbr/></p>
21497<p>The height of each bar should always be a multiple of 128.<wbr/>
21498When this is not the case,<wbr/> the pattern should repeat at the bottom
21499of the image.<wbr/></p></span>
21500                  </li>
21501                  <li>
21502                    <span class="entry_type_enum_name">PN9</span>
21503                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
21504generated from a PN9 512-bit sequence (typically implemented
21505in hardware with a linear feedback shift register).<wbr/></p>
21506<p>The generator should be reset at the beginning of each frame,<wbr/>
21507and thus each subsequent raw frame with this test pattern should
21508be exactly the same as the last.<wbr/></p></span>
21509                  </li>
21510                  <li>
21511                    <span class="entry_type_enum_name">CUSTOM1</span>
21512                    <span class="entry_type_enum_value">256</span>
21513                    <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
21514available only on this camera device are at least this numeric
21515value.<wbr/></p>
21516<p>All of the custom test patterns will be static
21517(that is the raw image must not vary from frame to frame).<wbr/></p></span>
21518                  </li>
21519                </ul>
21520
21521            </td> <!-- entry_type -->
21522
21523            <td class="entry_description">
21524              <p>When enabled,<wbr/> the sensor sends a test pattern instead of
21525doing a real exposure from the camera.<wbr/></p>
21526            </td>
21527
21528            <td class="entry_units">
21529            </td>
21530
21531            <td class="entry_range">
21532              <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
21533            </td>
21534
21535            <td class="entry_tags">
21536            </td>
21537
21538          </tr>
21539          <tr class="entries_header">
21540            <th class="th_details" colspan="5">Details</th>
21541          </tr>
21542          <tr class="entry_cont">
21543            <td class="entry_details" colspan="5">
21544              <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
21545by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
21546work as normal.<wbr/></p>
21547<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
21548occur (and that the test pattern remain unmodified,<wbr/> since the flash
21549would not actually affect it).<wbr/></p>
21550<p>Defaults to OFF.<wbr/></p>
21551            </td>
21552          </tr>
21553
21554          <tr class="entries_header">
21555            <th class="th_details" colspan="5">HAL Implementation Details</th>
21556          </tr>
21557          <tr class="entry_cont">
21558            <td class="entry_details" colspan="5">
21559              <p>All test patterns are specified in the Bayer domain.<wbr/></p>
21560<p>The HAL may choose to substitute test patterns from the sensor
21561with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
21562indistinguishable to the ISP whether the data came from the
21563sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
21564            </td>
21565          </tr>
21566
21567          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21568           <!-- end of entry -->
21569        
21570                
21571          <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
21572            <td class="entry_name
21573             " rowspan="5">
21574              android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
21575            </td>
21576            <td class="entry_type">
21577                <span class="entry_type_name">int64</span>
21578
21579              <span class="entry_type_visibility"> [public]</span>
21580
21581
21582              <span class="entry_type_hwlevel">[limited] </span>
21583
21584
21585
21586
21587            </td> <!-- entry_type -->
21588
21589            <td class="entry_description">
21590              <p>Duration between the start of first row exposure
21591and the start of last row exposure.<wbr/></p>
21592            </td>
21593
21594            <td class="entry_units">
21595              Nanoseconds
21596            </td>
21597
21598            <td class="entry_range">
21599              <p>&gt;= 0 and &lt;
21600<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
21601            </td>
21602
21603            <td class="entry_tags">
21604              <ul class="entry_tags">
21605                  <li><a href="#tag_V1">V1</a></li>
21606              </ul>
21607            </td>
21608
21609          </tr>
21610          <tr class="entries_header">
21611            <th class="th_details" colspan="5">Details</th>
21612          </tr>
21613          <tr class="entry_cont">
21614            <td class="entry_details" colspan="5">
21615              <p>This is the exposure time skew between the first and last
21616row exposure start times.<wbr/> The first row and the last row are
21617the first and last rows inside of the
21618<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21619<p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
21620to the frame readout time.<wbr/></p>
21621            </td>
21622          </tr>
21623
21624          <tr class="entries_header">
21625            <th class="th_details" colspan="5">HAL Implementation Details</th>
21626          </tr>
21627          <tr class="entry_cont">
21628            <td class="entry_details" colspan="5">
21629              <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
21630exposure at the same time.<wbr/></p>
21631            </td>
21632          </tr>
21633
21634          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21635           <!-- end of entry -->
21636        
21637                
21638          <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel">
21639            <td class="entry_name
21640             " rowspan="5">
21641              android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level
21642            </td>
21643            <td class="entry_type">
21644                <span class="entry_type_name">float</span>
21645                <span class="entry_type_container">x</span>
21646
21647                <span class="entry_type_array">
21648                  4
21649                </span>
21650              <span class="entry_type_visibility"> [public]</span>
21651
21652
21653
21654
21655                <div class="entry_type_notes">2x2 raw count block</div>
21656
21657
21658            </td> <!-- entry_type -->
21659
21660            <td class="entry_description">
21661              <p>A per-frame dynamic black level offset for each of the color filter
21662arrangement (CFA) mosaic channels.<wbr/></p>
21663            </td>
21664
21665            <td class="entry_units">
21666            </td>
21667
21668            <td class="entry_range">
21669              <p>&gt;= 0 for each.<wbr/></p>
21670            </td>
21671
21672            <td class="entry_tags">
21673              <ul class="entry_tags">
21674                  <li><a href="#tag_RAW">RAW</a></li>
21675              </ul>
21676            </td>
21677
21678          </tr>
21679          <tr class="entries_header">
21680            <th class="th_details" colspan="5">Details</th>
21681          </tr>
21682          <tr class="entry_cont">
21683            <td class="entry_details" colspan="5">
21684              <p>Camera sensor black levels may vary dramatically for different
21685capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black
21686level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too
21687inaccurate to represent the actual value on a per-frame basis.<wbr/> The
21688camera device internal pipeline relies on reliable black level values
21689to process the raw images appropriately.<wbr/> To get the best image
21690quality,<wbr/> the camera device may choose to estimate the per frame black
21691level values either based on optically shielded black regions
21692(<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p>
21693<p>This key reports the camera device estimated per-frame zero light
21694value for each of the CFA mosaic channels in the camera sensor.<wbr/> The
21695<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse
21696approximation of the actual black level values.<wbr/> This value is the
21697black level used in camera device internal image processing pipeline
21698and generally more accurate than the fixed black level values.<wbr/>
21699However,<wbr/> since they are estimated values by the camera device,<wbr/> they
21700may not be as accurate as the black level values calculated from the
21701optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p>
21702<p>The values are given in the same order as channels listed for the CFA
21703layout 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
21704nth value given corresponds to the black level offset for the nth
21705color channel listed in the CFA.<wbr/></p>
21706<p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
21707available or the camera device advertises this key via
21708<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
21709            </td>
21710          </tr>
21711
21712          <tr class="entries_header">
21713            <th class="th_details" colspan="5">HAL Implementation Details</th>
21714          </tr>
21715          <tr class="entry_cont">
21716            <td class="entry_details" colspan="5">
21717              <p>The values are given in row-column scan order,<wbr/> with the first value
21718corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
21719            </td>
21720          </tr>
21721
21722          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21723           <!-- end of entry -->
21724        
21725                
21726          <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel">
21727            <td class="entry_name
21728             " rowspan="5">
21729              android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level
21730            </td>
21731            <td class="entry_type">
21732                <span class="entry_type_name">int32</span>
21733
21734              <span class="entry_type_visibility"> [public]</span>
21735
21736
21737
21738
21739
21740
21741            </td> <!-- entry_type -->
21742
21743            <td class="entry_description">
21744              <p>Maximum raw value output by sensor for this frame.<wbr/></p>
21745            </td>
21746
21747            <td class="entry_units">
21748            </td>
21749
21750            <td class="entry_range">
21751              <p>&gt;= 0</p>
21752            </td>
21753
21754            <td class="entry_tags">
21755              <ul class="entry_tags">
21756                  <li><a href="#tag_RAW">RAW</a></li>
21757              </ul>
21758            </td>
21759
21760          </tr>
21761          <tr class="entries_header">
21762            <th class="th_details" colspan="5">Details</th>
21763          </tr>
21764          <tr class="entry_cont">
21765            <td class="entry_details" colspan="5">
21766              <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different
21767capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white
21768level will change accordingly.<wbr/> This key is similar to
21769<a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device
21770estimated white level for each frame.<wbr/></p>
21771<p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
21772available or the camera device advertises this key via
21773<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
21774            </td>
21775          </tr>
21776
21777          <tr class="entries_header">
21778            <th class="th_details" colspan="5">HAL Implementation Details</th>
21779          </tr>
21780          <tr class="entry_cont">
21781            <td class="entry_details" colspan="5">
21782              <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
21783so the value for linear sensors should not be significantly lower
21784than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
21785            </td>
21786          </tr>
21787
21788          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21789           <!-- end of entry -->
21790        
21791        
21792
21793      <!-- end of kind -->
21794      </tbody>
21795
21796  <!-- end of section -->
21797  <tr><td colspan="6" id="section_shading" class="section">shading</td></tr>
21798
21799
21800      <tr><td colspan="6" class="kind">controls</td></tr>
21801
21802      <thead class="entries_header">
21803        <tr>
21804          <th class="th_name">Property Name</th>
21805          <th class="th_type">Type</th>
21806          <th class="th_description">Description</th>
21807          <th class="th_units">Units</th>
21808          <th class="th_range">Range</th>
21809          <th class="th_tags">Tags</th>
21810        </tr>
21811      </thead>
21812
21813      <tbody>
21814
21815        
21816
21817        
21818
21819        
21820
21821        
21822
21823                
21824          <tr class="entry" id="controls_android.shading.mode">
21825            <td class="entry_name
21826             " rowspan="3">
21827              android.<wbr/>shading.<wbr/>mode
21828            </td>
21829            <td class="entry_type">
21830                <span class="entry_type_name entry_type_name_enum">byte</span>
21831
21832              <span class="entry_type_visibility"> [public]</span>
21833
21834
21835              <span class="entry_type_hwlevel">[full] </span>
21836
21837
21838
21839                <ul class="entry_type_enum">
21840                  <li>
21841                    <span class="entry_type_enum_name">OFF</span>
21842                    <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
21843                  </li>
21844                  <li>
21845                    <span class="entry_type_enum_name">FAST</span>
21846                    <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
21847frame rate relative to sensor raw output</p></span>
21848                  </li>
21849                  <li>
21850                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
21851                    <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
21852cost of possibly reduced frame rate.<wbr/></p></span>
21853                  </li>
21854                </ul>
21855
21856            </td> <!-- entry_type -->
21857
21858            <td class="entry_description">
21859              <p>Quality of lens shading correction applied
21860to the image data.<wbr/></p>
21861            </td>
21862
21863            <td class="entry_units">
21864            </td>
21865
21866            <td class="entry_range">
21867              <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
21868            </td>
21869
21870            <td class="entry_tags">
21871            </td>
21872
21873          </tr>
21874          <tr class="entries_header">
21875            <th class="th_details" colspan="5">Details</th>
21876          </tr>
21877          <tr class="entry_cont">
21878            <td class="entry_details" colspan="5">
21879              <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
21880camera device,<wbr/> and an identity lens shading map data will be provided
21881if <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
21882shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
21883the 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
21884map shown below:</p>
21885<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/>
21886 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/>
21887 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/>
21888 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/>
21889 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/>
21890 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 ]
21891</code></pre>
21892<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
21893device.<wbr/> Applications can request lens shading map data by setting
21894<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
21895shading 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
21896data will be the one applied by the camera device for this capture request.<wbr/></p>
21897<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
21898the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
21899AWB 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>
21900OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
21901to be converged before using the returned shading map data.<wbr/></p>
21902            </td>
21903          </tr>
21904
21905
21906          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21907           <!-- end of entry -->
21908        
21909                
21910          <tr class="entry" id="controls_android.shading.strength">
21911            <td class="entry_name
21912             " rowspan="1">
21913              android.<wbr/>shading.<wbr/>strength
21914            </td>
21915            <td class="entry_type">
21916                <span class="entry_type_name">byte</span>
21917
21918              <span class="entry_type_visibility"> [system]</span>
21919
21920
21921
21922
21923
21924
21925            </td> <!-- entry_type -->
21926
21927            <td class="entry_description">
21928              <p>Control the amount of shading correction
21929applied to the images</p>
21930            </td>
21931
21932            <td class="entry_units">
21933              unitless: 1-10; 10 is full shading
21934          compensation
21935            </td>
21936
21937            <td class="entry_range">
21938            </td>
21939
21940            <td class="entry_tags">
21941              <ul class="entry_tags">
21942                  <li><a href="#tag_FUTURE">FUTURE</a></li>
21943              </ul>
21944            </td>
21945
21946          </tr>
21947
21948
21949          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21950           <!-- end of entry -->
21951        
21952        
21953
21954      <!-- end of kind -->
21955      </tbody>
21956      <tr><td colspan="6" class="kind">dynamic</td></tr>
21957
21958      <thead class="entries_header">
21959        <tr>
21960          <th class="th_name">Property Name</th>
21961          <th class="th_type">Type</th>
21962          <th class="th_description">Description</th>
21963          <th class="th_units">Units</th>
21964          <th class="th_range">Range</th>
21965          <th class="th_tags">Tags</th>
21966        </tr>
21967      </thead>
21968
21969      <tbody>
21970
21971        
21972
21973        
21974
21975        
21976
21977        
21978
21979                
21980          <tr class="entry" id="dynamic_android.shading.mode">
21981            <td class="entry_name
21982             " rowspan="3">
21983              android.<wbr/>shading.<wbr/>mode
21984            </td>
21985            <td class="entry_type">
21986                <span class="entry_type_name entry_type_name_enum">byte</span>
21987
21988              <span class="entry_type_visibility"> [public]</span>
21989
21990
21991              <span class="entry_type_hwlevel">[full] </span>
21992
21993
21994
21995                <ul class="entry_type_enum">
21996                  <li>
21997                    <span class="entry_type_enum_name">OFF</span>
21998                    <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
21999                  </li>
22000                  <li>
22001                    <span class="entry_type_enum_name">FAST</span>
22002                    <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
22003frame rate relative to sensor raw output</p></span>
22004                  </li>
22005                  <li>
22006                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
22007                    <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
22008cost of possibly reduced frame rate.<wbr/></p></span>
22009                  </li>
22010                </ul>
22011
22012            </td> <!-- entry_type -->
22013
22014            <td class="entry_description">
22015              <p>Quality of lens shading correction applied
22016to the image data.<wbr/></p>
22017            </td>
22018
22019            <td class="entry_units">
22020            </td>
22021
22022            <td class="entry_range">
22023              <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
22024            </td>
22025
22026            <td class="entry_tags">
22027            </td>
22028
22029          </tr>
22030          <tr class="entries_header">
22031            <th class="th_details" colspan="5">Details</th>
22032          </tr>
22033          <tr class="entry_cont">
22034            <td class="entry_details" colspan="5">
22035              <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
22036camera device,<wbr/> and an identity lens shading map data will be provided
22037if <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
22038shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
22039the 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
22040map shown below:</p>
22041<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/>
22042 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/>
22043 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/>
22044 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/>
22045 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/>
22046 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 ]
22047</code></pre>
22048<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
22049device.<wbr/> Applications can request lens shading map data by setting
22050<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
22051shading 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
22052data will be the one applied by the camera device for this capture request.<wbr/></p>
22053<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
22054the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
22055AWB 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>
22056OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
22057to be converged before using the returned shading map data.<wbr/></p>
22058            </td>
22059          </tr>
22060
22061
22062          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22063           <!-- end of entry -->
22064        
22065        
22066
22067      <!-- end of kind -->
22068      </tbody>
22069      <tr><td colspan="6" class="kind">static</td></tr>
22070
22071      <thead class="entries_header">
22072        <tr>
22073          <th class="th_name">Property Name</th>
22074          <th class="th_type">Type</th>
22075          <th class="th_description">Description</th>
22076          <th class="th_units">Units</th>
22077          <th class="th_range">Range</th>
22078          <th class="th_tags">Tags</th>
22079        </tr>
22080      </thead>
22081
22082      <tbody>
22083
22084        
22085
22086        
22087
22088        
22089
22090        
22091
22092                
22093          <tr class="entry" id="static_android.shading.availableModes">
22094            <td class="entry_name
22095             " rowspan="5">
22096              android.<wbr/>shading.<wbr/>available<wbr/>Modes
22097            </td>
22098            <td class="entry_type">
22099                <span class="entry_type_name">byte</span>
22100                <span class="entry_type_container">x</span>
22101
22102                <span class="entry_type_array">
22103                  n
22104                </span>
22105              <span class="entry_type_visibility"> [public as enumList]</span>
22106
22107
22108              <span class="entry_type_hwlevel">[legacy] </span>
22109
22110
22111                <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
22112
22113
22114            </td> <!-- entry_type -->
22115
22116            <td class="entry_description">
22117              <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>
22118            </td>
22119
22120            <td class="entry_units">
22121            </td>
22122
22123            <td class="entry_range">
22124              <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
22125            </td>
22126
22127            <td class="entry_tags">
22128            </td>
22129
22130          </tr>
22131          <tr class="entries_header">
22132            <th class="th_details" colspan="5">Details</th>
22133          </tr>
22134          <tr class="entry_cont">
22135            <td class="entry_details" colspan="5">
22136              <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
22137Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
22138list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
22139LEGACY devices will always only support FAST mode.<wbr/></p>
22140            </td>
22141          </tr>
22142
22143          <tr class="entries_header">
22144            <th class="th_details" colspan="5">HAL Implementation Details</th>
22145          </tr>
22146          <tr class="entry_cont">
22147            <td class="entry_details" colspan="5">
22148              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
22149available on the camera device,<wbr/> but the underlying implementation can be the same for
22150both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
22151slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
22152            </td>
22153          </tr>
22154
22155          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22156           <!-- end of entry -->
22157        
22158        
22159
22160      <!-- end of kind -->
22161      </tbody>
22162
22163  <!-- end of section -->
22164  <tr><td colspan="6" id="section_statistics" class="section">statistics</td></tr>
22165
22166
22167      <tr><td colspan="6" class="kind">controls</td></tr>
22168
22169      <thead class="entries_header">
22170        <tr>
22171          <th class="th_name">Property Name</th>
22172          <th class="th_type">Type</th>
22173          <th class="th_description">Description</th>
22174          <th class="th_units">Units</th>
22175          <th class="th_range">Range</th>
22176          <th class="th_tags">Tags</th>
22177        </tr>
22178      </thead>
22179
22180      <tbody>
22181
22182        
22183
22184        
22185
22186        
22187
22188        
22189
22190                
22191          <tr class="entry" id="controls_android.statistics.faceDetectMode">
22192            <td class="entry_name
22193             " rowspan="5">
22194              android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
22195            </td>
22196            <td class="entry_type">
22197                <span class="entry_type_name entry_type_name_enum">byte</span>
22198
22199              <span class="entry_type_visibility"> [public]</span>
22200
22201
22202              <span class="entry_type_hwlevel">[legacy] </span>
22203
22204
22205
22206                <ul class="entry_type_enum">
22207                  <li>
22208                    <span class="entry_type_enum_name">OFF</span>
22209                    <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
22210results.<wbr/></p></span>
22211                  </li>
22212                  <li>
22213                    <span class="entry_type_enum_name">SIMPLE</span>
22214                    <span class="entry_type_enum_optional">[optional]</span>
22215                    <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
22216                  </li>
22217                  <li>
22218                    <span class="entry_type_enum_name">FULL</span>
22219                    <span class="entry_type_enum_optional">[optional]</span>
22220                    <span class="entry_type_enum_notes"><p>Return all face
22221metadata.<wbr/></p>
22222<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
22223                  </li>
22224                </ul>
22225
22226            </td> <!-- entry_type -->
22227
22228            <td class="entry_description">
22229              <p>Operating mode for the face detector
22230unit.<wbr/></p>
22231            </td>
22232
22233            <td class="entry_units">
22234            </td>
22235
22236            <td class="entry_range">
22237              <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
22238            </td>
22239
22240            <td class="entry_tags">
22241              <ul class="entry_tags">
22242                  <li><a href="#tag_BC">BC</a></li>
22243              </ul>
22244            </td>
22245
22246          </tr>
22247          <tr class="entries_header">
22248            <th class="th_details" colspan="5">Details</th>
22249          </tr>
22250          <tr class="entry_cont">
22251            <td class="entry_details" colspan="5">
22252              <p>Whether face detection is enabled,<wbr/> and whether it
22253should output just the basic fields or the full set of
22254fields.<wbr/></p>
22255            </td>
22256          </tr>
22257
22258          <tr class="entries_header">
22259            <th class="th_details" colspan="5">HAL Implementation Details</th>
22260          </tr>
22261          <tr class="entry_cont">
22262            <td class="entry_details" colspan="5">
22263              <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
22264<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
22265FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
22266<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
22267            </td>
22268          </tr>
22269
22270          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22271           <!-- end of entry -->
22272        
22273                
22274          <tr class="entry" id="controls_android.statistics.histogramMode">
22275            <td class="entry_name
22276             " rowspan="1">
22277              android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
22278            </td>
22279            <td class="entry_type">
22280                <span class="entry_type_name entry_type_name_enum">byte</span>
22281
22282              <span class="entry_type_visibility"> [system as boolean]</span>
22283
22284
22285
22286
22287
22288                <ul class="entry_type_enum">
22289                  <li>
22290                    <span class="entry_type_enum_name">OFF</span>
22291                  </li>
22292                  <li>
22293                    <span class="entry_type_enum_name">ON</span>
22294                  </li>
22295                </ul>
22296
22297            </td> <!-- entry_type -->
22298
22299            <td class="entry_description">
22300              <p>Operating mode for histogram
22301generation</p>
22302            </td>
22303
22304            <td class="entry_units">
22305            </td>
22306
22307            <td class="entry_range">
22308            </td>
22309
22310            <td class="entry_tags">
22311              <ul class="entry_tags">
22312                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22313              </ul>
22314            </td>
22315
22316          </tr>
22317
22318
22319          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22320           <!-- end of entry -->
22321        
22322                
22323          <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
22324            <td class="entry_name
22325             " rowspan="1">
22326              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
22327            </td>
22328            <td class="entry_type">
22329                <span class="entry_type_name entry_type_name_enum">byte</span>
22330
22331              <span class="entry_type_visibility"> [system as boolean]</span>
22332
22333
22334
22335
22336
22337                <ul class="entry_type_enum">
22338                  <li>
22339                    <span class="entry_type_enum_name">OFF</span>
22340                  </li>
22341                  <li>
22342                    <span class="entry_type_enum_name">ON</span>
22343                  </li>
22344                </ul>
22345
22346            </td> <!-- entry_type -->
22347
22348            <td class="entry_description">
22349              <p>Operating mode for sharpness map
22350generation</p>
22351            </td>
22352
22353            <td class="entry_units">
22354            </td>
22355
22356            <td class="entry_range">
22357            </td>
22358
22359            <td class="entry_tags">
22360              <ul class="entry_tags">
22361                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22362              </ul>
22363            </td>
22364
22365          </tr>
22366
22367
22368          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22369           <!-- end of entry -->
22370        
22371                
22372          <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
22373            <td class="entry_name
22374             " rowspan="3">
22375              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
22376            </td>
22377            <td class="entry_type">
22378                <span class="entry_type_name entry_type_name_enum">byte</span>
22379
22380              <span class="entry_type_visibility"> [public as boolean]</span>
22381
22382
22383
22384
22385
22386                <ul class="entry_type_enum">
22387                  <li>
22388                    <span class="entry_type_enum_name">OFF</span>
22389                    <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
22390                  </li>
22391                  <li>
22392                    <span class="entry_type_enum_name">ON</span>
22393                    <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
22394                  </li>
22395                </ul>
22396
22397            </td> <!-- entry_type -->
22398
22399            <td class="entry_description">
22400              <p>Operating mode for hot pixel map generation.<wbr/></p>
22401            </td>
22402
22403            <td class="entry_units">
22404            </td>
22405
22406            <td class="entry_range">
22407              <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>
22408            </td>
22409
22410            <td class="entry_tags">
22411              <ul class="entry_tags">
22412                  <li><a href="#tag_V1">V1</a></li>
22413                  <li><a href="#tag_RAW">RAW</a></li>
22414              </ul>
22415            </td>
22416
22417          </tr>
22418          <tr class="entries_header">
22419            <th class="th_details" colspan="5">Details</th>
22420          </tr>
22421          <tr class="entry_cont">
22422            <td class="entry_details" colspan="5">
22423              <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/>
22424If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
22425            </td>
22426          </tr>
22427
22428
22429          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22430           <!-- end of entry -->
22431        
22432                
22433          <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
22434            <td class="entry_name
22435             " rowspan="3">
22436              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
22437            </td>
22438            <td class="entry_type">
22439                <span class="entry_type_name entry_type_name_enum">byte</span>
22440
22441              <span class="entry_type_visibility"> [public]</span>
22442
22443
22444              <span class="entry_type_hwlevel">[full] </span>
22445
22446
22447
22448                <ul class="entry_type_enum">
22449                  <li>
22450                    <span class="entry_type_enum_name">OFF</span>
22451                    <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
22452                  </li>
22453                  <li>
22454                    <span class="entry_type_enum_name">ON</span>
22455                    <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
22456                  </li>
22457                </ul>
22458
22459            </td> <!-- entry_type -->
22460
22461            <td class="entry_description">
22462              <p>Whether the camera device will output the lens
22463shading map in output result metadata.<wbr/></p>
22464            </td>
22465
22466            <td class="entry_units">
22467            </td>
22468
22469            <td class="entry_range">
22470              <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>
22471            </td>
22472
22473            <td class="entry_tags">
22474              <ul class="entry_tags">
22475                  <li><a href="#tag_RAW">RAW</a></li>
22476              </ul>
22477            </td>
22478
22479          </tr>
22480          <tr class="entries_header">
22481            <th class="th_details" colspan="5">Details</th>
22482          </tr>
22483          <tr class="entry_cont">
22484            <td class="entry_details" colspan="5">
22485              <p>When set to ON,<wbr/>
22486<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
22487the output result metadata.<wbr/></p>
22488<p>ON is always supported on devices with the RAW capability.<wbr/></p>
22489            </td>
22490          </tr>
22491
22492
22493          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22494           <!-- end of entry -->
22495        
22496        
22497
22498      <!-- end of kind -->
22499      </tbody>
22500      <tr><td colspan="6" class="kind">static</td></tr>
22501
22502      <thead class="entries_header">
22503        <tr>
22504          <th class="th_name">Property Name</th>
22505          <th class="th_type">Type</th>
22506          <th class="th_description">Description</th>
22507          <th class="th_units">Units</th>
22508          <th class="th_range">Range</th>
22509          <th class="th_tags">Tags</th>
22510        </tr>
22511      </thead>
22512
22513      <tbody>
22514
22515        
22516
22517        
22518
22519        
22520
22521        
22522                
22523            
22524
22525                
22526          <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
22527            <td class="entry_name
22528             " rowspan="3">
22529              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
22530            </td>
22531            <td class="entry_type">
22532                <span class="entry_type_name">byte</span>
22533                <span class="entry_type_container">x</span>
22534
22535                <span class="entry_type_array">
22536                  n
22537                </span>
22538              <span class="entry_type_visibility"> [public as enumList]</span>
22539
22540
22541              <span class="entry_type_hwlevel">[legacy] </span>
22542
22543
22544                <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
22545
22546
22547            </td> <!-- entry_type -->
22548
22549            <td class="entry_description">
22550              <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
22551supported by this camera device.<wbr/></p>
22552            </td>
22553
22554            <td class="entry_units">
22555            </td>
22556
22557            <td class="entry_range">
22558              <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
22559            </td>
22560
22561            <td class="entry_tags">
22562            </td>
22563
22564          </tr>
22565          <tr class="entries_header">
22566            <th class="th_details" colspan="5">Details</th>
22567          </tr>
22568          <tr class="entry_cont">
22569            <td class="entry_details" colspan="5">
22570              <p>OFF is always supported.<wbr/></p>
22571            </td>
22572          </tr>
22573
22574
22575          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22576           <!-- end of entry -->
22577        
22578                
22579          <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
22580            <td class="entry_name
22581             " rowspan="1">
22582              android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
22583            </td>
22584            <td class="entry_type">
22585                <span class="entry_type_name">int32</span>
22586
22587              <span class="entry_type_visibility"> [system]</span>
22588
22589
22590
22591
22592
22593
22594            </td> <!-- entry_type -->
22595
22596            <td class="entry_description">
22597              <p>Number of histogram buckets
22598supported</p>
22599            </td>
22600
22601            <td class="entry_units">
22602            </td>
22603
22604            <td class="entry_range">
22605              <p>&gt;= 64</p>
22606            </td>
22607
22608            <td class="entry_tags">
22609              <ul class="entry_tags">
22610                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22611              </ul>
22612            </td>
22613
22614          </tr>
22615
22616
22617          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22618           <!-- end of entry -->
22619        
22620                
22621          <tr class="entry" id="static_android.statistics.info.maxFaceCount">
22622            <td class="entry_name
22623             " rowspan="1">
22624              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
22625            </td>
22626            <td class="entry_type">
22627                <span class="entry_type_name">int32</span>
22628
22629              <span class="entry_type_visibility"> [public]</span>
22630
22631
22632              <span class="entry_type_hwlevel">[legacy] </span>
22633
22634
22635
22636
22637            </td> <!-- entry_type -->
22638
22639            <td class="entry_description">
22640              <p>The maximum number of simultaneously detectable
22641faces.<wbr/></p>
22642            </td>
22643
22644            <td class="entry_units">
22645            </td>
22646
22647            <td class="entry_range">
22648              <p>0 for cameras without available face detection; otherwise:
22649<code>&gt;=4</code> for LIMITED or FULL hwlevel devices or
22650<code>&gt;0</code> for LEGACY devices.<wbr/></p>
22651            </td>
22652
22653            <td class="entry_tags">
22654              <ul class="entry_tags">
22655                  <li><a href="#tag_BC">BC</a></li>
22656              </ul>
22657            </td>
22658
22659          </tr>
22660
22661
22662          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22663           <!-- end of entry -->
22664        
22665                
22666          <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
22667            <td class="entry_name
22668             " rowspan="1">
22669              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
22670            </td>
22671            <td class="entry_type">
22672                <span class="entry_type_name">int32</span>
22673
22674              <span class="entry_type_visibility"> [system]</span>
22675
22676
22677
22678
22679
22680
22681            </td> <!-- entry_type -->
22682
22683            <td class="entry_description">
22684              <p>Maximum value possible for a histogram
22685bucket</p>
22686            </td>
22687
22688            <td class="entry_units">
22689            </td>
22690
22691            <td class="entry_range">
22692            </td>
22693
22694            <td class="entry_tags">
22695              <ul class="entry_tags">
22696                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22697              </ul>
22698            </td>
22699
22700          </tr>
22701
22702
22703          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22704           <!-- end of entry -->
22705        
22706                
22707          <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
22708            <td class="entry_name
22709             " rowspan="1">
22710              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
22711            </td>
22712            <td class="entry_type">
22713                <span class="entry_type_name">int32</span>
22714
22715              <span class="entry_type_visibility"> [system]</span>
22716
22717
22718
22719
22720
22721
22722            </td> <!-- entry_type -->
22723
22724            <td class="entry_description">
22725              <p>Maximum value possible for a sharpness map
22726region.<wbr/></p>
22727            </td>
22728
22729            <td class="entry_units">
22730            </td>
22731
22732            <td class="entry_range">
22733            </td>
22734
22735            <td class="entry_tags">
22736              <ul class="entry_tags">
22737                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22738              </ul>
22739            </td>
22740
22741          </tr>
22742
22743
22744          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22745           <!-- end of entry -->
22746        
22747                
22748          <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
22749            <td class="entry_name
22750             " rowspan="1">
22751              android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
22752            </td>
22753            <td class="entry_type">
22754                <span class="entry_type_name">int32</span>
22755                <span class="entry_type_container">x</span>
22756
22757                <span class="entry_type_array">
22758                  2
22759                </span>
22760              <span class="entry_type_visibility"> [system as size]</span>
22761
22762
22763
22764
22765                <div class="entry_type_notes">width x height</div>
22766
22767
22768            </td> <!-- entry_type -->
22769
22770            <td class="entry_description">
22771              <p>Dimensions of the sharpness
22772map</p>
22773            </td>
22774
22775            <td class="entry_units">
22776            </td>
22777
22778            <td class="entry_range">
22779              <p>Must be at least 32 x 32</p>
22780            </td>
22781
22782            <td class="entry_tags">
22783              <ul class="entry_tags">
22784                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22785              </ul>
22786            </td>
22787
22788          </tr>
22789
22790
22791          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22792           <!-- end of entry -->
22793        
22794                
22795          <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
22796            <td class="entry_name
22797             " rowspan="3">
22798              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
22799            </td>
22800            <td class="entry_type">
22801                <span class="entry_type_name">byte</span>
22802                <span class="entry_type_container">x</span>
22803
22804                <span class="entry_type_array">
22805                  n
22806                </span>
22807              <span class="entry_type_visibility"> [public as boolean]</span>
22808
22809
22810
22811
22812                <div class="entry_type_notes">list of enums</div>
22813
22814
22815            </td> <!-- entry_type -->
22816
22817            <td class="entry_description">
22818              <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
22819supported by this camera device.<wbr/></p>
22820            </td>
22821
22822            <td class="entry_units">
22823            </td>
22824
22825            <td class="entry_range">
22826              <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
22827            </td>
22828
22829            <td class="entry_tags">
22830              <ul class="entry_tags">
22831                  <li><a href="#tag_V1">V1</a></li>
22832                  <li><a href="#tag_RAW">RAW</a></li>
22833              </ul>
22834            </td>
22835
22836          </tr>
22837          <tr class="entries_header">
22838            <th class="th_details" colspan="5">Details</th>
22839          </tr>
22840          <tr class="entry_cont">
22841            <td class="entry_details" colspan="5">
22842              <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
22843<code>false</code>.<wbr/></p>
22844<p>ON is always supported on devices with the RAW capability.<wbr/></p>
22845            </td>
22846          </tr>
22847
22848
22849          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22850           <!-- end of entry -->
22851        
22852                
22853          <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
22854            <td class="entry_name
22855             " rowspan="3">
22856              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
22857            </td>
22858            <td class="entry_type">
22859                <span class="entry_type_name">byte</span>
22860                <span class="entry_type_container">x</span>
22861
22862                <span class="entry_type_array">
22863                  n
22864                </span>
22865              <span class="entry_type_visibility"> [public as enumList]</span>
22866
22867
22868
22869
22870                <div class="entry_type_notes">list of enums</div>
22871
22872
22873            </td> <!-- entry_type -->
22874
22875            <td class="entry_description">
22876              <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
22877are supported by this camera device.<wbr/></p>
22878            </td>
22879
22880            <td class="entry_units">
22881            </td>
22882
22883            <td class="entry_range">
22884              <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
22885            </td>
22886
22887            <td class="entry_tags">
22888            </td>
22889
22890          </tr>
22891          <tr class="entries_header">
22892            <th class="th_details" colspan="5">Details</th>
22893          </tr>
22894          <tr class="entry_cont">
22895            <td class="entry_details" colspan="5">
22896              <p>If no lens shading map output is available for this camera device,<wbr/> this key will
22897contain only OFF.<wbr/></p>
22898<p>ON is always supported on devices with the RAW capability.<wbr/>
22899LEGACY mode devices will always only support OFF.<wbr/></p>
22900            </td>
22901          </tr>
22902
22903
22904          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22905           <!-- end of entry -->
22906        
22907        
22908        
22909
22910        
22911
22912      <!-- end of kind -->
22913      </tbody>
22914      <tr><td colspan="6" class="kind">dynamic</td></tr>
22915
22916      <thead class="entries_header">
22917        <tr>
22918          <th class="th_name">Property Name</th>
22919          <th class="th_type">Type</th>
22920          <th class="th_description">Description</th>
22921          <th class="th_units">Units</th>
22922          <th class="th_range">Range</th>
22923          <th class="th_tags">Tags</th>
22924        </tr>
22925      </thead>
22926
22927      <tbody>
22928
22929        
22930
22931        
22932
22933        
22934
22935        
22936
22937                
22938          <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
22939            <td class="entry_name
22940             " rowspan="5">
22941              android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
22942            </td>
22943            <td class="entry_type">
22944                <span class="entry_type_name entry_type_name_enum">byte</span>
22945
22946              <span class="entry_type_visibility"> [public]</span>
22947
22948
22949              <span class="entry_type_hwlevel">[legacy] </span>
22950
22951
22952
22953                <ul class="entry_type_enum">
22954                  <li>
22955                    <span class="entry_type_enum_name">OFF</span>
22956                    <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
22957results.<wbr/></p></span>
22958                  </li>
22959                  <li>
22960                    <span class="entry_type_enum_name">SIMPLE</span>
22961                    <span class="entry_type_enum_optional">[optional]</span>
22962                    <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
22963                  </li>
22964                  <li>
22965                    <span class="entry_type_enum_name">FULL</span>
22966                    <span class="entry_type_enum_optional">[optional]</span>
22967                    <span class="entry_type_enum_notes"><p>Return all face
22968metadata.<wbr/></p>
22969<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
22970                  </li>
22971                </ul>
22972
22973            </td> <!-- entry_type -->
22974
22975            <td class="entry_description">
22976              <p>Operating mode for the face detector
22977unit.<wbr/></p>
22978            </td>
22979
22980            <td class="entry_units">
22981            </td>
22982
22983            <td class="entry_range">
22984              <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
22985            </td>
22986
22987            <td class="entry_tags">
22988              <ul class="entry_tags">
22989                  <li><a href="#tag_BC">BC</a></li>
22990              </ul>
22991            </td>
22992
22993          </tr>
22994          <tr class="entries_header">
22995            <th class="th_details" colspan="5">Details</th>
22996          </tr>
22997          <tr class="entry_cont">
22998            <td class="entry_details" colspan="5">
22999              <p>Whether face detection is enabled,<wbr/> and whether it
23000should output just the basic fields or the full set of
23001fields.<wbr/></p>
23002            </td>
23003          </tr>
23004
23005          <tr class="entries_header">
23006            <th class="th_details" colspan="5">HAL Implementation Details</th>
23007          </tr>
23008          <tr class="entry_cont">
23009            <td class="entry_details" colspan="5">
23010              <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
23011<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
23012FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
23013<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
23014            </td>
23015          </tr>
23016
23017          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23018           <!-- end of entry -->
23019        
23020                
23021          <tr class="entry" id="dynamic_android.statistics.faceIds">
23022            <td class="entry_name
23023             " rowspan="3">
23024              android.<wbr/>statistics.<wbr/>face<wbr/>Ids
23025            </td>
23026            <td class="entry_type">
23027                <span class="entry_type_name">int32</span>
23028                <span class="entry_type_container">x</span>
23029
23030                <span class="entry_type_array">
23031                  n
23032                </span>
23033              <span class="entry_type_visibility"> [ndk_public]</span>
23034
23035
23036              <span class="entry_type_hwlevel">[legacy] </span>
23037
23038
23039
23040
23041            </td> <!-- entry_type -->
23042
23043            <td class="entry_description">
23044              <p>List of unique IDs for detected faces.<wbr/></p>
23045            </td>
23046
23047            <td class="entry_units">
23048            </td>
23049
23050            <td class="entry_range">
23051            </td>
23052
23053            <td class="entry_tags">
23054              <ul class="entry_tags">
23055                  <li><a href="#tag_BC">BC</a></li>
23056              </ul>
23057            </td>
23058
23059          </tr>
23060          <tr class="entries_header">
23061            <th class="th_details" colspan="5">Details</th>
23062          </tr>
23063          <tr class="entry_cont">
23064            <td class="entry_details" colspan="5">
23065              <p>Each detected face is given a unique ID that is valid for as long as the face is visible
23066to the camera device.<wbr/>  A face that leaves the field of view and later returns may be
23067assigned a new ID.<wbr/></p>
23068<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
23069            </td>
23070          </tr>
23071
23072
23073          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23074           <!-- end of entry -->
23075        
23076                
23077          <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
23078            <td class="entry_name
23079             " rowspan="3">
23080              android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
23081            </td>
23082            <td class="entry_type">
23083                <span class="entry_type_name">int32</span>
23084                <span class="entry_type_container">x</span>
23085
23086                <span class="entry_type_array">
23087                  n x 6
23088                </span>
23089              <span class="entry_type_visibility"> [ndk_public]</span>
23090
23091
23092              <span class="entry_type_hwlevel">[legacy] </span>
23093
23094
23095                <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
23096
23097
23098            </td> <!-- entry_type -->
23099
23100            <td class="entry_description">
23101              <p>List of landmarks for detected
23102faces.<wbr/></p>
23103            </td>
23104
23105            <td class="entry_units">
23106            </td>
23107
23108            <td class="entry_range">
23109            </td>
23110
23111            <td class="entry_tags">
23112              <ul class="entry_tags">
23113                  <li><a href="#tag_BC">BC</a></li>
23114              </ul>
23115            </td>
23116
23117          </tr>
23118          <tr class="entries_header">
23119            <th class="th_details" colspan="5">Details</th>
23120          </tr>
23121          <tr class="entry_cont">
23122            <td class="entry_details" colspan="5">
23123              <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
23124<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
23125<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
23126            </td>
23127          </tr>
23128
23129
23130          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23131           <!-- end of entry -->
23132        
23133                
23134          <tr class="entry" id="dynamic_android.statistics.faceRectangles">
23135            <td class="entry_name
23136             " rowspan="3">
23137              android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
23138            </td>
23139            <td class="entry_type">
23140                <span class="entry_type_name">int32</span>
23141                <span class="entry_type_container">x</span>
23142
23143                <span class="entry_type_array">
23144                  n x 4
23145                </span>
23146              <span class="entry_type_visibility"> [ndk_public as rectangle]</span>
23147
23148
23149              <span class="entry_type_hwlevel">[legacy] </span>
23150
23151
23152                <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
23153
23154
23155            </td> <!-- entry_type -->
23156
23157            <td class="entry_description">
23158              <p>List of the bounding rectangles for detected
23159faces.<wbr/></p>
23160            </td>
23161
23162            <td class="entry_units">
23163            </td>
23164
23165            <td class="entry_range">
23166            </td>
23167
23168            <td class="entry_tags">
23169              <ul class="entry_tags">
23170                  <li><a href="#tag_BC">BC</a></li>
23171              </ul>
23172            </td>
23173
23174          </tr>
23175          <tr class="entries_header">
23176            <th class="th_details" colspan="5">Details</th>
23177          </tr>
23178          <tr class="entry_cont">
23179            <td class="entry_details" colspan="5">
23180              <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
23181<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
23182<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
23183            </td>
23184          </tr>
23185
23186
23187          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23188           <!-- end of entry -->
23189        
23190                
23191          <tr class="entry" id="dynamic_android.statistics.faceScores">
23192            <td class="entry_name
23193             " rowspan="5">
23194              android.<wbr/>statistics.<wbr/>face<wbr/>Scores
23195            </td>
23196            <td class="entry_type">
23197                <span class="entry_type_name">byte</span>
23198                <span class="entry_type_container">x</span>
23199
23200                <span class="entry_type_array">
23201                  n
23202                </span>
23203              <span class="entry_type_visibility"> [ndk_public]</span>
23204
23205
23206              <span class="entry_type_hwlevel">[legacy] </span>
23207
23208
23209
23210
23211            </td> <!-- entry_type -->
23212
23213            <td class="entry_description">
23214              <p>List of the face confidence scores for
23215detected faces</p>
23216            </td>
23217
23218            <td class="entry_units">
23219            </td>
23220
23221            <td class="entry_range">
23222              <p>1-100</p>
23223            </td>
23224
23225            <td class="entry_tags">
23226              <ul class="entry_tags">
23227                  <li><a href="#tag_BC">BC</a></li>
23228              </ul>
23229            </td>
23230
23231          </tr>
23232          <tr class="entries_header">
23233            <th class="th_details" colspan="5">Details</th>
23234          </tr>
23235          <tr class="entry_cont">
23236            <td class="entry_details" colspan="5">
23237              <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
23238            </td>
23239          </tr>
23240
23241          <tr class="entries_header">
23242            <th class="th_details" colspan="5">HAL Implementation Details</th>
23243          </tr>
23244          <tr class="entry_cont">
23245            <td class="entry_details" colspan="5">
23246              <p>The value should be meaningful (for example,<wbr/> setting 100 at
23247all times is illegal).<wbr/></p>
23248            </td>
23249          </tr>
23250
23251          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23252           <!-- end of entry -->
23253        
23254                
23255          <tr class="entry" id="dynamic_android.statistics.faces">
23256            <td class="entry_name
23257             " rowspan="3">
23258              android.<wbr/>statistics.<wbr/>faces
23259            </td>
23260            <td class="entry_type">
23261                <span class="entry_type_name">int32</span>
23262                <span class="entry_type_container">x</span>
23263
23264                <span class="entry_type_array">
23265                  n
23266                </span>
23267              <span class="entry_type_visibility"> [java_public as face]</span>
23268
23269              <span class="entry_type_synthetic">[synthetic] </span>
23270
23271              <span class="entry_type_hwlevel">[legacy] </span>
23272
23273
23274
23275
23276            </td> <!-- entry_type -->
23277
23278            <td class="entry_description">
23279              <p>List of the faces detected through camera face detection
23280in this capture.<wbr/></p>
23281            </td>
23282
23283            <td class="entry_units">
23284            </td>
23285
23286            <td class="entry_range">
23287            </td>
23288
23289            <td class="entry_tags">
23290            </td>
23291
23292          </tr>
23293          <tr class="entries_header">
23294            <th class="th_details" colspan="5">Details</th>
23295          </tr>
23296          <tr class="entry_cont">
23297            <td class="entry_details" colspan="5">
23298              <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>
23299            </td>
23300          </tr>
23301
23302
23303          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23304           <!-- end of entry -->
23305        
23306                
23307          <tr class="entry" id="dynamic_android.statistics.histogram">
23308            <td class="entry_name
23309             " rowspan="3">
23310              android.<wbr/>statistics.<wbr/>histogram
23311            </td>
23312            <td class="entry_type">
23313                <span class="entry_type_name">int32</span>
23314                <span class="entry_type_container">x</span>
23315
23316                <span class="entry_type_array">
23317                  n x 3
23318                </span>
23319              <span class="entry_type_visibility"> [system]</span>
23320
23321
23322
23323
23324                <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>
23325
23326
23327            </td> <!-- entry_type -->
23328
23329            <td class="entry_description">
23330              <p>A 3-channel histogram based on the raw
23331sensor data</p>
23332            </td>
23333
23334            <td class="entry_units">
23335            </td>
23336
23337            <td class="entry_range">
23338            </td>
23339
23340            <td class="entry_tags">
23341              <ul class="entry_tags">
23342                  <li><a href="#tag_FUTURE">FUTURE</a></li>
23343              </ul>
23344            </td>
23345
23346          </tr>
23347          <tr class="entries_header">
23348            <th class="th_details" colspan="5">Details</th>
23349          </tr>
23350          <tr class="entry_cont">
23351            <td class="entry_details" colspan="5">
23352              <p>The k'th bucket (0-based) covers the input range
23353(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/>
23354(k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
23355supported,<wbr/> all channels should have the same data</p>
23356            </td>
23357          </tr>
23358
23359
23360          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23361           <!-- end of entry -->
23362        
23363                
23364          <tr class="entry" id="dynamic_android.statistics.histogramMode">
23365            <td class="entry_name
23366             " rowspan="1">
23367              android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
23368            </td>
23369            <td class="entry_type">
23370                <span class="entry_type_name entry_type_name_enum">byte</span>
23371
23372              <span class="entry_type_visibility"> [system as boolean]</span>
23373
23374
23375
23376
23377
23378                <ul class="entry_type_enum">
23379                  <li>
23380                    <span class="entry_type_enum_name">OFF</span>
23381                  </li>
23382                  <li>
23383                    <span class="entry_type_enum_name">ON</span>
23384                  </li>
23385                </ul>
23386
23387            </td> <!-- entry_type -->
23388
23389            <td class="entry_description">
23390              <p>Operating mode for histogram
23391generation</p>
23392            </td>
23393
23394            <td class="entry_units">
23395            </td>
23396
23397            <td class="entry_range">
23398            </td>
23399
23400            <td class="entry_tags">
23401              <ul class="entry_tags">
23402                  <li><a href="#tag_FUTURE">FUTURE</a></li>
23403              </ul>
23404            </td>
23405
23406          </tr>
23407
23408
23409          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23410           <!-- end of entry -->
23411        
23412                
23413          <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
23414            <td class="entry_name
23415             " rowspan="3">
23416              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
23417            </td>
23418            <td class="entry_type">
23419                <span class="entry_type_name">int32</span>
23420                <span class="entry_type_container">x</span>
23421
23422                <span class="entry_type_array">
23423                  n x m x 3
23424                </span>
23425              <span class="entry_type_visibility"> [system]</span>
23426
23427
23428
23429
23430                <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>
23431
23432
23433            </td> <!-- entry_type -->
23434
23435            <td class="entry_description">
23436              <p>A 3-channel sharpness map,<wbr/> based on the raw
23437sensor data</p>
23438            </td>
23439
23440            <td class="entry_units">
23441            </td>
23442
23443            <td class="entry_range">
23444            </td>
23445
23446            <td class="entry_tags">
23447              <ul class="entry_tags">
23448                  <li><a href="#tag_FUTURE">FUTURE</a></li>
23449              </ul>
23450            </td>
23451
23452          </tr>
23453          <tr class="entries_header">
23454            <th class="th_details" colspan="5">Details</th>
23455          </tr>
23456          <tr class="entry_cont">
23457            <td class="entry_details" colspan="5">
23458              <p>If only a monochrome sharpness map is supported,<wbr/>
23459all channels should have the same data</p>
23460            </td>
23461          </tr>
23462
23463
23464          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23465           <!-- end of entry -->
23466        
23467                
23468          <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
23469            <td class="entry_name
23470             " rowspan="1">
23471              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
23472            </td>
23473            <td class="entry_type">
23474                <span class="entry_type_name entry_type_name_enum">byte</span>
23475
23476              <span class="entry_type_visibility"> [system as boolean]</span>
23477
23478
23479
23480
23481
23482                <ul class="entry_type_enum">
23483                  <li>
23484                    <span class="entry_type_enum_name">OFF</span>
23485                  </li>
23486                  <li>
23487                    <span class="entry_type_enum_name">ON</span>
23488                  </li>
23489                </ul>
23490
23491            </td> <!-- entry_type -->
23492
23493            <td class="entry_description">
23494              <p>Operating mode for sharpness map
23495generation</p>
23496            </td>
23497
23498            <td class="entry_units">
23499            </td>
23500
23501            <td class="entry_range">
23502            </td>
23503
23504            <td class="entry_tags">
23505              <ul class="entry_tags">
23506                  <li><a href="#tag_FUTURE">FUTURE</a></li>
23507              </ul>
23508            </td>
23509
23510          </tr>
23511
23512
23513          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23514           <!-- end of entry -->
23515        
23516                
23517          <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
23518            <td class="entry_name
23519             " rowspan="3">
23520              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
23521            </td>
23522            <td class="entry_type">
23523                <span class="entry_type_name">byte</span>
23524
23525              <span class="entry_type_visibility"> [java_public as lensShadingMap]</span>
23526
23527
23528              <span class="entry_type_hwlevel">[full] </span>
23529
23530
23531
23532
23533            </td> <!-- entry_type -->
23534
23535            <td class="entry_description">
23536              <p>The shading map is a low-resolution floating-point map
23537that lists the coefficients used to correct for vignetting,<wbr/> for each
23538Bayer color channel.<wbr/></p>
23539            </td>
23540
23541            <td class="entry_units">
23542            </td>
23543
23544            <td class="entry_range">
23545              <p>Each gain factor is &gt;= 1</p>
23546            </td>
23547
23548            <td class="entry_tags">
23549            </td>
23550
23551          </tr>
23552          <tr class="entries_header">
23553            <th class="th_details" colspan="5">Details</th>
23554          </tr>
23555          <tr class="entry_cont">
23556            <td class="entry_details" colspan="5">
23557              <p>The map provided here is the same map that is used by the camera device to
23558correct both color shading and vignetting for output non-RAW images.<wbr/></p>
23559<p>When there is no lens shading correction applied to RAW
23560output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
23561false),<wbr/> this map is the complete lens shading correction
23562map; when there is some lens shading correction applied to
23563the RAW output image (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a><code>==</code> true),<wbr/> this map reports the remaining lens shading
23564correction map that needs to be applied to get shading
23565corrected images that match the camera device's output for
23566non-RAW formats.<wbr/></p>
23567<p>For a complete shading correction map,<wbr/> the least shaded
23568section of the image will have a gain factor of 1; all
23569other sections will have gains above 1.<wbr/></p>
23570<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
23571will take into account the colorCorrection settings.<wbr/></p>
23572<p>The shading map is for the entire active pixel array,<wbr/> and is not
23573affected by the crop region specified in the request.<wbr/> Each shading map
23574entry is the value of the shading compensation map over a specific
23575pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
23576map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
23577(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
23578pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
23579The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
23580<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
23581channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
23582The shading map is stored in a fully interleaved format.<wbr/></p>
23583<p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
23584and will be smaller than 64x64.<wbr/></p>
23585<p>As an example,<wbr/> given a very small map defined as:</p>
23586<pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
23587values =
23588[ 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/>
23589    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/>
23590  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/>
23591    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/>
23592  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/>
23593    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 ]
23594</code></pre>
23595<p>The low-resolution scaling map images for each channel are
23596(displayed using nearest-neighbor interpolation):</p>
23597<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
23598<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
23599<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
23600<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
23601<p>As a visualization only,<wbr/> inverting the full-color map to recover an
23602image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
23603<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
23604            </td>
23605          </tr>
23606
23607
23608          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23609           <!-- end of entry -->
23610        
23611                
23612          <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
23613            <td class="entry_name
23614             " rowspan="5">
23615              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
23616            </td>
23617            <td class="entry_type">
23618                <span class="entry_type_name">float</span>
23619                <span class="entry_type_container">x</span>
23620
23621                <span class="entry_type_array">
23622                  4 x n x m
23623                </span>
23624              <span class="entry_type_visibility"> [ndk_public]</span>
23625
23626
23627              <span class="entry_type_hwlevel">[full] </span>
23628
23629
23630                <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
23631
23632
23633            </td> <!-- entry_type -->
23634
23635            <td class="entry_description">
23636              <p>The shading map is a low-resolution floating-point map
23637that lists the coefficients used to correct for vignetting and color shading,<wbr/>
23638for each Bayer color channel of RAW image data.<wbr/></p>
23639            </td>
23640
23641            <td class="entry_units">
23642            </td>
23643
23644            <td class="entry_range">
23645              <p>Each gain factor is &gt;= 1</p>
23646            </td>
23647
23648            <td class="entry_tags">
23649            </td>
23650
23651          </tr>
23652          <tr class="entries_header">
23653            <th class="th_details" colspan="5">Details</th>
23654          </tr>
23655          <tr class="entry_cont">
23656            <td class="entry_details" colspan="5">
23657              <p>The map provided here is the same map that is used by the camera device to
23658correct both color shading and vignetting for output non-RAW images.<wbr/></p>
23659<p>When there is no lens shading correction applied to RAW
23660output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
23661false),<wbr/> this map is the complete lens shading correction
23662map; when there is some lens shading correction applied to
23663the RAW output image (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a><code>==</code> true),<wbr/> this map reports the remaining lens shading
23664correction map that needs to be applied to get shading
23665corrected images that match the camera device's output for
23666non-RAW formats.<wbr/></p>
23667<p>For a complete shading correction map,<wbr/> the least shaded
23668section of the image will have a gain factor of 1; all
23669other sections will have gains above 1.<wbr/></p>
23670<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
23671will take into account the colorCorrection settings.<wbr/></p>
23672<p>The shading map is for the entire active pixel array,<wbr/> and is not
23673affected by the crop region specified in the request.<wbr/> Each shading map
23674entry is the value of the shading compensation map over a specific
23675pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
23676map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
23677(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
23678pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
23679The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
23680<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
23681channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
23682The shading map is stored in a fully interleaved format,<wbr/> and its size
23683is 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>
23684<p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
23685and will be smaller than 64x64.<wbr/></p>
23686<p>As an example,<wbr/> given a very small map defined as:</p>
23687<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
23688<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
23689[ 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/>
23690    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/>
23691  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/>
23692    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/>
23693  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/>
23694    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 ]
23695</code></pre>
23696<p>The low-resolution scaling map images for each channel are
23697(displayed using nearest-neighbor interpolation):</p>
23698<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
23699<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
23700<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
23701<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
23702<p>As a visualization only,<wbr/> inverting the full-color map to recover an
23703image of a gray wall (using bicubic interpolation for visual quality)
23704as captured by the sensor gives:</p>
23705<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
23706<p>Note that the RAW image data might be subject to lens shading
23707correction not reported on this map.<wbr/> Query
23708<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
23709to lens shading correction.<wbr/> If <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a>
23710is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
23711correction.<wbr/> In the case full lens shading correction is applied to RAW
23712images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
23713In other words,<wbr/> the map reported in this key is the remaining lens shading
23714that needs to be applied on the RAW image to get images without lens shading
23715artifacts.<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
23716formats.<wbr/></p>
23717            </td>
23718          </tr>
23719
23720          <tr class="entries_header">
23721            <th class="th_details" colspan="5">HAL Implementation Details</th>
23722          </tr>
23723          <tr class="entry_cont">
23724            <td class="entry_details" colspan="5">
23725              <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
23726When AE and AWB are in AUTO modes
23727(<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
23728may have all the information it need to generate most accurate lens shading map.<wbr/> When
23729AE or AWB are in manual mode
23730(<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
23731may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
23732generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
23733the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
23734            </td>
23735          </tr>
23736
23737          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23738           <!-- end of entry -->
23739        
23740                
23741          <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
23742            <td class="entry_name
23743                entry_name_deprecated
23744             " rowspan="3">
23745              android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
23746            </td>
23747            <td class="entry_type">
23748                <span class="entry_type_name">float</span>
23749                <span class="entry_type_container">x</span>
23750
23751                <span class="entry_type_array">
23752                  4
23753                </span>
23754              <span class="entry_type_visibility"> [hidden]</span>
23755
23756
23757
23758              <span class="entry_type_deprecated">[deprecated] </span>
23759
23760                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
23761
23762
23763            </td> <!-- entry_type -->
23764
23765            <td class="entry_description">
23766              <p>The best-fit color channel gains calculated
23767by the camera device's statistics units for the current output frame.<wbr/></p>
23768            </td>
23769
23770            <td class="entry_units">
23771            </td>
23772
23773            <td class="entry_range">
23774              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
23775            </td>
23776
23777            <td class="entry_tags">
23778            </td>
23779
23780          </tr>
23781          <tr class="entries_header">
23782            <th class="th_details" colspan="5">Details</th>
23783          </tr>
23784          <tr class="entry_cont">
23785            <td class="entry_details" colspan="5">
23786              <p>This may be different than the gains used for this frame,<wbr/>
23787since statistics processing on data from a new frame
23788typically completes after the transform has already been
23789applied to that frame.<wbr/></p>
23790<p>The 4 channel gains are defined in Bayer domain,<wbr/>
23791see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
23792<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
23793regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
23794            </td>
23795          </tr>
23796
23797
23798          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23799           <!-- end of entry -->
23800        
23801                
23802          <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
23803            <td class="entry_name
23804                entry_name_deprecated
23805             " rowspan="3">
23806              android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
23807            </td>
23808            <td class="entry_type">
23809                <span class="entry_type_name">rational</span>
23810                <span class="entry_type_container">x</span>
23811
23812                <span class="entry_type_array">
23813                  3 x 3
23814                </span>
23815              <span class="entry_type_visibility"> [hidden]</span>
23816
23817
23818
23819              <span class="entry_type_deprecated">[deprecated] </span>
23820
23821                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
23822
23823
23824            </td> <!-- entry_type -->
23825
23826            <td class="entry_description">
23827              <p>The best-fit color transform matrix estimate
23828calculated by the camera device's statistics units for the current
23829output frame.<wbr/></p>
23830            </td>
23831
23832            <td class="entry_units">
23833            </td>
23834
23835            <td class="entry_range">
23836              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
23837            </td>
23838
23839            <td class="entry_tags">
23840            </td>
23841
23842          </tr>
23843          <tr class="entries_header">
23844            <th class="th_details" colspan="5">Details</th>
23845          </tr>
23846          <tr class="entry_cont">
23847            <td class="entry_details" colspan="5">
23848              <p>The camera device will provide the estimate from its
23849statistics unit on the white balance transforms to use
23850for the next frame.<wbr/> These are the values the camera device believes
23851are the best fit for the current output frame.<wbr/> This may
23852be different than the transform used for this frame,<wbr/> since
23853statistics processing on data from a new frame typically
23854completes after the transform has already been applied to
23855that frame.<wbr/></p>
23856<p>These estimates must be provided for all frames,<wbr/> even if
23857capture settings and color transforms are set by the application.<wbr/></p>
23858<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
23859regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
23860            </td>
23861          </tr>
23862
23863
23864          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23865           <!-- end of entry -->
23866        
23867                
23868          <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
23869            <td class="entry_name
23870             " rowspan="3">
23871              android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
23872            </td>
23873            <td class="entry_type">
23874                <span class="entry_type_name entry_type_name_enum">byte</span>
23875
23876              <span class="entry_type_visibility"> [public]</span>
23877
23878
23879              <span class="entry_type_hwlevel">[full] </span>
23880
23881
23882
23883                <ul class="entry_type_enum">
23884                  <li>
23885                    <span class="entry_type_enum_name">NONE</span>
23886                    <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
23887in the current scene.<wbr/></p></span>
23888                  </li>
23889                  <li>
23890                    <span class="entry_type_enum_name">50HZ</span>
23891                    <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
23892in the current scene.<wbr/></p></span>
23893                  </li>
23894                  <li>
23895                    <span class="entry_type_enum_name">60HZ</span>
23896                    <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
23897in the current scene.<wbr/></p></span>
23898                  </li>
23899                </ul>
23900
23901            </td> <!-- entry_type -->
23902
23903            <td class="entry_description">
23904              <p>The camera device estimated scene illumination lighting
23905frequency.<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>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
23924that depends on the local utility power standards.<wbr/> This flicker must be
23925accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
23926The camera device uses this entry to tell the application what the scene
23927illuminant frequency is.<wbr/></p>
23928<p>When manual exposure control is enabled
23929(<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> ==
23930OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
23931antibanding,<wbr/> and the application can ensure it selects
23932exposure times that do not cause banding issues by looking
23933into this metadata field.<wbr/> See
23934<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
23935<p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
23936            </td>
23937          </tr>
23938
23939
23940          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23941           <!-- end of entry -->
23942        
23943                
23944          <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
23945            <td class="entry_name
23946             " rowspan="3">
23947              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
23948            </td>
23949            <td class="entry_type">
23950                <span class="entry_type_name entry_type_name_enum">byte</span>
23951
23952              <span class="entry_type_visibility"> [public as boolean]</span>
23953
23954
23955
23956
23957
23958                <ul class="entry_type_enum">
23959                  <li>
23960                    <span class="entry_type_enum_name">OFF</span>
23961                    <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
23962                  </li>
23963                  <li>
23964                    <span class="entry_type_enum_name">ON</span>
23965                    <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
23966                  </li>
23967                </ul>
23968
23969            </td> <!-- entry_type -->
23970
23971            <td class="entry_description">
23972              <p>Operating mode for hot pixel map generation.<wbr/></p>
23973            </td>
23974
23975            <td class="entry_units">
23976            </td>
23977
23978            <td class="entry_range">
23979              <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>
23980            </td>
23981
23982            <td class="entry_tags">
23983              <ul class="entry_tags">
23984                  <li><a href="#tag_V1">V1</a></li>
23985                  <li><a href="#tag_RAW">RAW</a></li>
23986              </ul>
23987            </td>
23988
23989          </tr>
23990          <tr class="entries_header">
23991            <th class="th_details" colspan="5">Details</th>
23992          </tr>
23993          <tr class="entry_cont">
23994            <td class="entry_details" colspan="5">
23995              <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/>
23996If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
23997            </td>
23998          </tr>
23999
24000
24001          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24002           <!-- end of entry -->
24003        
24004                
24005          <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
24006            <td class="entry_name
24007             " rowspan="5">
24008              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
24009            </td>
24010            <td class="entry_type">
24011                <span class="entry_type_name">int32</span>
24012                <span class="entry_type_container">x</span>
24013
24014                <span class="entry_type_array">
24015                  2 x n
24016                </span>
24017              <span class="entry_type_visibility"> [public as point]</span>
24018
24019
24020
24021
24022                <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
24023
24024
24025            </td> <!-- entry_type -->
24026
24027            <td class="entry_description">
24028              <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
24029            </td>
24030
24031            <td class="entry_units">
24032            </td>
24033
24034            <td class="entry_range">
24035              <p>n &lt;= number of pixels on the sensor.<wbr/>
24036The <code>(x,<wbr/> y)</code> coordinates must be bounded by
24037<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
24038            </td>
24039
24040            <td class="entry_tags">
24041              <ul class="entry_tags">
24042                  <li><a href="#tag_V1">V1</a></li>
24043                  <li><a href="#tag_RAW">RAW</a></li>
24044              </ul>
24045            </td>
24046
24047          </tr>
24048          <tr class="entries_header">
24049            <th class="th_details" colspan="5">Details</th>
24050          </tr>
24051          <tr class="entry_cont">
24052            <td class="entry_details" colspan="5">
24053              <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
24054<code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
24055bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
24056height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/>
24057This may include hot pixels that lie outside of the active array
24058bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
24059            </td>
24060          </tr>
24061
24062          <tr class="entries_header">
24063            <th class="th_details" colspan="5">HAL Implementation Details</th>
24064          </tr>
24065          <tr class="entry_cont">
24066            <td class="entry_details" colspan="5">
24067              <p>A hotpixel map contains the coordinates of pixels on the camera
24068sensor that do report valid values (usually due to defects in
24069the camera sensor).<wbr/> This includes pixels that are stuck at certain
24070values,<wbr/> or have a response that does not accuractly encode the
24071incoming light from the scene.<wbr/></p>
24072<p>To avoid performance issues,<wbr/> there should be significantly fewer hot
24073pixels than actual pixels on the camera sensor.<wbr/></p>
24074            </td>
24075          </tr>
24076
24077          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24078           <!-- end of entry -->
24079        
24080                
24081          <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
24082            <td class="entry_name
24083             " rowspan="3">
24084              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
24085            </td>
24086            <td class="entry_type">
24087                <span class="entry_type_name entry_type_name_enum">byte</span>
24088
24089              <span class="entry_type_visibility"> [public]</span>
24090
24091
24092              <span class="entry_type_hwlevel">[full] </span>
24093
24094
24095
24096                <ul class="entry_type_enum">
24097                  <li>
24098                    <span class="entry_type_enum_name">OFF</span>
24099                    <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
24100                  </li>
24101                  <li>
24102                    <span class="entry_type_enum_name">ON</span>
24103                    <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
24104                  </li>
24105                </ul>
24106
24107            </td> <!-- entry_type -->
24108
24109            <td class="entry_description">
24110              <p>Whether the camera device will output the lens
24111shading map in output result metadata.<wbr/></p>
24112            </td>
24113
24114            <td class="entry_units">
24115            </td>
24116
24117            <td class="entry_range">
24118              <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>
24119            </td>
24120
24121            <td class="entry_tags">
24122              <ul class="entry_tags">
24123                  <li><a href="#tag_RAW">RAW</a></li>
24124              </ul>
24125            </td>
24126
24127          </tr>
24128          <tr class="entries_header">
24129            <th class="th_details" colspan="5">Details</th>
24130          </tr>
24131          <tr class="entry_cont">
24132            <td class="entry_details" colspan="5">
24133              <p>When set to ON,<wbr/>
24134<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
24135the output result metadata.<wbr/></p>
24136<p>ON is always supported on devices with the RAW capability.<wbr/></p>
24137            </td>
24138          </tr>
24139
24140
24141          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24142           <!-- end of entry -->
24143        
24144        
24145
24146      <!-- end of kind -->
24147      </tbody>
24148
24149  <!-- end of section -->
24150  <tr><td colspan="6" id="section_tonemap" class="section">tonemap</td></tr>
24151
24152
24153      <tr><td colspan="6" class="kind">controls</td></tr>
24154
24155      <thead class="entries_header">
24156        <tr>
24157          <th class="th_name">Property Name</th>
24158          <th class="th_type">Type</th>
24159          <th class="th_description">Description</th>
24160          <th class="th_units">Units</th>
24161          <th class="th_range">Range</th>
24162          <th class="th_tags">Tags</th>
24163        </tr>
24164      </thead>
24165
24166      <tbody>
24167
24168        
24169
24170        
24171
24172        
24173
24174        
24175
24176                
24177          <tr class="entry" id="controls_android.tonemap.curveBlue">
24178            <td class="entry_name
24179             " rowspan="3">
24180              android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
24181            </td>
24182            <td class="entry_type">
24183                <span class="entry_type_name">float</span>
24184                <span class="entry_type_container">x</span>
24185
24186                <span class="entry_type_array">
24187                  n x 2
24188                </span>
24189              <span class="entry_type_visibility"> [ndk_public]</span>
24190
24191
24192              <span class="entry_type_hwlevel">[full] </span>
24193
24194
24195                <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>
24196
24197
24198            </td> <!-- entry_type -->
24199
24200            <td class="entry_description">
24201              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
24202channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24203CONTRAST_<wbr/>CURVE.<wbr/></p>
24204            </td>
24205
24206            <td class="entry_units">
24207            </td>
24208
24209            <td class="entry_range">
24210            </td>
24211
24212            <td class="entry_tags">
24213            </td>
24214
24215          </tr>
24216          <tr class="entries_header">
24217            <th class="th_details" colspan="5">Details</th>
24218          </tr>
24219          <tr class="entry_cont">
24220            <td class="entry_details" colspan="5">
24221              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
24222            </td>
24223          </tr>
24224
24225
24226          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24227           <!-- end of entry -->
24228        
24229                
24230          <tr class="entry" id="controls_android.tonemap.curveGreen">
24231            <td class="entry_name
24232             " rowspan="3">
24233              android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
24234            </td>
24235            <td class="entry_type">
24236                <span class="entry_type_name">float</span>
24237                <span class="entry_type_container">x</span>
24238
24239                <span class="entry_type_array">
24240                  n x 2
24241                </span>
24242              <span class="entry_type_visibility"> [ndk_public]</span>
24243
24244
24245              <span class="entry_type_hwlevel">[full] </span>
24246
24247
24248                <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>
24249
24250
24251            </td> <!-- entry_type -->
24252
24253            <td class="entry_description">
24254              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
24255channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24256CONTRAST_<wbr/>CURVE.<wbr/></p>
24257            </td>
24258
24259            <td class="entry_units">
24260            </td>
24261
24262            <td class="entry_range">
24263            </td>
24264
24265            <td class="entry_tags">
24266            </td>
24267
24268          </tr>
24269          <tr class="entries_header">
24270            <th class="th_details" colspan="5">Details</th>
24271          </tr>
24272          <tr class="entry_cont">
24273            <td class="entry_details" colspan="5">
24274              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
24275            </td>
24276          </tr>
24277
24278
24279          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24280           <!-- end of entry -->
24281        
24282                
24283          <tr class="entry" id="controls_android.tonemap.curveRed">
24284            <td class="entry_name
24285             " rowspan="5">
24286              android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
24287            </td>
24288            <td class="entry_type">
24289                <span class="entry_type_name">float</span>
24290                <span class="entry_type_container">x</span>
24291
24292                <span class="entry_type_array">
24293                  n x 2
24294                </span>
24295              <span class="entry_type_visibility"> [ndk_public]</span>
24296
24297
24298              <span class="entry_type_hwlevel">[full] </span>
24299
24300
24301                <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>
24302
24303
24304            </td> <!-- entry_type -->
24305
24306            <td class="entry_description">
24307              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
24308channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24309CONTRAST_<wbr/>CURVE.<wbr/></p>
24310            </td>
24311
24312            <td class="entry_units">
24313            </td>
24314
24315            <td class="entry_range">
24316              <p>0-1 on both input and output coordinates,<wbr/> normalized
24317as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
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>Each channel's curve is defined by an array of control points:</p>
24330<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
24331  [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
243322 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
24333<p>These are sorted in order of increasing <code>Pin</code>; it is
24334required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
24335define a complete mapping.<wbr/> For input values between control points,<wbr/>
24336the camera device must linearly interpolate between the control
24337points.<wbr/></p>
24338<p>Each curve can have an independent number of points,<wbr/> and the number
24339of points can be less than max (that is,<wbr/> the request doesn't have to
24340always provide a curve with number of points equivalent to
24341<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
24342<p>A few examples,<wbr/> and their corresponding graphical mappings; these
24343only specify the red channel and the precision is limited to 4
24344digits,<wbr/> for conciseness.<wbr/></p>
24345<p>Linear mapping:</p>
24346<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 ]
24347</code></pre>
24348<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
24349<p>Invert mapping:</p>
24350<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 ]
24351</code></pre>
24352<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
24353<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
24354<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
24355  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/>
24356  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/>
24357  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/>
24358  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 ]
24359</code></pre>
24360<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
24361<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
24362<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
24363  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/>
24364  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/>
24365  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/>
24366  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 ]
24367</code></pre>
24368<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24369            </td>
24370          </tr>
24371
24372          <tr class="entries_header">
24373            <th class="th_details" colspan="5">HAL Implementation Details</th>
24374          </tr>
24375          <tr class="entry_cont">
24376            <td class="entry_details" colspan="5">
24377              <p>For good quality of mapping,<wbr/> at least 128 control points are
24378preferred.<wbr/></p>
24379<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
24380control points used as are available.<wbr/></p>
24381            </td>
24382          </tr>
24383
24384          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24385           <!-- end of entry -->
24386        
24387                
24388          <tr class="entry" id="controls_android.tonemap.curve">
24389            <td class="entry_name
24390             " rowspan="5">
24391              android.<wbr/>tonemap.<wbr/>curve
24392            </td>
24393            <td class="entry_type">
24394                <span class="entry_type_name">float</span>
24395
24396              <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
24397
24398              <span class="entry_type_synthetic">[synthetic] </span>
24399
24400              <span class="entry_type_hwlevel">[full] </span>
24401
24402
24403
24404
24405            </td> <!-- entry_type -->
24406
24407            <td class="entry_description">
24408              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
24409is CONTRAST_<wbr/>CURVE.<wbr/></p>
24410            </td>
24411
24412            <td class="entry_units">
24413            </td>
24414
24415            <td class="entry_range">
24416            </td>
24417
24418            <td class="entry_tags">
24419            </td>
24420
24421          </tr>
24422          <tr class="entries_header">
24423            <th class="th_details" colspan="5">Details</th>
24424          </tr>
24425          <tr class="entry_cont">
24426            <td class="entry_details" colspan="5">
24427              <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
24428channels respectively.<wbr/> The following example uses the red channel as an
24429example.<wbr/> The same logic applies to green and blue channel.<wbr/>
24430Each channel's curve is defined by an array of control points:</p>
24431<pre><code>curveRed =
24432  [ 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) ]
244332 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
24434<p>These are sorted in order of increasing <code>Pin</code>; it is always
24435guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
24436define a complete mapping.<wbr/> For input values between control points,<wbr/>
24437the camera device must linearly interpolate between the control
24438points.<wbr/></p>
24439<p>Each curve can have an independent number of points,<wbr/> and the number
24440of points can be less than max (that is,<wbr/> the request doesn't have to
24441always provide a curve with number of points equivalent to
24442<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
24443<p>A few examples,<wbr/> and their corresponding graphical mappings; these
24444only specify the red channel and the precision is limited to 4
24445digits,<wbr/> for conciseness.<wbr/></p>
24446<p>Linear mapping:</p>
24447<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
24448</code></pre>
24449<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
24450<p>Invert mapping:</p>
24451<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
24452</code></pre>
24453<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
24454<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
24455<pre><code>curveRed = [
24456  (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/>
24457  (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/>
24458  (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/>
24459  (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) ]
24460</code></pre>
24461<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
24462<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
24463<pre><code>curveRed = [
24464  (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/>
24465  (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/>
24466  (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/>
24467  (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) ]
24468</code></pre>
24469<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24470            </td>
24471          </tr>
24472
24473          <tr class="entries_header">
24474            <th class="th_details" colspan="5">HAL Implementation Details</th>
24475          </tr>
24476          <tr class="entry_cont">
24477            <td class="entry_details" colspan="5">
24478              <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
24479curveBlue entries.<wbr/></p>
24480            </td>
24481          </tr>
24482
24483          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24484           <!-- end of entry -->
24485        
24486                
24487          <tr class="entry" id="controls_android.tonemap.mode">
24488            <td class="entry_name
24489             " rowspan="3">
24490              android.<wbr/>tonemap.<wbr/>mode
24491            </td>
24492            <td class="entry_type">
24493                <span class="entry_type_name entry_type_name_enum">byte</span>
24494
24495              <span class="entry_type_visibility"> [public]</span>
24496
24497
24498              <span class="entry_type_hwlevel">[full] </span>
24499
24500
24501
24502                <ul class="entry_type_enum">
24503                  <li>
24504                    <span class="entry_type_enum_name">CONTRAST_CURVE</span>
24505                    <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
24506the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
24507<p>All color enhancement and tonemapping must be disabled,<wbr/> except
24508for applying the tonemapping curve specified by
24509<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
24510<p>Must not slow down frame rate relative to raw
24511sensor output.<wbr/></p></span>
24512                  </li>
24513                  <li>
24514                    <span class="entry_type_enum_name">FAST</span>
24515                    <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
24516reducing frame rate compared to raw sensor output.<wbr/></p></span>
24517                  </li>
24518                  <li>
24519                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
24520                    <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
24521the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
24522                  </li>
24523                  <li>
24524                    <span class="entry_type_enum_name">GAMMA_VALUE</span>
24525                    <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
24526tonemapping.<wbr/></p>
24527<p>All color enhancement and tonemapping must be disabled,<wbr/> except
24528for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
24529<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
24530                  </li>
24531                  <li>
24532                    <span class="entry_type_enum_name">PRESET_CURVE</span>
24533                    <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
24534<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
24535<p>All color enhancement and tonemapping must be disabled,<wbr/> except
24536for applying the tonemapping curve specified by
24537<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
24538<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
24539                  </li>
24540                </ul>
24541
24542            </td> <!-- entry_type -->
24543
24544            <td class="entry_description">
24545              <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
24546            </td>
24547
24548            <td class="entry_units">
24549            </td>
24550
24551            <td class="entry_range">
24552              <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
24553            </td>
24554
24555            <td class="entry_tags">
24556            </td>
24557
24558          </tr>
24559          <tr class="entries_header">
24560            <th class="th_details" colspan="5">Details</th>
24561          </tr>
24562          <tr class="entry_cont">
24563            <td class="entry_details" colspan="5">
24564              <p>When switching to an application-defined contrast curve by setting
24565<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
24566per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
24567mapping from input high-bit-depth pixel value to the output
24568low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
24569and output may change depending on the camera pipeline,<wbr/> the values
24570are specified by normalized floating-point numbers.<wbr/></p>
24571<p>More-complex color mapping operations such as 3D color look-up
24572tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
24573transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24574CONTRAST_<wbr/>CURVE.<wbr/></p>
24575<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
24576emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
24577These values are always available,<wbr/> and as close as possible to the
24578actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
24579<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
24580provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
24581roughly the same.<wbr/></p>
24582            </td>
24583          </tr>
24584
24585
24586          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24587           <!-- end of entry -->
24588        
24589                
24590          <tr class="entry" id="controls_android.tonemap.gamma">
24591            <td class="entry_name
24592             " rowspan="3">
24593              android.<wbr/>tonemap.<wbr/>gamma
24594            </td>
24595            <td class="entry_type">
24596                <span class="entry_type_name">float</span>
24597
24598              <span class="entry_type_visibility"> [public]</span>
24599
24600
24601
24602
24603
24604
24605            </td> <!-- entry_type -->
24606
24607            <td class="entry_description">
24608              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24609GAMMA_<wbr/>VALUE</p>
24610            </td>
24611
24612            <td class="entry_units">
24613            </td>
24614
24615            <td class="entry_range">
24616            </td>
24617
24618            <td class="entry_tags">
24619            </td>
24620
24621          </tr>
24622          <tr class="entries_header">
24623            <th class="th_details" colspan="5">Details</th>
24624          </tr>
24625          <tr class="entry_cont">
24626            <td class="entry_details" colspan="5">
24627              <p>The tonemap curve will be defined the following formula:
24628* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
24629where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
24630pow is the power function and gamma is the gamma value specified by this
24631key.<wbr/></p>
24632<p>The same curve will be applied to all color channels.<wbr/> The camera device
24633may clip the input gamma value to its supported range.<wbr/> The actual applied
24634value will be returned in capture result.<wbr/></p>
24635<p>The valid range of gamma value varies on different devices,<wbr/> but values
24636within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
24637            </td>
24638          </tr>
24639
24640
24641          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24642           <!-- end of entry -->
24643        
24644                
24645          <tr class="entry" id="controls_android.tonemap.presetCurve">
24646            <td class="entry_name
24647             " rowspan="3">
24648              android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
24649            </td>
24650            <td class="entry_type">
24651                <span class="entry_type_name entry_type_name_enum">byte</span>
24652
24653              <span class="entry_type_visibility"> [public]</span>
24654
24655
24656
24657
24658
24659                <ul class="entry_type_enum">
24660                  <li>
24661                    <span class="entry_type_enum_name">SRGB</span>
24662                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
24663                  </li>
24664                  <li>
24665                    <span class="entry_type_enum_name">REC709</span>
24666                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
24667                  </li>
24668                </ul>
24669
24670            </td> <!-- entry_type -->
24671
24672            <td class="entry_description">
24673              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24674PRESET_<wbr/>CURVE</p>
24675            </td>
24676
24677            <td class="entry_units">
24678            </td>
24679
24680            <td class="entry_range">
24681            </td>
24682
24683            <td class="entry_tags">
24684            </td>
24685
24686          </tr>
24687          <tr class="entries_header">
24688            <th class="th_details" colspan="5">Details</th>
24689          </tr>
24690          <tr class="entry_cont">
24691            <td class="entry_details" colspan="5">
24692              <p>The tonemap curve will be defined by specified standard.<wbr/></p>
24693<p>sRGB (approximated by 16 control points):</p>
24694<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24695<p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
24696<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
24697<p>Note that above figures show a 16 control points approximation of preset
24698curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
24699            </td>
24700          </tr>
24701
24702
24703          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24704           <!-- end of entry -->
24705        
24706        
24707
24708      <!-- end of kind -->
24709      </tbody>
24710      <tr><td colspan="6" class="kind">static</td></tr>
24711
24712      <thead class="entries_header">
24713        <tr>
24714          <th class="th_name">Property Name</th>
24715          <th class="th_type">Type</th>
24716          <th class="th_description">Description</th>
24717          <th class="th_units">Units</th>
24718          <th class="th_range">Range</th>
24719          <th class="th_tags">Tags</th>
24720        </tr>
24721      </thead>
24722
24723      <tbody>
24724
24725        
24726
24727        
24728
24729        
24730
24731        
24732
24733                
24734          <tr class="entry" id="static_android.tonemap.maxCurvePoints">
24735            <td class="entry_name
24736             " rowspan="5">
24737              android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
24738            </td>
24739            <td class="entry_type">
24740                <span class="entry_type_name">int32</span>
24741
24742              <span class="entry_type_visibility"> [public]</span>
24743
24744
24745              <span class="entry_type_hwlevel">[full] </span>
24746
24747
24748
24749
24750            </td> <!-- entry_type -->
24751
24752            <td class="entry_description">
24753              <p>Maximum number of supported points in the
24754tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
24755            </td>
24756
24757            <td class="entry_units">
24758            </td>
24759
24760            <td class="entry_range">
24761            </td>
24762
24763            <td class="entry_tags">
24764            </td>
24765
24766          </tr>
24767          <tr class="entries_header">
24768            <th class="th_details" colspan="5">Details</th>
24769          </tr>
24770          <tr class="entry_cont">
24771            <td class="entry_details" colspan="5">
24772              <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
24773less than this maximum,<wbr/> the camera device will resample the curve to its internal
24774representation,<wbr/> using linear interpolation.<wbr/></p>
24775<p>The output curves in the result metadata may have a different number
24776of points than the input curves,<wbr/> and will represent the actual
24777hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
24778            </td>
24779          </tr>
24780
24781          <tr class="entries_header">
24782            <th class="th_details" colspan="5">HAL Implementation Details</th>
24783          </tr>
24784          <tr class="entry_cont">
24785            <td class="entry_details" colspan="5">
24786              <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
24787            </td>
24788          </tr>
24789
24790          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24791           <!-- end of entry -->
24792        
24793                
24794          <tr class="entry" id="static_android.tonemap.availableToneMapModes">
24795            <td class="entry_name
24796             " rowspan="5">
24797              android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
24798            </td>
24799            <td class="entry_type">
24800                <span class="entry_type_name">byte</span>
24801                <span class="entry_type_container">x</span>
24802
24803                <span class="entry_type_array">
24804                  n
24805                </span>
24806              <span class="entry_type_visibility"> [public as enumList]</span>
24807
24808
24809              <span class="entry_type_hwlevel">[full] </span>
24810
24811
24812                <div class="entry_type_notes">list of enums</div>
24813
24814
24815            </td> <!-- entry_type -->
24816
24817            <td class="entry_description">
24818              <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
24819device.<wbr/></p>
24820            </td>
24821
24822            <td class="entry_units">
24823            </td>
24824
24825            <td class="entry_range">
24826              <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
24827            </td>
24828
24829            <td class="entry_tags">
24830            </td>
24831
24832          </tr>
24833          <tr class="entries_header">
24834            <th class="th_details" colspan="5">Details</th>
24835          </tr>
24836          <tr class="entry_cont">
24837            <td class="entry_details" colspan="5">
24838              <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
24839at least one of below mode combinations:</p>
24840<ul>
24841<li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
24842<li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
24843</ul>
24844<p>This includes all FULL level devices.<wbr/></p>
24845            </td>
24846          </tr>
24847
24848          <tr class="entries_header">
24849            <th class="th_details" colspan="5">HAL Implementation Details</th>
24850          </tr>
24851          <tr class="entry_cont">
24852            <td class="entry_details" colspan="5">
24853              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
24854on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
24855That is,<wbr/> if the highest quality implementation on the camera device does not slow down
24856capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
24857            </td>
24858          </tr>
24859
24860          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24861           <!-- end of entry -->
24862        
24863        
24864
24865      <!-- end of kind -->
24866      </tbody>
24867      <tr><td colspan="6" class="kind">dynamic</td></tr>
24868
24869      <thead class="entries_header">
24870        <tr>
24871          <th class="th_name">Property Name</th>
24872          <th class="th_type">Type</th>
24873          <th class="th_description">Description</th>
24874          <th class="th_units">Units</th>
24875          <th class="th_range">Range</th>
24876          <th class="th_tags">Tags</th>
24877        </tr>
24878      </thead>
24879
24880      <tbody>
24881
24882        
24883
24884        
24885
24886        
24887
24888        
24889
24890                
24891          <tr class="entry" id="dynamic_android.tonemap.curveBlue">
24892            <td class="entry_name
24893             " rowspan="3">
24894              android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
24895            </td>
24896            <td class="entry_type">
24897                <span class="entry_type_name">float</span>
24898                <span class="entry_type_container">x</span>
24899
24900                <span class="entry_type_array">
24901                  n x 2
24902                </span>
24903              <span class="entry_type_visibility"> [ndk_public]</span>
24904
24905
24906              <span class="entry_type_hwlevel">[full] </span>
24907
24908
24909                <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>
24910
24911
24912            </td> <!-- entry_type -->
24913
24914            <td class="entry_description">
24915              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
24916channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24917CONTRAST_<wbr/>CURVE.<wbr/></p>
24918            </td>
24919
24920            <td class="entry_units">
24921            </td>
24922
24923            <td class="entry_range">
24924            </td>
24925
24926            <td class="entry_tags">
24927            </td>
24928
24929          </tr>
24930          <tr class="entries_header">
24931            <th class="th_details" colspan="5">Details</th>
24932          </tr>
24933          <tr class="entry_cont">
24934            <td class="entry_details" colspan="5">
24935              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
24936            </td>
24937          </tr>
24938
24939
24940          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24941           <!-- end of entry -->
24942        
24943                
24944          <tr class="entry" id="dynamic_android.tonemap.curveGreen">
24945            <td class="entry_name
24946             " rowspan="3">
24947              android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
24948            </td>
24949            <td class="entry_type">
24950                <span class="entry_type_name">float</span>
24951                <span class="entry_type_container">x</span>
24952
24953                <span class="entry_type_array">
24954                  n x 2
24955                </span>
24956              <span class="entry_type_visibility"> [ndk_public]</span>
24957
24958
24959              <span class="entry_type_hwlevel">[full] </span>
24960
24961
24962                <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>
24963
24964
24965            </td> <!-- entry_type -->
24966
24967            <td class="entry_description">
24968              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
24969channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24970CONTRAST_<wbr/>CURVE.<wbr/></p>
24971            </td>
24972
24973            <td class="entry_units">
24974            </td>
24975
24976            <td class="entry_range">
24977            </td>
24978
24979            <td class="entry_tags">
24980            </td>
24981
24982          </tr>
24983          <tr class="entries_header">
24984            <th class="th_details" colspan="5">Details</th>
24985          </tr>
24986          <tr class="entry_cont">
24987            <td class="entry_details" colspan="5">
24988              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
24989            </td>
24990          </tr>
24991
24992
24993          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24994           <!-- end of entry -->
24995        
24996                
24997          <tr class="entry" id="dynamic_android.tonemap.curveRed">
24998            <td class="entry_name
24999             " rowspan="5">
25000              android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
25001            </td>
25002            <td class="entry_type">
25003                <span class="entry_type_name">float</span>
25004                <span class="entry_type_container">x</span>
25005
25006                <span class="entry_type_array">
25007                  n x 2
25008                </span>
25009              <span class="entry_type_visibility"> [ndk_public]</span>
25010
25011
25012              <span class="entry_type_hwlevel">[full] </span>
25013
25014
25015                <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>
25016
25017
25018            </td> <!-- entry_type -->
25019
25020            <td class="entry_description">
25021              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
25022channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25023CONTRAST_<wbr/>CURVE.<wbr/></p>
25024            </td>
25025
25026            <td class="entry_units">
25027            </td>
25028
25029            <td class="entry_range">
25030              <p>0-1 on both input and output coordinates,<wbr/> normalized
25031as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
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>Each channel's curve is defined by an array of control points:</p>
25044<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
25045  [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
250462 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
25047<p>These are sorted in order of increasing <code>Pin</code>; it is
25048required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
25049define a complete mapping.<wbr/> For input values between control points,<wbr/>
25050the camera device must linearly interpolate between the control
25051points.<wbr/></p>
25052<p>Each curve can have an independent number of points,<wbr/> and the number
25053of points can be less than max (that is,<wbr/> the request doesn't have to
25054always provide a curve with number of points equivalent to
25055<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
25056<p>A few examples,<wbr/> and their corresponding graphical mappings; these
25057only specify the red channel and the precision is limited to 4
25058digits,<wbr/> for conciseness.<wbr/></p>
25059<p>Linear mapping:</p>
25060<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 ]
25061</code></pre>
25062<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
25063<p>Invert mapping:</p>
25064<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 ]
25065</code></pre>
25066<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
25067<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
25068<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
25069  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/>
25070  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/>
25071  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/>
25072  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 ]
25073</code></pre>
25074<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
25075<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
25076<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
25077  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/>
25078  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/>
25079  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/>
25080  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 ]
25081</code></pre>
25082<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
25083            </td>
25084          </tr>
25085
25086          <tr class="entries_header">
25087            <th class="th_details" colspan="5">HAL Implementation Details</th>
25088          </tr>
25089          <tr class="entry_cont">
25090            <td class="entry_details" colspan="5">
25091              <p>For good quality of mapping,<wbr/> at least 128 control points are
25092preferred.<wbr/></p>
25093<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
25094control points used as are available.<wbr/></p>
25095            </td>
25096          </tr>
25097
25098          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25099           <!-- end of entry -->
25100        
25101                
25102          <tr class="entry" id="dynamic_android.tonemap.curve">
25103            <td class="entry_name
25104             " rowspan="5">
25105              android.<wbr/>tonemap.<wbr/>curve
25106            </td>
25107            <td class="entry_type">
25108                <span class="entry_type_name">float</span>
25109
25110              <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
25111
25112              <span class="entry_type_synthetic">[synthetic] </span>
25113
25114              <span class="entry_type_hwlevel">[full] </span>
25115
25116
25117
25118
25119            </td> <!-- entry_type -->
25120
25121            <td class="entry_description">
25122              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
25123is CONTRAST_<wbr/>CURVE.<wbr/></p>
25124            </td>
25125
25126            <td class="entry_units">
25127            </td>
25128
25129            <td class="entry_range">
25130            </td>
25131
25132            <td class="entry_tags">
25133            </td>
25134
25135          </tr>
25136          <tr class="entries_header">
25137            <th class="th_details" colspan="5">Details</th>
25138          </tr>
25139          <tr class="entry_cont">
25140            <td class="entry_details" colspan="5">
25141              <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
25142channels respectively.<wbr/> The following example uses the red channel as an
25143example.<wbr/> The same logic applies to green and blue channel.<wbr/>
25144Each channel's curve is defined by an array of control points:</p>
25145<pre><code>curveRed =
25146  [ 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) ]
251472 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
25148<p>These are sorted in order of increasing <code>Pin</code>; it is always
25149guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
25150define a complete mapping.<wbr/> For input values between control points,<wbr/>
25151the camera device must linearly interpolate between the control
25152points.<wbr/></p>
25153<p>Each curve can have an independent number of points,<wbr/> and the number
25154of points can be less than max (that is,<wbr/> the request doesn't have to
25155always provide a curve with number of points equivalent to
25156<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
25157<p>A few examples,<wbr/> and their corresponding graphical mappings; these
25158only specify the red channel and the precision is limited to 4
25159digits,<wbr/> for conciseness.<wbr/></p>
25160<p>Linear mapping:</p>
25161<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
25162</code></pre>
25163<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
25164<p>Invert mapping:</p>
25165<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
25166</code></pre>
25167<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
25168<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
25169<pre><code>curveRed = [
25170  (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/>
25171  (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/>
25172  (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/>
25173  (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) ]
25174</code></pre>
25175<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
25176<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
25177<pre><code>curveRed = [
25178  (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/>
25179  (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/>
25180  (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/>
25181  (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) ]
25182</code></pre>
25183<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
25184            </td>
25185          </tr>
25186
25187          <tr class="entries_header">
25188            <th class="th_details" colspan="5">HAL Implementation Details</th>
25189          </tr>
25190          <tr class="entry_cont">
25191            <td class="entry_details" colspan="5">
25192              <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
25193curveBlue entries.<wbr/></p>
25194            </td>
25195          </tr>
25196
25197          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25198           <!-- end of entry -->
25199        
25200                
25201          <tr class="entry" id="dynamic_android.tonemap.mode">
25202            <td class="entry_name
25203             " rowspan="3">
25204              android.<wbr/>tonemap.<wbr/>mode
25205            </td>
25206            <td class="entry_type">
25207                <span class="entry_type_name entry_type_name_enum">byte</span>
25208
25209              <span class="entry_type_visibility"> [public]</span>
25210
25211
25212              <span class="entry_type_hwlevel">[full] </span>
25213
25214
25215
25216                <ul class="entry_type_enum">
25217                  <li>
25218                    <span class="entry_type_enum_name">CONTRAST_CURVE</span>
25219                    <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
25220the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
25221<p>All color enhancement and tonemapping must be disabled,<wbr/> except
25222for applying the tonemapping curve specified by
25223<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
25224<p>Must not slow down frame rate relative to raw
25225sensor output.<wbr/></p></span>
25226                  </li>
25227                  <li>
25228                    <span class="entry_type_enum_name">FAST</span>
25229                    <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
25230reducing frame rate compared to raw sensor output.<wbr/></p></span>
25231                  </li>
25232                  <li>
25233                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
25234                    <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
25235the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
25236                  </li>
25237                  <li>
25238                    <span class="entry_type_enum_name">GAMMA_VALUE</span>
25239                    <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
25240tonemapping.<wbr/></p>
25241<p>All color enhancement and tonemapping must be disabled,<wbr/> except
25242for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
25243<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
25244                  </li>
25245                  <li>
25246                    <span class="entry_type_enum_name">PRESET_CURVE</span>
25247                    <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
25248<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
25249<p>All color enhancement and tonemapping must be disabled,<wbr/> except
25250for applying the tonemapping curve specified by
25251<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
25252<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
25253                  </li>
25254                </ul>
25255
25256            </td> <!-- entry_type -->
25257
25258            <td class="entry_description">
25259              <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
25260            </td>
25261
25262            <td class="entry_units">
25263            </td>
25264
25265            <td class="entry_range">
25266              <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
25267            </td>
25268
25269            <td class="entry_tags">
25270            </td>
25271
25272          </tr>
25273          <tr class="entries_header">
25274            <th class="th_details" colspan="5">Details</th>
25275          </tr>
25276          <tr class="entry_cont">
25277            <td class="entry_details" colspan="5">
25278              <p>When switching to an application-defined contrast curve by setting
25279<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
25280per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
25281mapping from input high-bit-depth pixel value to the output
25282low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
25283and output may change depending on the camera pipeline,<wbr/> the values
25284are specified by normalized floating-point numbers.<wbr/></p>
25285<p>More-complex color mapping operations such as 3D color look-up
25286tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
25287transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25288CONTRAST_<wbr/>CURVE.<wbr/></p>
25289<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
25290emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
25291These values are always available,<wbr/> and as close as possible to the
25292actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
25293<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
25294provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
25295roughly the same.<wbr/></p>
25296            </td>
25297          </tr>
25298
25299
25300          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25301           <!-- end of entry -->
25302        
25303                
25304          <tr class="entry" id="dynamic_android.tonemap.gamma">
25305            <td class="entry_name
25306             " rowspan="3">
25307              android.<wbr/>tonemap.<wbr/>gamma
25308            </td>
25309            <td class="entry_type">
25310                <span class="entry_type_name">float</span>
25311
25312              <span class="entry_type_visibility"> [public]</span>
25313
25314
25315
25316
25317
25318
25319            </td> <!-- entry_type -->
25320
25321            <td class="entry_description">
25322              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25323GAMMA_<wbr/>VALUE</p>
25324            </td>
25325
25326            <td class="entry_units">
25327            </td>
25328
25329            <td class="entry_range">
25330            </td>
25331
25332            <td class="entry_tags">
25333            </td>
25334
25335          </tr>
25336          <tr class="entries_header">
25337            <th class="th_details" colspan="5">Details</th>
25338          </tr>
25339          <tr class="entry_cont">
25340            <td class="entry_details" colspan="5">
25341              <p>The tonemap curve will be defined the following formula:
25342* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
25343where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
25344pow is the power function and gamma is the gamma value specified by this
25345key.<wbr/></p>
25346<p>The same curve will be applied to all color channels.<wbr/> The camera device
25347may clip the input gamma value to its supported range.<wbr/> The actual applied
25348value will be returned in capture result.<wbr/></p>
25349<p>The valid range of gamma value varies on different devices,<wbr/> but values
25350within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
25351            </td>
25352          </tr>
25353
25354
25355          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25356           <!-- end of entry -->
25357        
25358                
25359          <tr class="entry" id="dynamic_android.tonemap.presetCurve">
25360            <td class="entry_name
25361             " rowspan="3">
25362              android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
25363            </td>
25364            <td class="entry_type">
25365                <span class="entry_type_name entry_type_name_enum">byte</span>
25366
25367              <span class="entry_type_visibility"> [public]</span>
25368
25369
25370
25371
25372
25373                <ul class="entry_type_enum">
25374                  <li>
25375                    <span class="entry_type_enum_name">SRGB</span>
25376                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
25377                  </li>
25378                  <li>
25379                    <span class="entry_type_enum_name">REC709</span>
25380                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
25381                  </li>
25382                </ul>
25383
25384            </td> <!-- entry_type -->
25385
25386            <td class="entry_description">
25387              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
25388PRESET_<wbr/>CURVE</p>
25389            </td>
25390
25391            <td class="entry_units">
25392            </td>
25393
25394            <td class="entry_range">
25395            </td>
25396
25397            <td class="entry_tags">
25398            </td>
25399
25400          </tr>
25401          <tr class="entries_header">
25402            <th class="th_details" colspan="5">Details</th>
25403          </tr>
25404          <tr class="entry_cont">
25405            <td class="entry_details" colspan="5">
25406              <p>The tonemap curve will be defined by specified standard.<wbr/></p>
25407<p>sRGB (approximated by 16 control points):</p>
25408<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
25409<p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
25410<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
25411<p>Note that above figures show a 16 control points approximation of preset
25412curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
25413            </td>
25414          </tr>
25415
25416
25417          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25418           <!-- end of entry -->
25419        
25420        
25421
25422      <!-- end of kind -->
25423      </tbody>
25424
25425  <!-- end of section -->
25426  <tr><td colspan="6" id="section_led" class="section">led</td></tr>
25427
25428
25429      <tr><td colspan="6" class="kind">controls</td></tr>
25430
25431      <thead class="entries_header">
25432        <tr>
25433          <th class="th_name">Property Name</th>
25434          <th class="th_type">Type</th>
25435          <th class="th_description">Description</th>
25436          <th class="th_units">Units</th>
25437          <th class="th_range">Range</th>
25438          <th class="th_tags">Tags</th>
25439        </tr>
25440      </thead>
25441
25442      <tbody>
25443
25444        
25445
25446        
25447
25448        
25449
25450        
25451
25452                
25453          <tr class="entry" id="controls_android.led.transmit">
25454            <td class="entry_name
25455             " rowspan="1">
25456              android.<wbr/>led.<wbr/>transmit
25457            </td>
25458            <td class="entry_type">
25459                <span class="entry_type_name entry_type_name_enum">byte</span>
25460
25461              <span class="entry_type_visibility"> [hidden as boolean]</span>
25462
25463
25464
25465
25466
25467                <ul class="entry_type_enum">
25468                  <li>
25469                    <span class="entry_type_enum_name">OFF</span>
25470                  </li>
25471                  <li>
25472                    <span class="entry_type_enum_name">ON</span>
25473                  </li>
25474                </ul>
25475
25476            </td> <!-- entry_type -->
25477
25478            <td class="entry_description">
25479              <p>This LED is nominally used to indicate to the user
25480that the camera is powered on and may be streaming images back to the
25481Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
25482disable this when video is processed locally and not transmitted to
25483any untrusted applications.<wbr/></p>
25484<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
25485transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
25486data is stored locally on the device.<wbr/></p>
25487<p>The LED <em>may</em> be off if a trusted application is using the data that
25488doesn't violate the above rules.<wbr/></p>
25489            </td>
25490
25491            <td class="entry_units">
25492            </td>
25493
25494            <td class="entry_range">
25495            </td>
25496
25497            <td class="entry_tags">
25498            </td>
25499
25500          </tr>
25501
25502
25503          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25504           <!-- end of entry -->
25505        
25506        
25507
25508      <!-- end of kind -->
25509      </tbody>
25510      <tr><td colspan="6" class="kind">dynamic</td></tr>
25511
25512      <thead class="entries_header">
25513        <tr>
25514          <th class="th_name">Property Name</th>
25515          <th class="th_type">Type</th>
25516          <th class="th_description">Description</th>
25517          <th class="th_units">Units</th>
25518          <th class="th_range">Range</th>
25519          <th class="th_tags">Tags</th>
25520        </tr>
25521      </thead>
25522
25523      <tbody>
25524
25525        
25526
25527        
25528
25529        
25530
25531        
25532
25533                
25534          <tr class="entry" id="dynamic_android.led.transmit">
25535            <td class="entry_name
25536             " rowspan="1">
25537              android.<wbr/>led.<wbr/>transmit
25538            </td>
25539            <td class="entry_type">
25540                <span class="entry_type_name entry_type_name_enum">byte</span>
25541
25542              <span class="entry_type_visibility"> [hidden as boolean]</span>
25543
25544
25545
25546
25547
25548                <ul class="entry_type_enum">
25549                  <li>
25550                    <span class="entry_type_enum_name">OFF</span>
25551                  </li>
25552                  <li>
25553                    <span class="entry_type_enum_name">ON</span>
25554                  </li>
25555                </ul>
25556
25557            </td> <!-- entry_type -->
25558
25559            <td class="entry_description">
25560              <p>This LED is nominally used to indicate to the user
25561that the camera is powered on and may be streaming images back to the
25562Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
25563disable this when video is processed locally and not transmitted to
25564any untrusted applications.<wbr/></p>
25565<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
25566transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
25567data is stored locally on the device.<wbr/></p>
25568<p>The LED <em>may</em> be off if a trusted application is using the data that
25569doesn't violate the above rules.<wbr/></p>
25570            </td>
25571
25572            <td class="entry_units">
25573            </td>
25574
25575            <td class="entry_range">
25576            </td>
25577
25578            <td class="entry_tags">
25579            </td>
25580
25581          </tr>
25582
25583
25584          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25585           <!-- end of entry -->
25586        
25587        
25588
25589      <!-- end of kind -->
25590      </tbody>
25591      <tr><td colspan="6" class="kind">static</td></tr>
25592
25593      <thead class="entries_header">
25594        <tr>
25595          <th class="th_name">Property Name</th>
25596          <th class="th_type">Type</th>
25597          <th class="th_description">Description</th>
25598          <th class="th_units">Units</th>
25599          <th class="th_range">Range</th>
25600          <th class="th_tags">Tags</th>
25601        </tr>
25602      </thead>
25603
25604      <tbody>
25605
25606        
25607
25608        
25609
25610        
25611
25612        
25613
25614                
25615          <tr class="entry" id="static_android.led.availableLeds">
25616            <td class="entry_name
25617             " rowspan="1">
25618              android.<wbr/>led.<wbr/>available<wbr/>Leds
25619            </td>
25620            <td class="entry_type">
25621                <span class="entry_type_name entry_type_name_enum">byte</span>
25622                <span class="entry_type_container">x</span>
25623
25624                <span class="entry_type_array">
25625                  n
25626                </span>
25627              <span class="entry_type_visibility"> [hidden]</span>
25628
25629
25630
25631
25632
25633                <ul class="entry_type_enum">
25634                  <li>
25635                    <span class="entry_type_enum_name">TRANSMIT</span>
25636                    <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>
25637                  </li>
25638                </ul>
25639
25640            </td> <!-- entry_type -->
25641
25642            <td class="entry_description">
25643              <p>A list of camera LEDs that are available on this system.<wbr/></p>
25644            </td>
25645
25646            <td class="entry_units">
25647            </td>
25648
25649            <td class="entry_range">
25650            </td>
25651
25652            <td class="entry_tags">
25653            </td>
25654
25655          </tr>
25656
25657
25658          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25659           <!-- end of entry -->
25660        
25661        
25662
25663      <!-- end of kind -->
25664      </tbody>
25665
25666  <!-- end of section -->
25667  <tr><td colspan="6" id="section_info" class="section">info</td></tr>
25668
25669
25670      <tr><td colspan="6" class="kind">static</td></tr>
25671
25672      <thead class="entries_header">
25673        <tr>
25674          <th class="th_name">Property Name</th>
25675          <th class="th_type">Type</th>
25676          <th class="th_description">Description</th>
25677          <th class="th_units">Units</th>
25678          <th class="th_range">Range</th>
25679          <th class="th_tags">Tags</th>
25680        </tr>
25681      </thead>
25682
25683      <tbody>
25684
25685        
25686
25687        
25688
25689        
25690
25691        
25692
25693                
25694          <tr class="entry" id="static_android.info.supportedHardwareLevel">
25695            <td class="entry_name
25696             " rowspan="5">
25697              android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
25698            </td>
25699            <td class="entry_type">
25700                <span class="entry_type_name entry_type_name_enum">byte</span>
25701
25702              <span class="entry_type_visibility"> [public]</span>
25703
25704
25705              <span class="entry_type_hwlevel">[legacy] </span>
25706
25707
25708
25709                <ul class="entry_type_enum">
25710                  <li>
25711                    <span class="entry_type_enum_name">LIMITED</span>
25712                    <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or
25713better.<wbr/></p>
25714<p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the
25715<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
25716<p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic
25717support for color image capture.<wbr/> The only exception is that the device may
25718alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth
25719measurements and not color images.<wbr/></p>
25720<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>
25721to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before
25722capturing a high-quality still image.<wbr/></p>
25723<p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only
25724required to support full-automatic operation and post-processing (<code>OFF</code> is not
25725supported 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
25726<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p>
25727<p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and
25728can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span>
25729                  </li>
25730                  <li>
25731                    <span class="entry_type_enum_name">FULL</span>
25732                    <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p>
25733<p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the
25734<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
25735<p>A <code>FULL</code> device will support below capabilities:</p>
25736<ul>
25737<li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
25738  <code>BURST_<wbr/>CAPTURE</code>)</li>
25739<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>
25740<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>
25741<li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
25742  <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li>
25743<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>
25744<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>
25745</ul>
25746<p>Note:
25747Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
25748(<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level
2574923,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span>
25750                  </li>
25751                  <li>
25752                    <span class="entry_type_enum_name">LEGACY</span>
25753                    <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p>
25754<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>
25755documentation are supported.<wbr/></p>
25756<p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
25757post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/>
25758No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a
25759<code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
25760<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>
25761devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated
25762as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/>  This may
25763fire the flash for flash power metering during precapture,<wbr/> and then fire the flash
25764for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to
25765enable the flash.<wbr/></p></span>
25766                  </li>
25767                  <li>
25768                    <span class="entry_type_enum_name">3</span>
25769                    <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to
25770FULL-level capabilities.<wbr/></p>
25771<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
25772<code>LIMITED</code> tables in the <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a>
25773documentation are guaranteed to be supported.<wbr/></p>
25774<p>The following additional capabilities are guaranteed to be supported:</p>
25775<ul>
25776<li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
25777  <code>YUV_<wbr/>REPROCESSING</code>)</li>
25778<li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
25779  <code>RAW</code>)</li>
25780</ul></span>
25781                  </li>
25782                </ul>
25783
25784            </td> <!-- entry_type -->
25785
25786            <td class="entry_description">
25787              <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
25788            </td>
25789
25790            <td class="entry_units">
25791            </td>
25792
25793            <td class="entry_range">
25794            </td>
25795
25796            <td class="entry_tags">
25797            </td>
25798
25799          </tr>
25800          <tr class="entries_header">
25801            <th class="th_details" colspan="5">Details</th>
25802          </tr>
25803          <tr class="entry_cont">
25804            <td class="entry_details" colspan="5">
25805              <p>The supported hardware level is a high-level description of the camera device's
25806capabilities,<wbr/> summarizing several capabilities into one field.<wbr/>  Each level adds additional
25807features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/>
25808The ordering is <code>LEGACY &lt; LIMITED &lt; FULL &lt; LEVEL_<wbr/>3</code>.<wbr/></p>
25809<p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing
25810numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/>
25811the following code snippet can be used:</p>
25812<pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/>
25813boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) {
25814    int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL);
25815    if (deviceLevel == Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY) {
25816        return requiredLevel == deviceLevel;
25817    }
25818    //<wbr/> deviceLevel is not LEGACY,<wbr/> can use numerical sort
25819    return requiredLevel &lt;= deviceLevel;
25820}
25821</code></pre>
25822<p>At a high level,<wbr/> the levels are:</p>
25823<ul>
25824<li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older
25825  Android devices,<wbr/> and have very limited capabilities.<wbr/></li>
25826<li><code>LIMITED</code> devices represent the
25827  baseline feature set,<wbr/> and may also include additional capabilities that are
25828  subsets of <code>FULL</code>.<wbr/></li>
25829<li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and
25830  post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li>
25831<li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along
25832  with additional output stream configurations.<wbr/></li>
25833</ul>
25834<p>See the individual level enums for full descriptions of the supported capabilities.<wbr/>  The
25835<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a
25836finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or
25837ranges defined in individual <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> entries.<wbr/></p>
25838<p>Some features are not part of any particular hardware level or capability and must be
25839queried separately.<wbr/> These include:</p>
25840<ul>
25841<li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
25842<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>
25843<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>
25844<li>Optical or electrical image stabilization
25845  (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
25846   <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
25847</ul>
25848            </td>
25849          </tr>
25850
25851          <tr class="entries_header">
25852            <th class="th_details" colspan="5">HAL Implementation Details</th>
25853          </tr>
25854          <tr class="entry_cont">
25855            <td class="entry_details" colspan="5">
25856              <p>The camera 3 HAL device can implement one of three possible operational modes; LIMITED,<wbr/>
25857FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p>
25858<p>FULL support or better is expected from new higher-end devices.<wbr/> Limited
25859mode has hardware requirements roughly in line with those for a camera HAL device v1
25860implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict
25861superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p>
25862<p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
25863<p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in
25864the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on HALv1 devices,<wbr/> and is implemented
25865by the camera framework code.<wbr/></p>
25866            </td>
25867          </tr>
25868
25869          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25870           <!-- end of entry -->
25871        
25872        
25873
25874      <!-- end of kind -->
25875      </tbody>
25876
25877  <!-- end of section -->
25878  <tr><td colspan="6" id="section_blackLevel" class="section">blackLevel</td></tr>
25879
25880
25881      <tr><td colspan="6" class="kind">controls</td></tr>
25882
25883      <thead class="entries_header">
25884        <tr>
25885          <th class="th_name">Property Name</th>
25886          <th class="th_type">Type</th>
25887          <th class="th_description">Description</th>
25888          <th class="th_units">Units</th>
25889          <th class="th_range">Range</th>
25890          <th class="th_tags">Tags</th>
25891        </tr>
25892      </thead>
25893
25894      <tbody>
25895
25896        
25897
25898        
25899
25900        
25901
25902        
25903
25904                
25905          <tr class="entry" id="controls_android.blackLevel.lock">
25906            <td class="entry_name
25907             " rowspan="5">
25908              android.<wbr/>black<wbr/>Level.<wbr/>lock
25909            </td>
25910            <td class="entry_type">
25911                <span class="entry_type_name entry_type_name_enum">byte</span>
25912
25913              <span class="entry_type_visibility"> [public as boolean]</span>
25914
25915
25916              <span class="entry_type_hwlevel">[full] </span>
25917
25918
25919
25920                <ul class="entry_type_enum">
25921                  <li>
25922                    <span class="entry_type_enum_name">OFF</span>
25923                  </li>
25924                  <li>
25925                    <span class="entry_type_enum_name">ON</span>
25926                  </li>
25927                </ul>
25928
25929            </td> <!-- entry_type -->
25930
25931            <td class="entry_description">
25932              <p>Whether black-level compensation is locked
25933to its current values,<wbr/> or is free to vary.<wbr/></p>
25934            </td>
25935
25936            <td class="entry_units">
25937            </td>
25938
25939            <td class="entry_range">
25940            </td>
25941
25942            <td class="entry_tags">
25943              <ul class="entry_tags">
25944                  <li><a href="#tag_HAL2">HAL2</a></li>
25945              </ul>
25946            </td>
25947
25948          </tr>
25949          <tr class="entries_header">
25950            <th class="th_details" colspan="5">Details</th>
25951          </tr>
25952          <tr class="entry_cont">
25953            <td class="entry_details" colspan="5">
25954              <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
25955compensation will not change until the lock is set to
25956<code>false</code> (OFF).<wbr/></p>
25957<p>Since changes to certain capture parameters (such as
25958exposure time) may require resetting of black level
25959compensation,<wbr/> the camera device must report whether setting
25960the black level lock was successful in the output result
25961metadata.<wbr/></p>
25962<p>For example,<wbr/> if a sequence of requests is as follows:</p>
25963<ul>
25964<li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
25965<li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
25966<li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
25967<li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
25968<li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
25969<li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
25970</ul>
25971<p>And the exposure change in Request 4 requires the camera
25972device to reset the black level offsets,<wbr/> then the output
25973result metadata is expected to be:</p>
25974<ul>
25975<li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
25976<li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
25977<li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
25978<li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
25979<li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
25980<li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
25981</ul>
25982<p>This indicates to the application that on frame 4,<wbr/> black
25983levels were reset due to exposure value changes,<wbr/> and pixel
25984values may not be consistent across captures.<wbr/></p>
25985<p>The camera device will maintain the lock to the extent
25986possible,<wbr/> only overriding the lock to OFF when changes to
25987other request parameters require a black level recalculation
25988or reset.<wbr/></p>
25989            </td>
25990          </tr>
25991
25992          <tr class="entries_header">
25993            <th class="th_details" colspan="5">HAL Implementation Details</th>
25994          </tr>
25995          <tr class="entry_cont">
25996            <td class="entry_details" colspan="5">
25997              <p>If for some reason black level locking is no longer possible
25998(for example,<wbr/> the analog gain has changed,<wbr/> which forces
25999black level offsets to be recalculated),<wbr/> then the HAL must
26000override this request (and it must report 'OFF' when this
26001does happen) until the next capture for which locking is
26002possible again.<wbr/></p>
26003            </td>
26004          </tr>
26005
26006          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26007           <!-- end of entry -->
26008        
26009        
26010
26011      <!-- end of kind -->
26012      </tbody>
26013      <tr><td colspan="6" class="kind">dynamic</td></tr>
26014
26015      <thead class="entries_header">
26016        <tr>
26017          <th class="th_name">Property Name</th>
26018          <th class="th_type">Type</th>
26019          <th class="th_description">Description</th>
26020          <th class="th_units">Units</th>
26021          <th class="th_range">Range</th>
26022          <th class="th_tags">Tags</th>
26023        </tr>
26024      </thead>
26025
26026      <tbody>
26027
26028        
26029
26030        
26031
26032        
26033
26034        
26035
26036                
26037          <tr class="entry" id="dynamic_android.blackLevel.lock">
26038            <td class="entry_name
26039             " rowspan="5">
26040              android.<wbr/>black<wbr/>Level.<wbr/>lock
26041            </td>
26042            <td class="entry_type">
26043                <span class="entry_type_name entry_type_name_enum">byte</span>
26044
26045              <span class="entry_type_visibility"> [public as boolean]</span>
26046
26047
26048              <span class="entry_type_hwlevel">[full] </span>
26049
26050
26051
26052                <ul class="entry_type_enum">
26053                  <li>
26054                    <span class="entry_type_enum_name">OFF</span>
26055                  </li>
26056                  <li>
26057                    <span class="entry_type_enum_name">ON</span>
26058                  </li>
26059                </ul>
26060
26061            </td> <!-- entry_type -->
26062
26063            <td class="entry_description">
26064              <p>Whether black-level compensation is locked
26065to its current values,<wbr/> or is free to vary.<wbr/></p>
26066            </td>
26067
26068            <td class="entry_units">
26069            </td>
26070
26071            <td class="entry_range">
26072            </td>
26073
26074            <td class="entry_tags">
26075              <ul class="entry_tags">
26076                  <li><a href="#tag_HAL2">HAL2</a></li>
26077              </ul>
26078            </td>
26079
26080          </tr>
26081          <tr class="entries_header">
26082            <th class="th_details" colspan="5">Details</th>
26083          </tr>
26084          <tr class="entry_cont">
26085            <td class="entry_details" colspan="5">
26086              <p>Whether the black level offset was locked for this frame.<wbr/>  Should be
26087ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
26088a change in other capture settings forced the camera device to
26089perform a black level reset.<wbr/></p>
26090            </td>
26091          </tr>
26092
26093          <tr class="entries_header">
26094            <th class="th_details" colspan="5">HAL Implementation Details</th>
26095          </tr>
26096          <tr class="entry_cont">
26097            <td class="entry_details" colspan="5">
26098              <p>If for some reason black level locking is no longer possible
26099(for example,<wbr/> the analog gain has changed,<wbr/> which forces
26100black level offsets to be recalculated),<wbr/> then the HAL must
26101override this request (and it must report 'OFF' when this
26102does happen) until the next capture for which locking is
26103possible again.<wbr/></p>
26104            </td>
26105          </tr>
26106
26107          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26108           <!-- end of entry -->
26109        
26110        
26111
26112      <!-- end of kind -->
26113      </tbody>
26114
26115  <!-- end of section -->
26116  <tr><td colspan="6" id="section_sync" class="section">sync</td></tr>
26117
26118
26119      <tr><td colspan="6" class="kind">dynamic</td></tr>
26120
26121      <thead class="entries_header">
26122        <tr>
26123          <th class="th_name">Property Name</th>
26124          <th class="th_type">Type</th>
26125          <th class="th_description">Description</th>
26126          <th class="th_units">Units</th>
26127          <th class="th_range">Range</th>
26128          <th class="th_tags">Tags</th>
26129        </tr>
26130      </thead>
26131
26132      <tbody>
26133
26134        
26135
26136        
26137
26138        
26139
26140        
26141
26142                
26143          <tr class="entry" id="dynamic_android.sync.frameNumber">
26144            <td class="entry_name
26145             " rowspan="5">
26146              android.<wbr/>sync.<wbr/>frame<wbr/>Number
26147            </td>
26148            <td class="entry_type">
26149                <span class="entry_type_name entry_type_name_enum">int64</span>
26150
26151              <span class="entry_type_visibility"> [ndk_public]</span>
26152
26153
26154              <span class="entry_type_hwlevel">[legacy] </span>
26155
26156
26157
26158                <ul class="entry_type_enum">
26159                  <li>
26160                    <span class="entry_type_enum_name">CONVERGING</span>
26161                    <span class="entry_type_enum_value">-1</span>
26162                    <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
26163<p>Synchronization is in progress,<wbr/> and reading metadata from this
26164result may include a mix of data that have taken effect since the
26165last synchronization time.<wbr/></p>
26166<p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
26167this value will update to the actual frame number frame number
26168the result is guaranteed to be synchronized to (as long as the
26169request settings remain constant).<wbr/></p></span>
26170                  </li>
26171                  <li>
26172                    <span class="entry_type_enum_name">UNKNOWN</span>
26173                    <span class="entry_type_enum_value">-2</span>
26174                    <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
26175<p>The result may have already converged,<wbr/> or it may be in
26176progress.<wbr/>  Reading from this result may include some mix
26177of settings from past requests.<wbr/></p>
26178<p>After a settings change,<wbr/> the new settings will eventually all
26179take effect for the output buffers and results.<wbr/> However,<wbr/> this
26180value will not change when that happens.<wbr/> Altering settings
26181rapidly may provide outcomes using mixes of settings from recent
26182requests.<wbr/></p>
26183<p>This value is intended primarily for backwards compatibility with
26184the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
26185                  </li>
26186                </ul>
26187
26188            </td> <!-- entry_type -->
26189
26190            <td class="entry_description">
26191              <p>The frame number corresponding to the last request
26192with which the output result (metadata + buffers) has been fully
26193synchronized.<wbr/></p>
26194            </td>
26195
26196            <td class="entry_units">
26197            </td>
26198
26199            <td class="entry_range">
26200              <p>Either a non-negative value corresponding to a
26201<code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
26202            </td>
26203
26204            <td class="entry_tags">
26205              <ul class="entry_tags">
26206                  <li><a href="#tag_V1">V1</a></li>
26207              </ul>
26208            </td>
26209
26210          </tr>
26211          <tr class="entries_header">
26212            <th class="th_details" colspan="5">Details</th>
26213          </tr>
26214          <tr class="entry_cont">
26215            <td class="entry_details" colspan="5">
26216              <p>When a request is submitted to the camera device,<wbr/> there is usually a
26217delay of several frames before the controls get applied.<wbr/> A camera
26218device may either choose to account for this delay by implementing a
26219pipeline and carefully submit well-timed atomic control updates,<wbr/> or
26220it may start streaming control changes that span over several frame
26221boundaries.<wbr/></p>
26222<p>In the latter case,<wbr/> whenever a request's settings change relative to
26223the previous submitted request,<wbr/> the full set of changes may take
26224multiple frame durations to fully take effect.<wbr/> Some settings may
26225take effect sooner (in less frame durations) than others.<wbr/></p>
26226<p>While a set of control changes are being propagated,<wbr/> this value
26227will be CONVERGING.<wbr/></p>
26228<p>Once it is fully known that a set of control changes have been
26229finished propagating,<wbr/> and the resulting updated control settings
26230have been read back by the camera device,<wbr/> this value will be set
26231to a non-negative frame number (corresponding to the request to
26232which the results have synchronized to).<wbr/></p>
26233<p>Older camera device implementations may not have a way to detect
26234when all camera controls have been applied,<wbr/> and will always set this
26235value to UNKNOWN.<wbr/></p>
26236<p>FULL capability devices will always have this value set to the
26237frame number of the request corresponding to this result.<wbr/></p>
26238<p><em>Further details</em>:</p>
26239<ul>
26240<li>Whenever a request differs from the last request,<wbr/> any future
26241results not yet returned may have this value set to CONVERGING (this
26242could include any in-progress captures not yet returned by the camera
26243device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
26244<li>Submitting a series of multiple requests that differ from the
26245previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
26246moves the new synchronization frame to the last non-repeating
26247request (using the smallest frame number from the contiguous list of
26248repeating requests).<wbr/></li>
26249<li>Submitting the same request repeatedly will not change this value
26250to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
26251<li>When this value changes to non-negative,<wbr/> that means that all of the
26252metadata controls from the request have been applied,<wbr/> all of the
26253metadata controls from the camera device have been read to the
26254updated values (into the result),<wbr/> and all of the graphics buffers
26255corresponding to this result are also synchronized to the request.<wbr/></li>
26256</ul>
26257<p><em>Pipeline considerations</em>:</p>
26258<p>Submitting a request with updated controls relative to the previously
26259submitted requests may also invalidate the synchronization state
26260of all the results corresponding to currently in-flight requests.<wbr/></p>
26261<p>In other words,<wbr/> results for this current request and up to
26262<a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
26263<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
26264            </td>
26265          </tr>
26266
26267          <tr class="entries_header">
26268            <th class="th_details" colspan="5">HAL Implementation Details</th>
26269          </tr>
26270          <tr class="entry_cont">
26271            <td class="entry_details" colspan="5">
26272              <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
26273is also UNKNOWN.<wbr/></p>
26274<p>FULL capability devices should simply set this value to the
26275<code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
26276            </td>
26277          </tr>
26278
26279          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26280           <!-- end of entry -->
26281        
26282        
26283
26284      <!-- end of kind -->
26285      </tbody>
26286      <tr><td colspan="6" class="kind">static</td></tr>
26287
26288      <thead class="entries_header">
26289        <tr>
26290          <th class="th_name">Property Name</th>
26291          <th class="th_type">Type</th>
26292          <th class="th_description">Description</th>
26293          <th class="th_units">Units</th>
26294          <th class="th_range">Range</th>
26295          <th class="th_tags">Tags</th>
26296        </tr>
26297      </thead>
26298
26299      <tbody>
26300
26301        
26302
26303        
26304
26305        
26306
26307        
26308
26309                
26310          <tr class="entry" id="static_android.sync.maxLatency">
26311            <td class="entry_name
26312             " rowspan="5">
26313              android.<wbr/>sync.<wbr/>max<wbr/>Latency
26314            </td>
26315            <td class="entry_type">
26316                <span class="entry_type_name entry_type_name_enum">int32</span>
26317
26318              <span class="entry_type_visibility"> [public]</span>
26319
26320
26321              <span class="entry_type_hwlevel">[legacy] </span>
26322
26323
26324
26325                <ul class="entry_type_enum">
26326                  <li>
26327                    <span class="entry_type_enum_name">PER_FRAME_CONTROL</span>
26328                    <span class="entry_type_enum_value">0</span>
26329                    <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
26330<p>Changing controls over multiple requests one after another will
26331produce results that have those controls applied atomically
26332each frame.<wbr/></p>
26333<p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
26334                  </li>
26335                  <li>
26336                    <span class="entry_type_enum_name">UNKNOWN</span>
26337                    <span class="entry_type_enum_value">-1</span>
26338                    <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
26339of the past requests applied to the camera settings.<wbr/></p>
26340<p>By submitting a series of identical requests,<wbr/> the camera device
26341will eventually have the camera settings applied,<wbr/> but it is
26342unknown when that exact point will be.<wbr/></p>
26343<p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
26344                  </li>
26345                </ul>
26346
26347            </td> <!-- entry_type -->
26348
26349            <td class="entry_description">
26350              <p>The maximum number of frames that can occur after a request
26351(different than the previous) has been submitted,<wbr/> and before the
26352result's state becomes synchronized.<wbr/></p>
26353            </td>
26354
26355            <td class="entry_units">
26356              Frame counts
26357            </td>
26358
26359            <td class="entry_range">
26360              <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
26361            </td>
26362
26363            <td class="entry_tags">
26364              <ul class="entry_tags">
26365                  <li><a href="#tag_V1">V1</a></li>
26366              </ul>
26367            </td>
26368
26369          </tr>
26370          <tr class="entries_header">
26371            <th class="th_details" colspan="5">Details</th>
26372          </tr>
26373          <tr class="entry_cont">
26374            <td class="entry_details" colspan="5">
26375              <p>This defines the maximum distance (in number of metadata results),<wbr/>
26376between the frame number of the request that has new controls to apply
26377and the frame number of the result that has all the controls applied.<wbr/></p>
26378<p>In other words this acts as an upper boundary for how many frames
26379must occur before the camera device knows for a fact that the new
26380submitted camera settings have been applied in outgoing frames.<wbr/></p>
26381            </td>
26382          </tr>
26383
26384          <tr class="entries_header">
26385            <th class="th_details" colspan="5">HAL Implementation Details</th>
26386          </tr>
26387          <tr class="entry_cont">
26388            <td class="entry_details" colspan="5">
26389              <p>For example if maxLatency was 2,<wbr/></p>
26390<pre><code>initial request = X (repeating)
26391request1 = X
26392request2 = Y
26393request3 = Y
26394request4 = Y
26395
26396where requestN has frameNumber N,<wbr/> and the first of the repeating
26397initial request's has frameNumber F (and F &lt; 1).<wbr/>
26398
26399initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
26400result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
26401result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
26402result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
26403result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
26404
26405where resultN has frameNumber N.<wbr/>
26406</code></pre>
26407<p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
26408<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
26409<code>4 - 2 = 2</code>.<wbr/></p>
26410<p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
26411<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
26412<code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p>
26413<p>LIMITED devices are strongly encouraged to use a non-negative
26414value.<wbr/> If UNKNOWN is used here then app developers do not have a way
26415to know when sensor settings have been applied.<wbr/></p>
26416            </td>
26417          </tr>
26418
26419          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26420           <!-- end of entry -->
26421        
26422        
26423
26424      <!-- end of kind -->
26425      </tbody>
26426
26427  <!-- end of section -->
26428  <tr><td colspan="6" id="section_reprocess" class="section">reprocess</td></tr>
26429
26430
26431      <tr><td colspan="6" class="kind">controls</td></tr>
26432
26433      <thead class="entries_header">
26434        <tr>
26435          <th class="th_name">Property Name</th>
26436          <th class="th_type">Type</th>
26437          <th class="th_description">Description</th>
26438          <th class="th_units">Units</th>
26439          <th class="th_range">Range</th>
26440          <th class="th_tags">Tags</th>
26441        </tr>
26442      </thead>
26443
26444      <tbody>
26445
26446        
26447
26448        
26449
26450        
26451
26452        
26453
26454                
26455          <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
26456            <td class="entry_name
26457             " rowspan="3">
26458              android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
26459            </td>
26460            <td class="entry_type">
26461                <span class="entry_type_name">float</span>
26462
26463              <span class="entry_type_visibility"> [java_public]</span>
26464
26465
26466              <span class="entry_type_hwlevel">[limited] </span>
26467
26468
26469
26470
26471            </td> <!-- entry_type -->
26472
26473            <td class="entry_description">
26474              <p>The amount of exposure time increase factor applied to the original output
26475frame by the application processing before sending for reprocessing.<wbr/></p>
26476            </td>
26477
26478            <td class="entry_units">
26479              Relative exposure time increase factor.<wbr/>
26480            </td>
26481
26482            <td class="entry_range">
26483              <p>&gt;= 1.<wbr/>0</p>
26484            </td>
26485
26486            <td class="entry_tags">
26487              <ul class="entry_tags">
26488                  <li><a href="#tag_REPROC">REPROC</a></li>
26489              </ul>
26490            </td>
26491
26492          </tr>
26493          <tr class="entries_header">
26494            <th class="th_details" colspan="5">Details</th>
26495          </tr>
26496          <tr class="entry_cont">
26497            <td class="entry_details" colspan="5">
26498              <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
26499capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
26500<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
26501output frames to effectively reduce the noise to the same level as a frame that was
26502captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
26503images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
26504the camera device is that the amount of noise in the image would be approximately what
26505would be expected if the original capture parameters had been a sensitivity of
26506S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
26507than S and T respectively.<wbr/> If the captured images were processed by the application
26508before being sent for reprocessing,<wbr/> then the application may have used image processing
26509algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
26510application-processed images (input images).<wbr/> By using the effectiveExposureFactor
26511control,<wbr/> the application can communicate to the camera device the actual noise level
26512improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
26513device can select appropriate noise reduction and edge enhancement parameters to avoid
26514excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
26515enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
26516<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
26517multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
26518fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
26519square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
26520adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
26521produce the best quality images.<wbr/></p>
26522<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
26523buffer in a way that affects its effective exposure time.<wbr/></p>
26524<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
26525reduction 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/>
26526Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
26527<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
26528            </td>
26529          </tr>
26530
26531
26532          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26533           <!-- end of entry -->
26534        
26535        
26536
26537      <!-- end of kind -->
26538      </tbody>
26539      <tr><td colspan="6" class="kind">dynamic</td></tr>
26540
26541      <thead class="entries_header">
26542        <tr>
26543          <th class="th_name">Property Name</th>
26544          <th class="th_type">Type</th>
26545          <th class="th_description">Description</th>
26546          <th class="th_units">Units</th>
26547          <th class="th_range">Range</th>
26548          <th class="th_tags">Tags</th>
26549        </tr>
26550      </thead>
26551
26552      <tbody>
26553
26554        
26555
26556        
26557
26558        
26559
26560        
26561
26562                
26563          <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
26564            <td class="entry_name
26565             " rowspan="3">
26566              android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
26567            </td>
26568            <td class="entry_type">
26569                <span class="entry_type_name">float</span>
26570
26571              <span class="entry_type_visibility"> [java_public]</span>
26572
26573
26574              <span class="entry_type_hwlevel">[limited] </span>
26575
26576
26577
26578
26579            </td> <!-- entry_type -->
26580
26581            <td class="entry_description">
26582              <p>The amount of exposure time increase factor applied to the original output
26583frame by the application processing before sending for reprocessing.<wbr/></p>
26584            </td>
26585
26586            <td class="entry_units">
26587              Relative exposure time increase factor.<wbr/>
26588            </td>
26589
26590            <td class="entry_range">
26591              <p>&gt;= 1.<wbr/>0</p>
26592            </td>
26593
26594            <td class="entry_tags">
26595              <ul class="entry_tags">
26596                  <li><a href="#tag_REPROC">REPROC</a></li>
26597              </ul>
26598            </td>
26599
26600          </tr>
26601          <tr class="entries_header">
26602            <th class="th_details" colspan="5">Details</th>
26603          </tr>
26604          <tr class="entry_cont">
26605            <td class="entry_details" colspan="5">
26606              <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
26607capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
26608<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
26609output frames to effectively reduce the noise to the same level as a frame that was
26610captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
26611images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
26612the camera device is that the amount of noise in the image would be approximately what
26613would be expected if the original capture parameters had been a sensitivity of
26614S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
26615than S and T respectively.<wbr/> If the captured images were processed by the application
26616before being sent for reprocessing,<wbr/> then the application may have used image processing
26617algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
26618application-processed images (input images).<wbr/> By using the effectiveExposureFactor
26619control,<wbr/> the application can communicate to the camera device the actual noise level
26620improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
26621device can select appropriate noise reduction and edge enhancement parameters to avoid
26622excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
26623enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
26624<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
26625multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
26626fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
26627square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
26628adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
26629produce the best quality images.<wbr/></p>
26630<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
26631buffer in a way that affects its effective exposure time.<wbr/></p>
26632<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
26633reduction 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/>
26634Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
26635<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
26636            </td>
26637          </tr>
26638
26639
26640          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26641           <!-- end of entry -->
26642        
26643        
26644
26645      <!-- end of kind -->
26646      </tbody>
26647      <tr><td colspan="6" class="kind">static</td></tr>
26648
26649      <thead class="entries_header">
26650        <tr>
26651          <th class="th_name">Property Name</th>
26652          <th class="th_type">Type</th>
26653          <th class="th_description">Description</th>
26654          <th class="th_units">Units</th>
26655          <th class="th_range">Range</th>
26656          <th class="th_tags">Tags</th>
26657        </tr>
26658      </thead>
26659
26660      <tbody>
26661
26662        
26663
26664        
26665
26666        
26667
26668        
26669
26670                
26671          <tr class="entry" id="static_android.reprocess.maxCaptureStall">
26672            <td class="entry_name
26673             " rowspan="3">
26674              android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
26675            </td>
26676            <td class="entry_type">
26677                <span class="entry_type_name">int32</span>
26678
26679              <span class="entry_type_visibility"> [java_public]</span>
26680
26681
26682              <span class="entry_type_hwlevel">[limited] </span>
26683
26684
26685
26686
26687            </td> <!-- entry_type -->
26688
26689            <td class="entry_description">
26690              <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
26691reprocess capture request.<wbr/></p>
26692            </td>
26693
26694            <td class="entry_units">
26695              Number of frames.<wbr/>
26696            </td>
26697
26698            <td class="entry_range">
26699              <p>&lt;= 4</p>
26700            </td>
26701
26702            <td class="entry_tags">
26703              <ul class="entry_tags">
26704                  <li><a href="#tag_REPROC">REPROC</a></li>
26705              </ul>
26706            </td>
26707
26708          </tr>
26709          <tr class="entries_header">
26710            <th class="th_details" colspan="5">Details</th>
26711          </tr>
26712          <tr class="entry_cont">
26713            <td class="entry_details" colspan="5">
26714              <p>The key describes the maximal interference that one reprocess (input) request
26715can introduce to the camera simultaneous streaming of regular (output) capture
26716requests,<wbr/> including repeating requests.<wbr/></p>
26717<p>When a reprocessing capture request is submitted while a camera output repeating request
26718(e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
26719pipeline for at least one frame duration so that the camera device is unable to process
26720the following capture request in time for the next sensor start of exposure boundary.<wbr/>
26721When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
26722duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
26723glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
26724the worst-case number of frame stall introduced by one reprocess request with any kind of
26725formats/<wbr/>sizes combination.<wbr/></p>
26726<p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
26727ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
26728<p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
26729i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
26730YUV_<wbr/>REPROCESSING).<wbr/></p>
26731            </td>
26732          </tr>
26733
26734
26735          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26736           <!-- end of entry -->
26737        
26738        
26739
26740      <!-- end of kind -->
26741      </tbody>
26742
26743  <!-- end of section -->
26744  <tr><td colspan="6" id="section_depth" class="section">depth</td></tr>
26745
26746
26747      <tr><td colspan="6" class="kind">static</td></tr>
26748
26749      <thead class="entries_header">
26750        <tr>
26751          <th class="th_name">Property Name</th>
26752          <th class="th_type">Type</th>
26753          <th class="th_description">Description</th>
26754          <th class="th_units">Units</th>
26755          <th class="th_range">Range</th>
26756          <th class="th_tags">Tags</th>
26757        </tr>
26758      </thead>
26759
26760      <tbody>
26761
26762        
26763
26764        
26765
26766        
26767
26768        
26769
26770                
26771          <tr class="entry" id="static_android.depth.maxDepthSamples">
26772            <td class="entry_name
26773             " rowspan="3">
26774              android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
26775            </td>
26776            <td class="entry_type">
26777                <span class="entry_type_name">int32</span>
26778
26779              <span class="entry_type_visibility"> [system]</span>
26780
26781
26782              <span class="entry_type_hwlevel">[limited] </span>
26783
26784
26785
26786
26787            </td> <!-- entry_type -->
26788
26789            <td class="entry_description">
26790              <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
26791            </td>
26792
26793            <td class="entry_units">
26794            </td>
26795
26796            <td class="entry_range">
26797            </td>
26798
26799            <td class="entry_tags">
26800              <ul class="entry_tags">
26801                  <li><a href="#tag_DEPTH">DEPTH</a></li>
26802              </ul>
26803            </td>
26804
26805          </tr>
26806          <tr class="entries_header">
26807            <th class="th_details" colspan="5">Details</th>
26808          </tr>
26809          <tr class="entry_cont">
26810            <td class="entry_details" colspan="5">
26811              <p>If a camera device supports outputting depth range data in the form of a depth point
26812cloud (<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
26813number of points an output buffer may contain.<wbr/></p>
26814<p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
26815If output in the depth point cloud format is not supported,<wbr/> this entry will
26816not be defined.<wbr/></p>
26817            </td>
26818          </tr>
26819
26820
26821          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26822           <!-- end of entry -->
26823        
26824                
26825          <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
26826            <td class="entry_name
26827             " rowspan="3">
26828              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
26829            </td>
26830            <td class="entry_type">
26831                <span class="entry_type_name entry_type_name_enum">int32</span>
26832                <span class="entry_type_container">x</span>
26833
26834                <span class="entry_type_array">
26835                  n x 4
26836                </span>
26837              <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
26838
26839
26840              <span class="entry_type_hwlevel">[limited] </span>
26841
26842
26843
26844                <ul class="entry_type_enum">
26845                  <li>
26846                    <span class="entry_type_enum_name">OUTPUT</span>
26847                  </li>
26848                  <li>
26849                    <span class="entry_type_enum_name">INPUT</span>
26850                  </li>
26851                </ul>
26852
26853            </td> <!-- entry_type -->
26854
26855            <td class="entry_description">
26856              <p>The available depth dataspace stream
26857configurations that this camera device supports
26858(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
26859            </td>
26860
26861            <td class="entry_units">
26862            </td>
26863
26864            <td class="entry_range">
26865            </td>
26866
26867            <td class="entry_tags">
26868              <ul class="entry_tags">
26869                  <li><a href="#tag_DEPTH">DEPTH</a></li>
26870              </ul>
26871            </td>
26872
26873          </tr>
26874          <tr class="entries_header">
26875            <th class="th_details" colspan="5">Details</th>
26876          </tr>
26877          <tr class="entry_cont">
26878            <td class="entry_details" colspan="5">
26879              <p>These are output stream configurations for use with
26880dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
26881listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
26882<p>Only devices that support depth output for at least
26883the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
26884this entry.<wbr/></p>
26885<p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
26886sparse depth point cloud must report a single entry for
26887the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
26888<a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
26889the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
26890            </td>
26891          </tr>
26892
26893
26894          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26895           <!-- end of entry -->
26896        
26897                
26898          <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
26899            <td class="entry_name
26900             " rowspan="3">
26901              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
26902            </td>
26903            <td class="entry_type">
26904                <span class="entry_type_name">int64</span>
26905                <span class="entry_type_container">x</span>
26906
26907                <span class="entry_type_array">
26908                  4 x n
26909                </span>
26910              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
26911
26912
26913              <span class="entry_type_hwlevel">[limited] </span>
26914
26915
26916
26917
26918            </td> <!-- entry_type -->
26919
26920            <td class="entry_description">
26921              <p>This lists the minimum frame duration for each
26922format/<wbr/>size combination for depth output formats.<wbr/></p>
26923            </td>
26924
26925            <td class="entry_units">
26926              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
26927            </td>
26928
26929            <td class="entry_range">
26930            </td>
26931
26932            <td class="entry_tags">
26933              <ul class="entry_tags">
26934                  <li><a href="#tag_DEPTH">DEPTH</a></li>
26935              </ul>
26936            </td>
26937
26938          </tr>
26939          <tr class="entries_header">
26940            <th class="th_details" colspan="5">Details</th>
26941          </tr>
26942          <tr class="entry_cont">
26943            <td class="entry_details" colspan="5">
26944              <p>This should correspond to the frame duration when only that
26945stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
26946set to either OFF or FAST.<wbr/></p>
26947<p>When multiple streams are used in a request,<wbr/> the minimum frame
26948duration will be max(individual stream min durations).<wbr/></p>
26949<p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
26950is the same regardless of whether the stream is input or output.<wbr/></p>
26951<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
26952<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
26953calculating the max frame rate.<wbr/></p>
26954<p>(Keep in sync with <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p>
26955            </td>
26956          </tr>
26957
26958
26959          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26960           <!-- end of entry -->
26961        
26962                
26963          <tr class="entry" id="static_android.depth.availableDepthStallDurations">
26964            <td class="entry_name
26965             " rowspan="3">
26966              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
26967            </td>
26968            <td class="entry_type">
26969                <span class="entry_type_name">int64</span>
26970                <span class="entry_type_container">x</span>
26971
26972                <span class="entry_type_array">
26973                  4 x n
26974                </span>
26975              <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
26976
26977
26978              <span class="entry_type_hwlevel">[limited] </span>
26979
26980
26981
26982
26983            </td> <!-- entry_type -->
26984
26985            <td class="entry_description">
26986              <p>This lists the maximum stall duration for each
26987output format/<wbr/>size combination for depth streams.<wbr/></p>
26988            </td>
26989
26990            <td class="entry_units">
26991              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
26992            </td>
26993
26994            <td class="entry_range">
26995            </td>
26996
26997            <td class="entry_tags">
26998              <ul class="entry_tags">
26999                  <li><a href="#tag_DEPTH">DEPTH</a></li>
27000              </ul>
27001            </td>
27002
27003          </tr>
27004          <tr class="entries_header">
27005            <th class="th_details" colspan="5">Details</th>
27006          </tr>
27007          <tr class="entry_cont">
27008            <td class="entry_details" colspan="5">
27009              <p>A stall duration is how much extra time would get added
27010to the normal minimum frame duration for a repeating request
27011that has streams with non-zero stall.<wbr/></p>
27012<p>This functions similarly to
27013<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
27014streams.<wbr/></p>
27015<p>All depth output stream formats may have a nonzero stall
27016duration.<wbr/></p>
27017            </td>
27018          </tr>
27019
27020
27021          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
27022           <!-- end of entry -->
27023        
27024                
27025          <tr class="entry" id="static_android.depth.depthIsExclusive">
27026            <td class="entry_name
27027             " rowspan="3">
27028              android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
27029            </td>
27030            <td class="entry_type">
27031                <span class="entry_type_name entry_type_name_enum">byte</span>
27032
27033              <span class="entry_type_visibility"> [public as boolean]</span>
27034
27035
27036              <span class="entry_type_hwlevel">[limited] </span>
27037
27038
27039
27040                <ul class="entry_type_enum">
27041                  <li>
27042                    <span class="entry_type_enum_name">FALSE</span>
27043                  </li>
27044                  <li>
27045                    <span class="entry_type_enum_name">TRUE</span>
27046                  </li>
27047                </ul>
27048
27049            </td> <!-- entry_type -->
27050
27051            <td class="entry_description">
27052              <p>Indicates whether a capture request may target both a
27053DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
27054YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
27055            </td>
27056
27057            <td class="entry_units">
27058            </td>
27059
27060            <td class="entry_range">
27061            </td>
27062
27063            <td class="entry_tags">
27064            </td>
27065
27066          </tr>
27067          <tr class="entries_header">
27068            <th class="th_details" colspan="5">Details</th>
27069          </tr>
27070          <tr class="entry_cont">
27071            <td class="entry_details" colspan="5">
27072              <p>If TRUE,<wbr/> including both depth and color outputs in a single
27073capture request is not supported.<wbr/> An application must interleave color
27074and depth requests.<wbr/>  If FALSE,<wbr/> a single request can target both types
27075of output.<wbr/></p>
27076<p>Typically,<wbr/> this restriction exists on camera devices that
27077need to emit a specific pattern or wavelength of light to
27078measure depth values,<wbr/> which causes the color image to be
27079corrupted during depth measurement.<wbr/></p>
27080            </td>
27081          </tr>
27082
27083
27084          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
27085           <!-- end of entry -->
27086        
27087        
27088
27089      <!-- end of kind -->
27090      </tbody>
27091
27092  <!-- end of section -->
27093<!-- </namespace> -->
27094  </table>
27095
27096  <div class="tags" id="tag_index">
27097    <h2>Tags</h2>
27098    <ul>
27099      <li id="tag_BC">BC - 
27100        Needed for backwards compatibility with old Java API
27101    
27102        <ul class="tags_entries">
27103          <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
27104          <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
27105          <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
27106          <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
27107          <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
27108          <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
27109          <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
27110          <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
27111          <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
27112          <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
27113          <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
27114          <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
27115          <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
27116          <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
27117          <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
27118          <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
27119          <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
27120          <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
27121          <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
27122          <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
27123          <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
27124          <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
27125          <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
27126          <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
27127          <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
27128          <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
27129          <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
27130          <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
27131          <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
27132          <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
27133          <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
27134          <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
27135          <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
27136          <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
27137          <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
27138          <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
27139          <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
27140          <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
27141          <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
27142          <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
27143          <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
27144          <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
27145          <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
27146          <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
27147          <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
27148          <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
27149          <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
27150          <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
27151          <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
27152          <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
27153          <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
27154          <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
27155          <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
27156          <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
27157          <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
27158          <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
27159          <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
27160          <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
27161          <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
27162          <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
27163          <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
27164          <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
27165          <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
27166          <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
27167          <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
27168          <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
27169          <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
27170        </ul>
27171      </li> <!-- tag_BC -->
27172      <li id="tag_V1">V1 - 
27173        New features for first camera 2 release (API1)
27174    
27175        <ul class="tags_entries">
27176          <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
27177          <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
27178          <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
27179          <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
27180          <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
27181          <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
27182          <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
27183          <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
27184          <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
27185          <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
27186          <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
27187          <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
27188          <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
27189          <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
27190          <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
27191          <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
27192          <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
27193          <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
27194          <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
27195          <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
27196          <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
27197          <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
27198          <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
27199          <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
27200          <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
27201          <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
27202          <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
27203          <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
27204          <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
27205          <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
27206          <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
27207          <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
27208          <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
27209          <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
27210          <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
27211          <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
27212          <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
27213          <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
27214          <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
27215          <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
27216          <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
27217          <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
27218          <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
27219          <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
27220          <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
27221        </ul>
27222      </li> <!-- tag_V1 -->
27223      <li id="tag_RAW">RAW - 
27224        Needed for useful RAW image processing and DNG file support
27225    
27226        <ul class="tags_entries">
27227          <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
27228          <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
27229          <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
27230          <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
27231          <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
27232          <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
27233          <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
27234          <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
27235          <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
27236          <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
27237          <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
27238          <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
27239          <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
27240          <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
27241          <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
27242          <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
27243          <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
27244          <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
27245          <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
27246          <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
27247          <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
27248          <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
27249          <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li>
27250          <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li>
27251          <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
27252          <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
27253          <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
27254          <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
27255          <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
27256        </ul>
27257      </li> <!-- tag_RAW -->
27258      <li id="tag_HAL2">HAL2 - 
27259        Entry is only used by camera device HAL 2.x
27260    
27261        <ul class="tags_entries">
27262          <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
27263          <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
27264          <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
27265          <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
27266          <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
27267        </ul>
27268      </li> <!-- tag_HAL2 -->
27269      <li id="tag_FULL">FULL - 
27270        Entry is required for full hardware level devices, and optional for other hardware levels
27271    
27272        <ul class="tags_entries">
27273          <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
27274        </ul>
27275      </li> <!-- tag_FULL -->
27276      <li id="tag_DEPTH">DEPTH - 
27277        Entry is required for the depth capability.
27278    
27279        <ul class="tags_entries">
27280          <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
27281          <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
27282          <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
27283          <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
27284          <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
27285          <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
27286          <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
27287          <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
27288        </ul>
27289      </li> <!-- tag_DEPTH -->
27290      <li id="tag_REPROC">REPROC - 
27291        Entry is required for the YUV or PRIVATE reprocessing capability.
27292    
27293        <ul class="tags_entries">
27294          <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
27295          <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
27296          <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
27297          <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
27298          <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
27299          <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
27300          <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
27301          <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
27302          <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
27303          <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
27304        </ul>
27305      </li> <!-- tag_REPROC -->
27306      <li id="tag_FUTURE">FUTURE - 
27307        Entry is  under-specified and is not required for now. This is for book-keeping purpose,
27308        do not implement or use it, it may be revised for future.
27309    
27310        <ul class="tags_entries">
27311          <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
27312          <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
27313          <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
27314          <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
27315          <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
27316          <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
27317          <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
27318          <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
27319          <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
27320          <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
27321          <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
27322          <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
27323          <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
27324          <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
27325          <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
27326          <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
27327          <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
27328          <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
27329          <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
27330          <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
27331          <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
27332        </ul>
27333      </li> <!-- tag_FUTURE -->
27334    </ul>
27335  </div>
27336
27337  [ <a href="#">top</a> ]
27338
27339</body>
27340</html>
27341